Во-первых, вы также можете подумать о том, чтобы сделать процесс получения и проверки входных данных функцией; внутри этой функции вы можете просто вернуть значение, если оно правильное, и продолжать вращаться в цикле , тогда как , если нет. По сути, это устраняет проблему, которую вы решили, и обычно может применяться в более общем случае (разрыв нескольких циклов). Если вам абсолютно необходимо сохранить эту структуру в своем коде и действительно не хотите иметь дело с булевыми значениями бухгалтерии ...
Вы также можете использовать goto следующим образом (используя модуль April Fools из здесь ):
#import the stuff
from goto import goto, label
while True:
#snip: print out current state
while True:
ok = get_input("Is this ok? (y/n)")
if ok == "y" or ok == "Y": goto .breakall
if ok == "n" or ok == "N": break
#do more processing with menus and stuff
label .breakall
Я знаю, я знаю, «ты не должен использовать goto» и все такое, но это хорошо работает в странных случаях, подобных этому.