Python 3 - «Пока l oop», чтобы подтвердить, что пользовательский ввод находится между 2 числами - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь создать игру в кости, первое, что я хочу сделать, - это указать пользователю, сколько сторон у кости. Затем я хочу проверить, что он составляет от 2 до 20 включительно, и если он недействителен, отобразить сообщение об ошибке и снова запросить ввод, пока он не будет действительным.

Кажется, что он всегда не принимает первый вход независимо от того, действителен ли он / недействителен, а затем принимает 2-й вход, даже если он не действителен

Выход ниже

face = int( input( "how many sides does your dice have? enter number between 2-20 inclusive: "))
validNumber = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

while face != validNumber:
   # print error message
   print("Im Sorry, Please enter a valid positive integer and try again")
   # ask for input again
   number_of_faces = int(input("How many sides do your dice have? Must be between 2 and 20 inclusive: "))
   break

print("Continuing with rest of program") 

Вывод:

сколько сторон у вашей кости? введите число от 2 до 20 включительно: 2 Im Извините, пожалуйста, введите действительное положительное целое число и повторите попытку. Сколько сторон у вашей кости? Должно быть от 2 до 20 включительно: 3 Продолжая с остальной частью программы

test2 сколько сторон у вашей кости? введите число от 2 до 20 включительно: 21 Im Извините, пожалуйста, введите действительное положительное целое число и повторите попытку. Сколько сторон у вашей кости? Должно быть от 2 до 20 включительно: 22 Продолжая с остальной частью программы

test3

сколько сторон у вашей кости? введите число от 2 до 20 включительно: 5 Im Извините, пожалуйста, введите действительное положительное целое число и повторите попытку. Сколько сторон у вашей кости? Должно быть от 2 до 20 включительно: 6 Продолжение с остальной частью программы

1 Ответ

0 голосов
/ 15 апреля 2020

Вход никогда не будет равен списку. Вы должны проверить, находится ли вход в списке. Попробуйте:

face = int( input( "how many sides does your dice have? enter number between 2-20 inclusive: "))
validNumber = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

while face not in validNumber:
   # print error message
   print("Im Sorry, Please enter a valid positive integer and try again")
   # ask for input again
   face = int(input("How many sides do your dice have? Must be between 2 and 20 inclusive: "))

print("Continuing with rest of program")
...