如何在Python中使用Try和Exception来引发打印消息错误?

如何在Python中使用Try和Exception来引发打印消息错误?,python,exception,input,error-handling,try-catch,Python,Exception,Input,Error Handling,Try Catch,我试图在Python中运行collatz,但在考虑非整数的输入时遇到了问题。我想尝试一下在考虑用户非整数输入的代码中工作。请看下面我的代码 number = int(input("Please enter a number: ")) def collatz(number): if number % 2 == 0: print(number // 2) return number // 2 elif number % 2 == 1:

我试图在Python中运行collatz,但在考虑非整数的输入时遇到了问题。我想尝试一下在考虑用户非整数输入的代码中工作。请看下面我的代码

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...")

您没有使用try,除非在输入上调用int,这就是它仍然出错的原因。您应该使用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(在这种情况下,不要在其他解决方案中包含初始内容):


我相信
collatz()
中的
elif
可以被一个简单的
else
@AMC替换。谢谢你的建议。出于某种原因,它不喜欢它。它只需要'elif'。你说不喜欢它是什么意思?@AMC
elif
允许我有另一个条件,这就是我需要代码来做的。
else
不允许其他条件。我的观点是,在您上面共享的代码中,应该可以用else替换elif。如果编号%2不是0,那么它必须是1,无需再次检查,否?谢谢@whackamadoodle3000。这似乎在处理任何整数的用户输入时也起作用
while True:
    try:
        number = int(input("Please enter a number: "))
        break
    except:
        pass