Правильные циклы проверки с помощью Spyder 4.1.4 и python 3.8

#python #validation

#python #проверка

Вопрос:

итак, мой код таков:

 def main(): 
    print("Press '1' to start a new dice roll calculation") 
    print("or press '0' to end the program") #escape key
    validation = int(input()) #so the user can press enter
    while validation != 1 or validation != 0: #input validation loop with escape key
        print("Press ENTER to start a new dice roll calculation")
        validation = int(input())
    
  

когда я пытаюсь запустить цикл проверки, по какой-то причине он бросает меня в бесконечный цикл, но когда я проверил свой учебник (Tony Gaddis, 2017), он должен быть правильным. Где я ошибаюсь?

Комментарии:

1. Это, если условие должно быть and , нет or . (Если они вводят 1, оно не равно 0, а если они вводят 0, оно не равно 1. Итак, с or условием, да, это бесконечный цикл.)

2. я всегда делаю что-то очень простое. Спасибо

Ответ №1:

Он проверяет, не существует ли 1 или 0. если вы введете 1, 0 не существует и наоборот, поэтому это всегда будет вызывать ошибку. Измените or на and подобное:

 def main(): 
    print("Press '1' to start a new dice roll calculation") 

    print("or press '0' to end the program") #escape key

    validation = int(input()) #so the user can press enter

    #input validation loop with escape key using AND instead of OR
    while validation != 1 and validation != 0: 
        print("Press ENTER to start a new dice roll calculation")
        validation = int(input())