#python #python-3.x #list #input
#python #python-3.x #Список #ввод
Вопрос:
Почему elif b!= 0 and b!= 1: print (b)
не работает? пользователь должен ввести 1 или 0, чтобы определить b . Если пользователь не пишет 1 или 0, я хочу, чтобы программа снова спросила его: «Игрок — это компьютер (0) или человек (1)?» без добавления list_2 начального неправильного числа.
list_2 = []
players = int(input("number of players: "))
for i in range (players):
a = input("name of player: ")
b = int(input ("is player a Computer (0) or a human (1)?"))
if b == 0:
list_2.append([a] [True])
elif b == 1:
list_2.append([a] [False])
elif b!= 0 and b!= 1:
print (b)
print (list_2)
Комментарии:
1. допустим, b = 0, тогда ваше условие принимает значение false, потому что b не равно 1. Если b = 1, то условное значение принимает значение false, поскольку b не равно 0. Я думаю, что ваше условие должно быть
elif b!= 0 or b!= 1
.
Ответ №1:
Оберните этот раздел ввода в while True
цикл. прервите цикл, когда ввод правильный, в противном случае продолжайте цикл для получения дополнительных входных данных.
while True:
b = int(input ("is player a Computer (0) or a human (1)?"))
if b == 0:
# player is a computer ...
# do computer stuff
break
elif b == 1:
# player is a human ...
# do human stuff
break
else:
print("That was not 1 or 0. Please try again")
Ответ №2:
Поскольку elif не является циклом, компилятор просто проверяет условие, а затем переходит к выполнению инструкции.
Вы можете решить эту проблему, просто добавив *** цикл while *** перед первым условием if, подобным этому :
для i в диапазоне (игроки): a = input(«имя игрока: «) b = int(ввод («игрок — компьютер (0) или человек (1)?»))
while (b!=0 and b!=1): # Checking if b is not equal to both '0' and '1'
b = int(input ("is player a Computer (0) or a human (1)?"))
if b == 0:
list_2.append([a] [True])
elif b == 1:
list_2.append([a] [False])
elif b!= 0 and b!= 1:
print (b)
Ответ №3:
Вы также можете попробовать разделить свой код и создать новую checkInput
функцию, как реализовано ниже.
list_2 = []
players = int(input("number of players: "))
def checkInput(value):
if value == 0:
list_2.append([a] [True])
return True
elif value == 1:
list_2.append([a] [False])
return True
else:
return False
for i in range (players):
check = False;
a = input("name of player: ")
while check == False:
b = int(input ("is player a Computer (0) or a human (1)?"))
check = checkInput(b)
print('Please enter correct input')
print (list_2)