【问题标题】:try & if statement in while loop在 while 循环中尝试 & if 语句
【发布时间】:2020-10-09 07:43:51
【问题描述】:

我想构建一个函数,如果输入的整数在 1 到 10 之间,则返回结果。

这是我的代码:

while True:
    try:
        num = int(input("Enter a number (1-10): "))
    except ValueError:
        print("Wrong input")            
    else:
        if 1 <= num <= 10:
            break
        else:
            print("Wrong input")
            continue

当您输入一个整数时,break 无法正常工作,它似乎进入了一个明确的循环。将if 语句并入else 是不是错了?

【问题讨论】:

  • 我无法重现您描述的问题。当我运行您显示的代码时,它会按我的预期工作。您能否展示一个产生错误结果的示例系列输入?我看到的唯一问题是 10 不被接受。
  • @Blckknght,感谢您的及时回复。这让我感觉轻松了一些。也许这与我在 Jupyter 笔记本上运行它的事实有关。只要输入错误值,它就可以正常工作,但是一旦我输入一个整数,它就会在单元格的左侧显示 In [*] 并停止显示输出。是的,我需要将数字 9 更改为 10,谢谢。

标签: python-3.x if-statement while-loop jupyter-notebook try-catch


【解决方案1】:

打印数字而不是中断。

isBetweenOneAndTen = True

while isBetweenOneAndTen == True:
    try:
        num = int(input("Enter a number (1-10): "))
    except ValueError:
        print("Wrong input")            
    else:
        if 1 <= num <= 9:
            print(num)
            isBetweenOneAndTen = False

        else:
            print("Wrong input")
            continue

【讨论】:

  • 感谢您的回复。我想建议的更改将使它成为一个真正的无限循环,这不是我的初衷。一旦输入整数 1 到 10,我想转义 while 循环。 (抱歉,代码中必须是else: if 1 &lt;= num &lt;= 10。)
  • 好的,对不起。您可以创建一个变量,而不是 while True 您可以在此变量为 True 时编写。当数字在 1 到 10 之间时,只需将变量设置为 False。它对我有用。
  • 再次感谢您提出解决方案。是的,我认为这也应该是另一种选择,尽管它也停止了。但它帮助我得出结论,这不是代码问题,而是我的环境问题。
猜你喜欢
  • 2020-06-22
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2014-01-21
  • 2015-11-08
  • 2016-01-12
相关资源
最近更新 更多