评分程序遇到while循环问题并使用不同的数据类型

时间:2016-10-05 04:03:54

标签: python

我正在制作一个程序,我需要让用户输入一系列作业成绩(范围从0到10),直到他们输入“完成”,在这种情况下我必须计算得分的平均值并提供相应的字母等级。我的麻烦是,我不知道如何计算平均值,因为我没有确切数量的家庭作业来划分所有作业的总和,因为它不是在有限的循环上。而且,当我运行我的程序时,我不断收到一条错误消息,指出TypeError:unorderable types:str()< INT()

到目前为止,这是我的代码:

    print("Enter your homework scores one at a time, must be an integer ranging from 0 to 10. When finished, type done.")
number=input("Enter your homework grade: ")

while number != 'done':
    number=input("Enter your homework grade: ")
    percentage= number*10 #I need to divide by number of homeworks there are, but I'm not sure how to get the variable I need to divide by.

    if number < 0 or number > 10:
        print("Score must be between 0 and 10")
    elif percentage >= 92 and number < 100:
        letter = 'A'
    elif percentage >= 87 and number < 92:
        letter = 'B+'
    elif percentage >= 80 and number < 87:
        letter = 'B'
    elif percentage >=77 and number < 80:
        letter = 'C+'
    elif percentage >=70 and number < 77:
        letter = 'C'
    elif percentage >= 67 and number < 70:
        letter = 'D+'
    elif percentage >= 60 and number < 67:
        letter = 'D'
    elif percentage < 60 and number >= 0:
        letter= 'F'
    elif number == 'done':
        print(percentage,"%, you got an ", letter)
    else:
        print("Error: please enter an integer ranging from 0 and 10.")

3 个答案:

答案 0 :(得分:0)

输入是字符串类型,因此您必须使用&#34; number = int(number)&#34;。

等显式将其转换为整数。

您可以创建一个单独的计数变量,每次循环都会递增,然后在完成后使用该最终值进行除法。

答案 1 :(得分:0)

while循环之外,您可以保留到目前为止已经看过的一系列成绩。它将从空开始。

arr = []

每次看到新成绩时,都可以将其附加到数组中。

newGrade = input("Enter your homework grade")
arr.append(float(newGrade)*10)

用户输入完成后,您可以使用sumlen函数计算平均值,它们分别为您提供数组中元素的总和和数组中元素的数量。

average = sum(arr)/len(arr)

答案 2 :(得分:0)

Kevin告诉你做一个整数,比如count = 0,并且每次你要求成绩时都加一个整数。

最后,你拿总和/数。

这是一个稍微改进的方法: 从count = 0开始

 Do:
    Ask for grade
    AVG = (AVG*count + new grade)/(count+1)
    count++

AVG *计数为您提供前一笔金额。