Python尝试除了简单的数值条件

时间:2018-02-26 06:04:26

标签: python numeric try-except

此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。第一次发帖,如果我搞砸堆栈溢出问题礼仪或者你有什么问题,那么道歉。

2 个答案:

答案 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。