Python 尝试使用简单的数值条件除外

Python Try Except with Simple Numerical Conditions

此 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 时,我希望得到我指定的错误输出,"Number entered must be between 0.0 and 1.0"。但是我得到了 "A".

的输出

我知道我可以使用 if 语句来获取所需的错误消息,而不是使用 'try except' 结构,但我只是想了解为什么 try-except 代码无法按我的方式工作想要它。

谢谢大家 :).

P.S。第一次发帖,如果我搞砸了关于堆栈溢出问题的礼仪或你有什么,我深表歉意。

这就是您所期待的...

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()

如果您不写 assert the 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()

行:

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。