#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()
функции.