将范围分数转换为Python中的字母等级

Convert a range score into a letter grade in Python

我正在尝试编写一个程序,将0.0到1.0之间的分数转换为字母等级。 如果分数超出范围,则打印错误消息。 如果分数介于0.0和1.0之间,请使用以下内容打印字母等级:

1
2
3
4
5
6
Score   Grade
>= 0.9  A
>= 0.8  B
>= 0.7  C
>= 0.6  D
<0.6    F

要求:

  • 使用"input"命令接收用户输入以获得分数
  • 检查输入以确保分数在(0.0到1.0)的范围内,如果在愤怒之外 - 应输出"坏分数"
  • 默认情况下,提供的输入的类型为string,因此必须将其转换为float类型
  • 还应捕获非数字输入并打印"错误分数"错误消息。
  • 这是我现在的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import sys
    scores = input ("Enter your score:")

    try:
        floatScores = float(scores)
    except:
        print ("Bad Score")

    if floatScores >= 0.0 and floatScores < 0.4:
        print ("You have a: F")
    elif floatScores >= 0.6 and floatScores < 0.7:
        print ("You have a: D")
    elif floatScores >= 0.7 and floatScores < 0.8:
        print ("You have a: C")
    elif floatScores >= 0.8 and floatScores < 0.9:
        print ("You have a: B")
    elif (floatScores >= 0.9 and floatScores <= 1.0:
        print ("You have an: A")

    else:
         print ("Bad Score")

    sys.exit()

    请指教。
    谢谢


    我不打算为你做功课,不过,我会给你一些提示......

  • 您的第一个要求声明您需要使用input命令获取分数的用户输入。您知道如何将变量设置为输入,因此从此开始。

  • 接下来,您需要检查分数是否在0.0-1.0范围内。您可以使用if语句检查输入是否大于或等于0且小于或等于1。

  • 对于您的第三个要求,我建议您阅读这篇文章。

  • 对于您的第四个要求,我建议您使用Python的try-exceptassert功能。

  • 编辑

    现在您已经发布了一些代码我可以帮助您。

    在你的elif (floatScores >= 0.9 and floatScores <= 1.0:中你不需要(所以摆脱它。

    然后你的代码将正常工作! :)

    注意

    如果您不想要if-elif的长链,这是一种稍微不同的方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def range_score():
        score_range = {'A': 0.9, 'B': 0.8, 'C': 0.7, 'D': 0.6, 'F': 0.0}
        try:
            score = float(input('Score? '))
        except ValueError:
            return 'Bad Score'

        assert 0.0 <= score <= 1.0, 'Bad Score'

        for k, v in score_range.items():
            if score >= v:
                return k