此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时,我希望得到我指定的错误输出,&#34;输入的数字必须介于0.0和1.0之间。#34;。但相反,我得到了&#34; A&#34;
的输出我理解,除了&#39;尝试除了&#39;结构,我可以使用if语句来获取所需的错误消息,但我只想理解为什么try-except代码不能按照我想要的方式工作。
谢谢束:)。
P.S。第一次发帖,如果我搞砸堆栈溢出问题礼仪或者你有什么问题,那么道歉。
答案 0 :(得分:0)
这就是你所期待的......
score = input("Enter Score: ")
try:
sr = float(score)
assert sr <= 1.0 #needs an assert keyword
assert sr >= 0.0 #needs an assert keyword
except:
print("Number entered must be between 0.0 and 1.0")
quit()
如果您没有写sr <= 1.0
断言,它只会尝试计算该值并将其丢弃,因为您没有将其分配给任何东西。
或者你可以使用if语句并在条件不匹配的情况下退出。
score = input("Enter Score: ")
sr = float(score)
if sr > 1.0 or sr < 0.0:
print("Number entered must be between 0.0 and 1.0")
quit()
答案 1 :(得分:0)
行:
sr <= 1.0
sr >= 0.0
计算两个布尔值然后不使用这些值。我认为你想要的是:
try:
sr = float(score)
assert(sr <= 1.0)
assert(sr >= 0.0)
except:
print("Number entered must be between 0.0 and 1.0")
quit()
当参数的值为false时,Assert会引发AssertionError。