Python Восстановление цикла или возврат к предыдущему циклу по требованию - PullRequest
0 голосов
/ 07 января 2019

Я новичок в кодировании, поэтому, пожалуйста, потерпите меня

Я пытаюсь написать простую программу, которая позволяет пользователю выполнять пользовательские команды с помощью ввода, эта программа состоит из 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 голосов
/ 07 января 2019

Простое решение состоит в том, чтобы поместить оба цикла в другой цикл, чтобы по окончании последнего цикла он снова перешел в первый цикл из-за внешнего цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...