Python重新启动循环或根据需要返回到上一个循环

时间:2019-01-07 05:34:31

标签: python python-3.x loops

我是编码的初学者,所以请多包涵

我正在尝试编写一个简单的程序,该程序允许用户通过输入执行自定义命令,该程序有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,是否有办法返回上一个? 我知道这可能是一个愚蠢的问题,因为该程序可以正常工作,我只是觉得我没有采用最明智的解决方案/算法。

预先感谢

1 个答案:

答案 0 :(得分:0)

简单的解决方案是将两个循环都放入另一个循环中,这样当最后一个循环结束时,由于外部循环,它将再次进入第一个循环。