试图获得4个测试分数的功能,并确定学生平均分为320分

时间:2014-02-25 00:43:25

标签: python

def getExamPoints(examPoints):
    for examPoints in range(1, 5):
        examPoints = input("Please enter students exam scores: ")
    totalPoints = input("Please enter total possible points: ")
    print("The total exam points are: " + sum(int(examPoints)))
    avg = float(int(str(examPoints))/int(totalPoints))
    print("the average is: ", avg)
第5行

我收到错误'int object is not iterable' 而且我不知道为什么。

我正在尝试编写一个带有函数的程序,这部分函数假设从八十分中取出四个作业分数并计算得分的平均值然后取平均值并乘以作业的百分比这个课程值得上课,但我似乎无法得到这个课程的大部分来获得平均的作业成绩。我对python不是很好,如果格式不正确我也提前道歉,但任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:2)

examPoints不是原始代码中的输入列表,而只是一个用户输入循环的每次迭代都会被覆盖的变量:

for examPoints in range(1, 5):
    examPoints = input("Please enter students exam scores: ")

相反,您希望单独保留每个输入。 例如将其附加到列表中:

examPoints = []
for _ in range(1,5):
    # add input to list after converting it to an integer
    examPoints.append(int(input("Please enter students exam scores: ")))
...

输入文本到整数的转换可以在您附加时(在输入时无法转换时立即将错误返回给用户),或者当您执行总和时,使用列表理解或地图功能:

# sum version
sum([int(v) for v in examPoints])
# map version
sum(map(int, examPoints))

答案 1 :(得分:0)

抱歉,但(我认为)你的代码有点乱。相反,尝试:

def getExamPoints(examPoints):
    points = []
    for examPoints in range(1, 5):
        points = points + [int(input("Please enter students exam scores: "))]
    totalPoints = input("Please enter total possible points: ")
    print("The total exam points are: " + sum(examPoints))
    avg = float(int(str(examPoints))/int(totalPoints))
    print("the average is: ", avg)

sum()查找的是一个可迭代对象,如列表,并将其中的所有内容添加到一起。由于examPoints被定义为整数,因此它不可迭代。而是创建一个单独的列表,并将输入放在那里。