需要帮助查找我的 python 代码中的错误
need help finding error on my python code
我正在编写一个程序来提示输入 0.0 到 1.0 之间的分数。如果分数超出范围打印错误。如果分数在 0.0 和 1.0 之间,则使用以下打印等级 table:Score Grade >= 0.9 A>= 0.8 B>= 0.7 C>= 0.6 D< 0.6 F.
举例说明它最后应该做什么:
输入分数:0.95,A
输入分数:完美,输入无效
输入分数:10.0,输入无效
输入分数:0.75,C
输入分数:0.5,F
这是我现在的代码:
score = input("Enter Score: ")
try:
score= float(score)
if(score >= 0.0 and score <= 1.0):
if (score>= 0.9):
print("A")
elif (score>= 0.8):
print("B")
elif(score>= 0.7):
print("C")
elif (score>= 0.6):
print("D")
elif (score < 0.6):
print("F")
else:
print("Invalid input")
我好像听不懂 运行。任何帮助,将不胜感激。
Green-Avocado 给出了很好的答案。我会添加一个 while 循环来重试,直到输入有效;
# loop until complete
while True:
score = input("Enter Score: ")
# let's try this
try:
score = float(score)
if score >= 0.0 and score <= 1.0:
if score >= 0.9:
print("A")
elif score >= 0.8:
print("B")
elif score >= 0.7:
print("C")
elif score >= 0.6:
print("D")
elif score < 0.6:
print("F")
# exit the loop on completion
break
# else raise an exception
raise
# if problem with float(score) or exception raised
except:
print("Invalid input")
您的 try
块之后需要一个 except
块来处理错误。
而不是在最后 elif
中打印错误,这可以用来处理所有错误。
您可以使用 raise
.
手动引发错误
score = input("Enter Score: ")
try:
score = float(score)
if score >= 0.0 and score <= 1.0:
if score >= 0.9:
print("A")
elif score >= 0.8:
print("B")
elif score >= 0.7:
print("C")
elif score >= 0.6:
print("D")
else:
print("F")
else:
raise
except:
print("Invalid input")
您的 try
语句可能想要做两件事:验证用户输入是否可以转换为 float
,以及生成的浮点数在 0-100 范围内。 try
语句中不应包含任何其他内容。
如果值不是浮点数或超出范围,可以让循环继续获取另一个输入。否则,您可以继续使用单个 if
语句将分数映射到字母等级。
while True:
score = input("Enter score: ")
try:
score = float(score) # Could raise ValueError
if not (0 <= score <= 1.0):
raise ValueError
except ValueError:
print("invalid input")
else:
break
if (score>= 0.9):
print("A")
elif (score>= 0.8):
print("B")
elif(score>= 0.7):
print("C")
elif (score>= 0.6):
print("D")
else: # Only option left for an in-range value.
print("F")
严格来说,范围检查也可以移出 try
语句:
while True:
try:
score = float(score)
except ValueError:
print("invalid input")
continue
if 0 <= score <= 1.0:
break
print("invalid input")
我将失败的范围检查转换为 ValueError
,主要是为了有一个错误消息和一个我们使用 break
的地方,而不是明确的 continue
。有几种构造方法,但共同的特点是你先验证score
有一个适合下面等级图的值。
我正在编写一个程序来提示输入 0.0 到 1.0 之间的分数。如果分数超出范围打印错误。如果分数在 0.0 和 1.0 之间,则使用以下打印等级 table:Score Grade >= 0.9 A>= 0.8 B>= 0.7 C>= 0.6 D< 0.6 F.
举例说明它最后应该做什么:
输入分数:0.95,A 输入分数:完美,输入无效 输入分数:10.0,输入无效 输入分数:0.75,C 输入分数:0.5,F
这是我现在的代码:
score = input("Enter Score: ")
try:
score= float(score)
if(score >= 0.0 and score <= 1.0):
if (score>= 0.9):
print("A")
elif (score>= 0.8):
print("B")
elif(score>= 0.7):
print("C")
elif (score>= 0.6):
print("D")
elif (score < 0.6):
print("F")
else:
print("Invalid input")
我好像听不懂 运行。任何帮助,将不胜感激。
Green-Avocado 给出了很好的答案。我会添加一个 while 循环来重试,直到输入有效;
# loop until complete
while True:
score = input("Enter Score: ")
# let's try this
try:
score = float(score)
if score >= 0.0 and score <= 1.0:
if score >= 0.9:
print("A")
elif score >= 0.8:
print("B")
elif score >= 0.7:
print("C")
elif score >= 0.6:
print("D")
elif score < 0.6:
print("F")
# exit the loop on completion
break
# else raise an exception
raise
# if problem with float(score) or exception raised
except:
print("Invalid input")
您的 try
块之后需要一个 except
块来处理错误。
而不是在最后 elif
中打印错误,这可以用来处理所有错误。
您可以使用 raise
.
score = input("Enter Score: ")
try:
score = float(score)
if score >= 0.0 and score <= 1.0:
if score >= 0.9:
print("A")
elif score >= 0.8:
print("B")
elif score >= 0.7:
print("C")
elif score >= 0.6:
print("D")
else:
print("F")
else:
raise
except:
print("Invalid input")
您的 try
语句可能想要做两件事:验证用户输入是否可以转换为 float
,以及生成的浮点数在 0-100 范围内。 try
语句中不应包含任何其他内容。
如果值不是浮点数或超出范围,可以让循环继续获取另一个输入。否则,您可以继续使用单个 if
语句将分数映射到字母等级。
while True:
score = input("Enter score: ")
try:
score = float(score) # Could raise ValueError
if not (0 <= score <= 1.0):
raise ValueError
except ValueError:
print("invalid input")
else:
break
if (score>= 0.9):
print("A")
elif (score>= 0.8):
print("B")
elif(score>= 0.7):
print("C")
elif (score>= 0.6):
print("D")
else: # Only option left for an in-range value.
print("F")
严格来说,范围检查也可以移出 try
语句:
while True:
try:
score = float(score)
except ValueError:
print("invalid input")
continue
if 0 <= score <= 1.0:
break
print("invalid input")
我将失败的范围检查转换为 ValueError
,主要是为了有一个错误消息和一个我们使用 break
的地方,而不是明确的 continue
。有几种构造方法,但共同的特点是你先验证score
有一个适合下面等级图的值。