首页 > 解决方案 > Python 根据需要重新启动循环或返回上一个循环

问题描述

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

我正在尝试编写一个简单的程序,允许用户通过输入执行自定义命令,该程序有两部分,第一部分用户输入一个命令,该命令调用要使用的正确函数,第二部分定义值函数中的变量。有问题的代码(为此清理)是下面的代码。

#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,有没有办法返回到前一个时间?我知道这可能是一个愚蠢的问题,因为程序有效,我只是觉得我没有接近最明智的解决方案/算法。

提前致谢

标签: pythonpython-3.xloops

解决方案


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


推荐阅读