почему я получаю список ошибок, строки которого не определены, когда он определен и взят в качестве параметра?

#python-3.x #list #random #sample

#python-3.x #Список #Случайный #образец

Вопрос:

для python 3: Я пытаюсь закодировать игру в бинго, в которой у каждого игрока есть карта из 25 строк (в шаблоне 5×5), которые выбираются случайным образом из списка. в списке есть 53 различных элемента на выбор. я работаю над добавлением игроков, и когда каждый игрок будет добавлен, я хочу создать их карту. когда я пытаюсь player1card = random.sample(список(listOfStrings), 25), это просто говорит о том, что мой список не определен, хотя я думал, что это так. может кто-нибудь объяснить мне, почему? Заранее спасибо

 import urllib.request import random   def createList():  listOfStrings = []  try:  with urllib.request.urlopen('https://www.cs.queensu.ca/home/cords2/bingo.txt') as f:  d = f.read().decode('utf-8')  split= d.split("n")  listOfStrings = split  except urllib.error.URLError as e:  print(e.reason)   def players(listOfStrings):  noPlayers = input("How many players would like to play Bingo? Choose 1-3: ")  if noPlayers == "1":  name = input("What is the name of player 1? ")  player1card = random.sample(list(listOfStrings), 25)    createList() players(listOfStrings) print(player1card)  

возвращает ошибку имени: имя ‘listOfStrings’ не определено

Комментарии:

1. Строки списка являются локальными в каждой функции, «createList» не инициализирует строки списка в глобальной области. Вам нужно добавить «глобальный» к списку строк в createList.

Ответ №1:

listOfStrings не является глобальной переменной, поэтому к ней нельзя получить доступ вне createList функции

решение

 listOfStrings = []  def createList(): ...  

просто поставьте его вне createList() функции.