代码之家  ›  专栏  ›  技术社区  ›  shantanuo

使用not in操作符[复制]打破python循环

  •  -1
  • shantanuo  · 技术社区  · 3 年前

    给定以下代码(不起作用):

    while True:
        # Snip: print out current state
        while True:
            ok = get_input("Is this ok? (y/n)")
            if ok.lower() == "y": break 2 # This doesn't work :(
            if ok.lower() == "n": break
    
        # Do more processing with menus and stuff
    

    有办法让这个工作吗?或者,如果用户满意,我必须先做一个检查来打破输入循环,然后再做一个更有限的检查来打破外部循环吗?

    0 回复  |  直到 2 年前
        1
  •  0
  •   Charlie Clark    2 年前

    我最近遇到了这个问题,为了避免重复的return语句,这可能会掩盖逻辑错误,我研究了@yak的想法。这在嵌套的for循环中效果很好,但不是很优雅。另一种方法是在下一个循环之前检查条件:

    b = None
    for a in range(10):
        if something(a, b): # should never = True if b is None
            break
        for b in range(20):
            pass
    

    这可能不适用于所有地方,但具有适应性,如果需要,其优点是允许复制条件,而不是潜在的结果。