#python #loops #for-loop #input #while-loop
#python #циклы #цикл for #ввод #цикл while
Вопрос:
Я пишу игру на Python, и у нее есть следующие функции, которые можно запросить у пользователя.
- это может быть до 4 игроков (минимум 1 игрок, максимум 4 игрока)
- Он запросит имя игрока. Если имя уже существует, программа предложит «имя уже в списке» и попросит ввести имя снова
- если игрок вводит пустую строку при вводе имени игрока, он завершает работу.
- он спросит, сколько n случайных цифр игрок хочет воспроизвести (используется randint (start, stop)). допускается только до 3 цифр
Я знаю, что мне нужно, чтобы пользовательский while
цикл на неопределенный срок запрашивал пользовательский ввод, пока условие не будет выполнено. Я также должен использовать for
цикл, чтобы запрашивать у пользователей имя на основе ввода в точке 1.
Ниже приведена моя попытка, в которой есть ошибки. Следовательно, нужна ваша помощь в обзоре —
def attempt1():
playerList = []
numPlayers = input("How Many Players? ")
if int(numPlayers) < 5 and int(numPlayers) > 0:
while True:
if numPlayers != "":
for i in range(int(numPlayers)):
playerName = input("Player name or <Enter> to end ")
if playerName != "":
if playerName not in playerList:
playerList.append(playerName)
break
else:
print("Player Name Cannot be empty")
# numPlayers = input("How Many Players? ")
else:
print("There must be at least one player")
numPlayers = input("How Many Players? ")
else:
print("Invalid number of players. Please enter 1 - 4")
print(playerList)
def attempt2(numPlayers):
playerList = list()
# numPlayers = 1
i = 0
while i < 4:
for x in range(0,numPlayers):
playerName = input("Name ")
if playerName not in playerList:
playerList.append(playerName)
i = 1
else:
print("Name is already in the list")
print(playerList)
return playerList
Комментарии:
1. какие ошибки вы получаете, можете ли вы опубликовать ошибку
2. лучше напишите функцию, которая запрашивает имя только одного игрока, а затем используйте ее в цикле, который запускает ее для 4 игроков.
3. вы могли бы сделать
numPlayers = int(numPlayers)
при запуске, и тогда вам не нужно повторятьint(numPlayers)
так много раз. Код будет более читаемым.4. @furas Итак, я пишу функцию для запроса имени пользователя 1 раз и использую ее внутри цикла while и цикла for? подойдет ли это для моей точки номер 2?
5. @deadshot для attempt2 моя программа будет запрашивать пользовательский ввод 4 раза, если numPlayers = 4 и если я ввожу неповторяющиеся имена. Но он будет запрашивать более 4 раз, если я введу дублирующее имя. таким образом, мой список воспроизведения (playlist) становится 8, который должен быть минимальным 1 или максимальным 4
Ответ №1:
Это решает мою проблему. Пожалуйста, любезно предложите, есть ли у вас лучшие решения. Я уверен, что мой код здесь неаккуратен, но пока он работает.
def askPlayerName(numPlayers):
playerList = []
x = numPlayers
while True:
if x > 0:
for i in range(x):
print(x)
playerName = input("Enter name: ")
if playerName not in playerList:
x -= 1
playerList.append(playerName)
break
else:
print("ELSE")
x = numPlayers - len(playerList)
print(x)
print("name aldy in the list")
else:
return playerList
return playerList