我正在制作一个程序,我需要让用户输入一系列作业成绩(范围从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.")
答案 0 :(得分:0)
输入是字符串类型,因此您必须使用&#34; number = int(number)&#34;。
等显式将其转换为整数。您可以创建一个单独的计数变量,每次循环都会递增,然后在完成后使用该最终值进行除法。
答案 1 :(得分:0)
在while
循环之外,您可以保留到目前为止已经看过的一系列成绩。它将从空开始。
arr = []
每次看到新成绩时,都可以将其附加到数组中。
newGrade = input("Enter your homework grade")
arr.append(float(newGrade)*10)
用户输入完成后,您可以使用sum
和len
函数计算平均值,它们分别为您提供数组中元素的总和和数组中元素的数量。
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 *计数为您提供前一笔金额。