Почему код не работает для настройки цикла while - PullRequest
0 голосов
/ 29 мая 2020

Почему мой код не работает

«игра», в которой посредством ввода введите количество игроков, которые будут играть в игру, как сделать так, чтобы отображалось так много вводов (для ников игроков), сколько игроки играют? а как что то сделать, чтобы потом все ники в массив добавляли? Например: ведущий представил, во что играют 5 человек, как вывести 5 входов и затем добавить все ники в массив?

print("Add players!")
plam = int(input("How many players will be? \n"))

playersNames = []
i = len(playersNames)
while i < plam:
    writePlayerName = input("Write player's nickname:   " + Fore.GREEN)
    print(Fore.WHITE)
    playersNames.append(writePlayerName)
    print(playersNames)
    break;

Постановка задачи

имена игроков можно вводить бесконечно, но я здесь ограничил, что будет 5 игроков

Ответы [ 4 ]

0 голосов
/ 29 мая 2020
  • Попробуйте это
print("Add players!")
plam = int(input("How many players will be? \n"))

playersNames = []
i = len(playersNames)
for i in range(plam):
    writePlayerName = input("Write player's nickname:   " + Fore.GREEN)
    print(Fore.WHITE)
    playersNames.append(writePlayerName)
    print(playersNames)

  • вывод
Add players!
How many players will be? 
3   
Write player's nickname:   jhon
['jhon']
Write player's nickname:   smith
['jhon', 'smith']
Write player's nickname:   roky
['jhon', 'smith', 'roky']
0 голосов
/ 29 мая 2020

Ваш оператор break; завершает while l oop. Вы можете удалить while l oop, и он должен работать так, как вы хотели.

0 голосов
/ 29 мая 2020

Ваш код работает, но он не выполняет то, что вы хотите, потому что вы пропустили некоторые логические шаги:

  1. Вы обновляете i только один раз за пределами l oop.
    len функция не заставит i волшебным образом отслеживать длину playerNames, она только поместит текущую длину при вызове в i, который равен 0, потому что вы вызываете len, когда playerNames пусто.

  2. Вы вызываете break в l oop без условий, поэтому ваш l oop всегда будет выходить после первого раза.

Хотя есть несколько способов написать этот код, и Андреа Поллини привела хороший чистый пример, вот минимальное исправление для вашего кода, чтобы делать то, что вы хотите:

print("Add players!")
plam = int(input("How many players will be? \n"))

playersNames = []

while i < plam:
    writePlayerName = input("Write player's nickname:   " + Fore.GREEN)
    print(Fore.WHITE)
    playersNames.append(writePlayerName)
    print(playersNames)
    i = len(playersNames)

Примечание. все, что я сделал, это переместил вызов len на l oop, туда, где раньше был break.

0 голосов
/ 29 мая 2020

Вы можете использовать a для l oop:

for i in range(plam):
    writePlayerName = input("Write player's nickname:   " + Fore.GREEN)
    print(Fore.WHITE)
    playersNames.append(writePlayerName)
print(playersNames)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...