在不使用break语句的情况下打破while循环

时间:2016-03-28 20:00:39

标签: python-3.x

问题

如何阻止循环询问"输入字符串"再没有使用休息?感谢。

代码

# Remove Break
def main():
    inp = 0
    while inp <= 0:
        inp = int(input("Enter Number: "))
        if inp > 0:
            string = ""
            while string != "you" or string != "me":
                string = input("Input string: ")
                if string == "you":
                    stringYou(inp)
                    break
                elif string == "me":
                    stringMe(inp)
                    break

def stringYou(inp):
    sentence = "I love You"
    print(sentence * inp)
def stringMe(inp):
    sentence = "You love Me"
    print(sentence * inp)
main()

1 个答案:

答案 0 :(得分:0)

while string != "you" or string != "me":

这里的条件是tautology,这意味着它永远都是真的。

此变量string有三个有趣的案例:

  1. string等于"you"。第一个条件string != "you"显然是错误的。然而,第二个不是:string != "me"string"you",不等于"me"。因此false or true会为您提供true
  2. string等于"me"。使用相同的推理,除了相反的顺序外,我们得到的true or false也是true
  3. string是另一回事。这两个子条件都是正确的,因此true or true给出了true
  4. 因此条件总是正确的,而while条件永远不会自行停止。所以你必须打破才能摆脱它。

    修复方法是简单地修复你的条件,使它们有意义并且循环正确地结束:

    while string != "you" and string != "me":
    

    注意and:现在,仅当string "you""me"时,循环才会继续。这相当于您的中断逻辑,当字符串成为这些字符串中的任何一个时,您停止迭代。

    所以它现在看起来像这样:

    string = ''
    while string != "you" and string != "me":
        string = input("Input string: ")
        if string == "you":
            stringYou(inp)
        elif string == "me":
            stringMe(inp)