【发布时间】:2018-02-26 06:04:25
【问题描述】:
此 Python 代码允许用户输入给出字母输出的数字等级,但它也尝试考虑字符串用户输入或超出 0.0 到 1.0 范围的数字用户输入,通过提供错误消息作为输出。
score = input("Enter Score: ")
try:
sr = float(score)
sr <= 1.0
sr >= 0.0
except:
print("Number entered must be between 0.0 and 1.0")
quit()
if sr >=0.9:
print ("A")
elif sr >=0.8:
print ("B")
elif sr >=0.7:
print ("C")
elif sr >=0.6:
print ("D")
else:
print ("F")
我遇到的问题是,当用户输入为 1.2 时,我希望得到我指定的错误输出,“输入的数字必须介于 0.0 和 1.0 之间”。但相反,我得到了“A”的输出。
我知道我可以使用 if 语句来获取所需的错误消息,而不是使用“try except”结构,但我只是想了解为什么 try-except 代码不能按我想要的方式工作.
谢谢大家:)。
附:第一次发帖,如果我在堆栈溢出问题礼仪或你有什么方面搞砸了,请道歉。
【问题讨论】:
-
try/except 语句用于捕获异常。您应该使用
if和else来检查一个数字是否在一定范围内。 -
sr <= 1.0返回一个布尔值,它不会引发异常。但是,您可以使用此当前结构做的是使用assert sr <= 1.0,这将在返回非真实值时引发 AssertionError — 这可以被您的except子句捕获。
标签: python numeric try-except