如何在Python中使用Try和Exception来引发打印消息错误?
我试图在Python中运行collatz,但在考虑非整数的输入时遇到了问题。我想尝试一下在考虑用户非整数输入的代码中工作。请看下面我的代码如何在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:
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'。你说不喜欢它是什么意思?@AMCelif
允许我有另一个条件,这就是我需要代码来做的。else
不允许其他条件。我的观点是,在您上面共享的代码中,应该可以用else替换elif。如果编号%2不是0,那么它必须是1,无需再次检查,否?谢谢@whackamadoodle3000。这似乎在处理任何整数的用户输入时也起作用
while True:
try:
number = int(input("Please enter a number: "))
break
except:
pass