Как мне заставить цикл while true продолжать работать,когда вводится что-либо,кроме (P,p, d, d). Текущий он просто повторяется, если (P,p,d,d)

#python

#питон

Вопрос:

Как мне заставить цикл while true продолжать работать,когда вводится что-либо,кроме (P,p, d, d). Текущий он повторяется только в том случае,если введено (P,p,d, d). Если я введу в противном случае, он выведет «Недопустимо» и перейдет к следующему циклу.

 while True:  print("How did you acquire the flat ")  source = input("(Purchased (P) || Produced (D) ) : ")  if ((source != 'P') and (source != 'p') and (source != 'd') and (source != 'D')):  print("n Invalid Coden")  break;     while True:  print("nPlease Select the type of egg ")  type = input("n (W)et n (B)ig n (F)ree n (O)ld : ")  if (type != 'W' and type != 'B' and type != 'F' and type != 'O' and type != 'w' and type != 'b' and type != 'f' and type != 'o'):  print("n Invalid Coden")  break;    

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

1. Вы выходите из цикла , когда вход не является одним из ['P', 'p', 'D', 'd'] , когда вместо этого вы должны продолжать цикл в этом случае и выходить только в том случае, если вход является одним из ['P', 'p', 'D', 'd'] .

Ответ №1:

Цикл while должен прерываться только в том случае, если ввод является допустимым кодом, и продолжаться (после печати сообщения об ошибке) в противном случае. Вы также можете упростить свой журнал условий оператора if.

 while True:  print("How did you acquire the flat ")  source = input("(Purchased (P) || Produced (D) ) : ")  if source.lower() in ['p', 'd']:  break   print("n Invalid Coden")    while True:  print("nPlease Select the type of egg ")  type = input("n (W)et n (B)ig n (F)ree n (O)ld : ")  if type.lower() in ['w', 'b', 'f', 'o']:  break   print("n Invalid Coden")  

Наконец, вам следует избегать использования имен из встроенного пространства имен в качестве имен переменных ( type это встроенная функция).