我是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()
答案 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)