【问题标题】:How do I use a Try and Exception to raise an error with a print message in Python?如何使用 Try 和 Exception 在 Python 中通过打印消息引发错误?
【发布时间】:2020-05-12 10:30:24
【问题描述】:

我正在尝试在 Python 中运行 collat​​z,但在考虑不是整数的输入时遇到了麻烦。我希望在考虑用户非整数输入的代码中使用 Try and except 来工作。请在下面查看我的代码。

number = int(input("Please enter a number: "))

def collatz(number):
    if number % 2 == 0:
        print(number // 2)
        return number // 2
    elif number % 2 == 1:
        print(number * 3 + 1)
        return number * 3 + 1

while number != 1:
    try:
        number = collatz(int(number))
    except ValueError:
        print("Something went wrong, please try again...")

【问题讨论】:

  • 我相信collatz()中的elif可以换成简单的else
  • @AMC。谢谢你的建议。由于某种原因它不喜欢它。它只需要'elif'。
  • 你说的不喜欢是什么意思?
  • @AMC elif 允许我有另一个条件,这是我需要我的代码做的事情。 else 不允许其他条件。
  • 我的意思是,在您上面分享的代码中,应该可以用 else 替换 elif。如果number % 2不为0,那一定是1,不用第二次检查吧?

标签: python exception input error-handling try-catch


【解决方案1】:

除了在输入上调用 int 时,您没有使用 try,这就是它仍然出错的原因。您应该像这样使用 2 个 while 循环:

number = input("Please enter a number: ")
while not number.isdigit():
    number = input("Please enter a number again: ")
number = int(number)

def collatz(number):
    if number % 2 == 0:
        print(number // 2)
        return number // 2
    elif number % 2 == 1:
        print(number * 3 + 1)
        return number * 3 + 1

使用 try-except (在这种情况下,不要在其他解决方案中包含初始内容):

while True:
    try:
        number = int(input("Please enter a number: "))
        break
    except:
        pass

【讨论】:

  • 感谢@whackamadoodle3000。这似乎有效,同时还处理了任何整数
猜你喜欢
  • 1970-01-01
  • 2019-09-10
  • 2018-09-11
  • 2018-04-17
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多