【问题标题】:Creating a continues loop with try | Python3使用 try 创建连续循环 | Python
【发布时间】:2019-11-26 06:03:13
【问题描述】:

我正在尝试接收必须介于 2 和 10 之间的用户输入,然后如果输入实际上介于 2 和 10 之间,则返回一条消息。

我正在努力解决的问题:

如果用户输入的不是数字,我会得到一个 ValueError

我是如何解决的:

我使用 try except finally 方法。

我无法解决的问题:

当用户第一次输入一个字母时,它会弹出 try: 但如果用户第二次输入一个字母,它会再次报错。

如何制作这个循环,以便用户可以根据需要给出尽可能多的错误答案,并在输入 2 到 10 之间的值后将其送到最终目的地?

到目前为止我的代码

try:
    user_input = input("give a number between 2 and 10: ")
    while 10 < int(user_input) or int(user_input) < 2:
        user_input = input("No no, a number between 2 and 10!: ")
except ValueError:
    print(f"That wasn\'t a number! Try again.")
    user_input = input("give a number between 2 and 10: ")
    while 10 < int(user_input) or int(user_input) < 2:
        user_input = input("No no, a number between 2 and 10!: ")
finally:
    print("Good, welcome to the dark side.")

不胜感激!

谢谢。

【问题讨论】:

  • 为什么你只想为此使用try-exception?

标签: python-3.x loops try-catch


【解决方案1】:

此示例有效,同时对您的代码进行了最少的更改:

while True:
    try:
        user_input = input("give a number between 2 and 10: ")
        while 10 < int(user_input) or int(user_input) < 2:
            user_input = input("No no, a number between 2 and 10!: ")
        break

    except ValueError:
        print(f"That wasn\'t a number! Try again.")

print("Good, welcome to the dark side.")

主要区别是从exceptfinally 部分中删除while 循环,并使用while True 循环继续提问,直到满足导致break 的条件(即用户输入一个介于 2 和 10 之间的值(包括 2 到 10)。我对此代码的测试有效。

【讨论】:

  • 谢谢!虽然它进入了一个循环,但我要做的下一件事是在 while 循环之外使用 user_input,所以我需要能够在 while 循环之外访问它,我不能因为它在里面while 循环有什么想法吗?
猜你喜欢
  • 2019-06-19
  • 2016-03-21
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2018-01-16
相关资源
最近更新 更多