#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
это встроенная функция).