#python #python-3.x
#python #python-3.x
Вопрос:
У меня есть этот код, который работает нормально, и вывод правильный.
game_type = input("ongoing competition or single play? ")
if game_type == 'single play':
users = (input("how many players? "))
while not users.isdigit():
users = (input("how many players? "))
users = int(users)
players = {}
for person in range(users):
name = input("player's name? ")
players[name] = []
----output----
ongoing competition or single play? single play
how many players? 2
player's name? bob
player's name? red
Но когда я пытаюсь поместить код в функции, он дважды спрашивает меня «сколько игроков» на выходе. Я не уверен, почему он это делает.
def people():
users = (input("how many players? "))
while not users.isdigit():
users = (input("how many players? "))
return int(users)
users = people()
players = {}
def player_name():
for person in range(users):
name = input("player's name? ")
players[name] = []
---------------------------------------------------------
game_type = input("ongoing competition or single play? ")
from func import *
if game_type == 'single play':
people()
player_name()
----output----
ongoing competition or single play? single play
how many players? 2
how many players? 2
player's name? red
player's name? bob
Комментарии:
1. Вам нужно удалить
users = people()
, потому что вы дважды вызываете people(), поэтому он запрашивает вас дважды. Вы вызываете его выше, а затем снова, спрашивая, является ли это однопользовательской игрой.2. @FivePlyPaper я удалил
users = people()
, и теперь я получаю сообщение об ошибке, в котором говорится, что «пользователи» не определены
Ответ №1:
Вы вызываете people() дважды. Вы присваиваете возвращаемое значение в глобальной области переменной «users», а затем вызываете его в операторе if. Если вам нужны одни и те же переменные в разных областях, вы можете создать класс и выполнить некоторую настройку в своем конструкторе.
Комментарии:
1. значит, если функция присваивается переменной, то это будет исполняемый код, а не статический? Как бы я переписал это так, чтобы
player_name()
оно принимало число изpeople()
2. @belmer01 Я отредактировал свой ответ, чтобы уточнить. Но чтобы ответить на ваш вопрос, если у вас есть функция с именем foo, вы можете сказать bar = foo, а затем вызвать bar() . Но все же проблема заключается в том, что ваша функция выполняется дважды.