首页 > 解决方案 > 需要帮助在我的 python 代码上查找错误

问题描述

我正在编写一个程序来提示分数在 0.0 和 1.0 之间。如果分数超出范围,则打印错误。如果分数介于 0.0 和 1.0 之间,请使用下表打印等级: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")

我似乎无法启动并运行它。任何帮助,将不胜感激。

标签: pythonpython-3.7

解决方案


您的try语句可能想要做两件事:验证用户输入是否可以转换为 a 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具有适合以下等级图的值。


推荐阅读