我是编码的初学者,所以请多包涵
我正在尝试编写一个简单的程序,该程序允许用户通过输入执行自定义命令,该程序有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,是否有办法返回上一个? 我知道这可能是一个愚蠢的问题,因为该程序可以正常工作,我只是觉得我没有采用最明智的解决方案/算法。
预先感谢
答案 0 :(得分:0)
简单的解决方案是将两个循环都放入另一个循环中,这样当最后一个循环结束时,由于外部循环,它将再次进入第一个循环。