将范围分数转换为Python

时间:2016-03-27 20:19:45

标签: python python-3.x

我正在尝试编写一个程序,将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

要求:

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

    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()
    

    请指教。 感谢

1 个答案:

答案 0 :(得分:0)

要为你做功课,但是,我会给你一些提示......

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

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

  3. 对于您的第三个要求,我建议您阅读this post

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

  5. <小时/> 修改

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

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

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

    <小时/> 注意

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

    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