【发布时间】:2022-01-02 09:19:42
【问题描述】:
我刚刚开始学习 Python,并且正在尝试处理用户可能输入的错误。程序所做的只是使用数学模块,向用户询问一个整数并返回该数字的阶乘。
我正在尝试捕获负数、浮点数和文本的错误。
如果我输入一个整数,代码会正常运行。
当我输入错误的值(如 -9 或 apple)时,try/except 似乎无法捕捉到错误并且我得到了回溯信息。用户不应该看到这个。
有什么建议或指点吗?
import math
from datetime import datetime
import time
num = 0
start = 0
end = 0
# max value is 2147483647
#if __name__ == '__main__':
try:
num = input("Enter a number: ")
except OverflowError:
print("Input cannot exceed 2147483647")
except ValueError:
print("Please enter a non-negative whole number")
except NameError:
print("Must be an integer")
else:
start = datetime.now()
print("The factorial of ", num, " is : ")
print(math.factorial(int(num)))
end = datetime.now()
print(f"Time taken in (hh:mm:ss.ms) is {end - start}")
如果这很重要,我在 Windows 10 Pro(64 位)PC 上使用 Python 3.10。
诺曼
【问题讨论】:
-
为什么你认为
input()会自动引发这些异常?看起来您可能已经从 Python 2.x 中获得了一些信息,它会自动评估对input()的响应。在 Python 3 中,它只是将其作为字符串返回。 -
您需要将
try放在实际发生错误的代码行周围。现在,您仅在input函数不起作用时检查错误
标签: python python-3.x error-handling