如何返回While循环内的一行

时间:2014-07-12 14:50:16

标签: python python-2.7 while-loop escaping

这只是部分代码:

def . . .:
    while True:
        raw_input_1
        if :
            break
        elif 'n':
            raw_input_2 ()
                if :
                    some condition
                    print
                elif some condition:
                    function                    
                else:
                    print "Invalid command."  

问题:当代码命中"无效命令时。"它返回到True。我想要它做的是返回raw_input_2。有什么建议? 我实际上最终通过插入第二个True语句和一些中断来解决这个问题,如下所示,但我怀疑这是浪费的编码,我正在寻找更直接的东西&优雅。

def . . .:
    while True:
        raw_input_1
        if :
            break
        elif 'n':
            while True:
                raw_input2 ()
                if :
                    some condition
                    break
                    print
                elif some condition:
                    function
                    break
                else:
                    print "Invalid command."  

2 个答案:

答案 0 :(得分:0)

def . . .:
while True:
    raw_input_1
    if :
        break
    elif 'n':
        while True:
            raw_input_2 ()
                if :
                    some condition
                    print
                elif some condition:
                    function                    
                else:
                    print "Invalid command."

另外一行“while”将会执行,而不会重构您的代码。但是,关于你想要的逻辑,不建议在你的代码中使用无中断循环的无限循环

答案 1 :(得分:0)

您需要添加额外的while循环

def . . .:
    while True:
        raw_input_1
        if :
            break
        elif 'n':
            condition_ok = False
            while not condition_ok:
                raw_input_2 ()
                if :
                    some condition
                    print
                    condition_ok = True
                elif some condition:
                    function                    
                    condition_ok = True
                else:
                    print "Invalid command." 

然后,如果命令正常,您可以设置condition_ok以打破while循环。当然这种方法有太多的嵌套要考虑" pythonic",所以我建议你进一步将其分解为函数。