try / except子句和数值范围条件

时间:2018-08-24 09:23:11

标签: python python-3.x

我是python的新手,正在做Coursera专长“适合所有人的Python”。

其中一项任务是提示用户输入0.0到1.0之间的分数,以将其转换为成绩。如果输入的内容不是数字或在范围内,则应显示错误消息。

我使用try,except子句,但是我似乎无法弄清楚如何使数字条件在try块中起作用。

我假设此行将在try块“ S <= 1.0或S> = 0.0”中起作用,但事实并非如此。例如,当我输入1.2时,它将被忽略,而我得到的是A级而不是错误消息。

我可以通过将范围条件作为“ if”放置在try,except子句之外来完成此操作,但这似乎是不必要的代码行。

我该怎么做?总体而言,如何使整个代码更好?

下面的工作代码:

Score = input("Enter Score from 0.0 to 1.0:")
try:
    S = float(Score)
except:
    print("Error, please enter numeric input from 0.0 to 1.0")
    quit()
if S>1.0 or S<0.0:
    print("Error, please enter numeric input from 0.0 to 1.0")
    quit()
elif S>=0.9:
    print("A")
elif S>=0.8:
    print("B")
elif S>=0.7:
    print("C")
elif S>=0.6:
    print("D")
elif S>=0.0:
    print("F")
quit()

1 个答案:

答案 0 :(得分:0)

在没有显式异常类型的情况下,请勿使用except。如果要将范围检查包括在try块中,则必须引发它自身的异常:

score = input("Enter Score from 0.0 to 1.0:")
try:
    score = float(score)
    if not 0.0 <= score <= 1.0:
        raise ValueError()
except ValueError:
    print("Error, please enter numeric input from 0.0 to 1.0")
else:
    for boundary, grade in [(0.9, 'A'), (0.8, 'B'), (0.7, 'C'), (0.6, 'D')]:
        if score >= boundary:
            break
    else:
        grade = 'F'
    print(grade)