【问题标题】:Breaking out of infinite loop跳出无限循环
【发布时间】:2014-04-17 14:37:38
【问题描述】:

我的代码不允许我跳出无限循环,因此退出程序。这是我的代码:

while True:
        print("\n1. Surname\n2. D.O.B\n3. Quit")
        try:
            select = int(input("Please select an option: "))
            if select == 1:
                surnameSearch()
            elif select == 2:
                DOB_search(BkRdr)
            elif search == 3:
                break
        except:
            print("That was an incorrect option, please try again:")

输入/输出如下所示:

1. Surname
2. D.O.B
3. Quit
Please select an option: 3
That was an incorrect option, please try agan:

1. Surname
2. D.O.B
3. Quit
Please select an option: 

【问题讨论】:

  • 您正在执行 try...except... 操作,而没有选择要捕获的异常。这也将阻止您手动退出程序(使用键盘中断)。你应该永远不要有一个通用的except子句。
  • search 更改为select。投票结束是错字。
  • 注意:我已经更新了我的答案。请看建议

标签: python loops python-3.x infinite-loop break


【解决方案1】:

应该是select 而不是search

while True:
    print("\n1. Surname\n2. D.O.B\n3. Quit")
    try:
        select = int(input("Please select an option: "))
        if select == 1:
            surnameSearch()
        elif select == 2:
            DOB_search(BkRdr)
        elif select == 3:
            break
    except:
        print("That was an incorrect option, please try again:")

另外,我建议您使用else 语句而不是通用的except 子句,如下所示:

while True:
    print("\n1. Surname\n2. D.O.B\n3. Quit")
    try:
        select = int(input("Please select an option: "))
    except ValueError:
        print("Not a valid input")
    else:
        if select == 1:
            surnameSearch()
        elif select == 2:
            DOB_search(BkRdr)
        elif select == 3:
            break
        else:
            print("That was an incorrect option, please try again:")

【讨论】:

  • 仍然值得用try 覆盖input,以防他们输入的内容无法设为int - 我建议将其余部分放在else try 的块。
  • @jonrsharpe,我不确定您所说的 else 块是什么意思。你能解释一下吗?如果您愿意并且愿意,请继续并附加到我的答案中。谢谢。
  • @jonrsharpe,啊,我明白了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2022-01-10
  • 2020-01-03
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 2020-04-17
  • 2021-08-29
相关资源
最近更新 更多