Я новичок в кодировании, поэтому, пожалуйста, потерпите меня
Я пытаюсь написать простую программу, которая позволяет пользователю выполнять пользовательские команды с помощью ввода, эта программа состоит из 2 частей: первая пользователь вводит команду, которая вызывает правильную функцию, которая будет использоваться, а вторая часть определяет значения для переменных в функции.
рассматриваемый код (очищенный для этого) приведен ниже.
#irrelevant function1 imp():
#irrelevant function2 con():
#irrelevant function3 dis():
def prg():
vv = ["v","verdadeiro","true","t","1"]
vf = ["f","falso","false","0"]
npta=""
nptb=""
op = 0
v = 0
b = 0
op = 0
#irrelevant code here
while True:
while op == 0:
a = input("insert" ).casefold()
if a == "imp":
op=1
elif a == "dis":
op=2
elif a == "con":
op=3
elif a == "exit":
return
else:
print("\n wrong input")
while True:
npta=str(input("insert" )).casefold()
if npta == "abort":
op = 0
b = 1
break
elif npta == "exit":
return
elif npta in vv or npta in vf:
b = 0
break
else:
print("\n wrong input")
while b != 1:
nptb=str(input("insert" )).casefold()
if nptb == "abort":
op = 0
break
elif nptb == "exit":
return
elif nptb in vv or nptb in vf:
break
else:
print("\n wrong input")
if op !=0:
v = imp(vv, npta, nptb) if op == 1 else con(vv, npta, nptb) if op == 2 else dis(vv, npta, nptb)
op=0
prg()
Я чувствую, что то, что я делаю, очень грязно, хотя и работает, есть ли какой-нибудь более простой способ перезапустить цикл или сделать какой-то вызов для программы, чтобы перейти к предыдущему циклу? Допустим, я нахожусь на второй части моей программы, ниже
while True:
npta=str(input("insert" )).casefold()
if npta == "abort":
op = 0
b = 1
break
elif npta == "exit":
return
elif npta in vv or npta in vf:
b = 0
break
else:
print("\n wrong inpuy")
while b != 1:
nptb=str(input("inser" )).casefold()
if nptb == "abort":
op = 0
break
elif nptb == "exit":
return
elif nptb in vv or nptb in vf:
break
else:
print("\n wrong inpuy")
if op !=0:
v = imp(vv, npta, nptb) if op == 1 else con(vv, npta, nptb) if op == 2 else dis(vv, npta, nptb)
op=0
Есть ли способ вернуться к предыдущему, если я наберу abort?
Я знаю, что это может быть глупый вопрос, так как программа работает, я просто чувствую, что не подхожу к самому мудрому решению / алгоритму.
Заранее спасибо