+的'不支持的操作数类型:'float'和'str'错误

时间:2016-02-14 15:11:28

标签: python

我是Python的新手,我现在仍然坚持做什么,因为我一直收到这个错误。我试图将得分文件的内容添加到一起并获得平均值,但我似乎无法让它工作。

我的代码:

# open and read file student / score
student_file = open("Student.txt", "r")
score_file = open("Score.txt", "r")
student = student_file.read().split(' ')
score = score_file.read().split(' ')
addedScore = 0.0
average = 0.0

for i in range(0,len(student)):

    print("Student: "+student[i]+" Final: "+score[i])          
    addedScore = addedScore + score[i]

average = addedScore / 2
print("The class average is:", average)

得分文件中包含浮点数:

90.0 94.0 74.4 63.2 79.4 87.6 67.7 78.1 95.8 82.1

错误消息

line 12, in <module>
addedScore = addedScore + score[i]
TypeError: unsupported operand type(s) for +: 'float' and 'str'

我感谢所有能得到的帮助。非常感谢

3 个答案:

答案 0 :(得分:6)

由于score是通过拆分字符串创建的,因此它的所有元素都是字符串;因此,有关尝试向字符串添加浮点数的投诉。如果你想要那个字符串代表的值,你需要计算它;类似于float(score[i])

答案 1 :(得分:1)

score是一个字符串列表,因此您无法像在此处一样向浮点数添加字符串:addedScore = addedScore + score[i]。您必须将此字符串转换为浮点数:addedScore = addedScore + float(score[i])

答案 2 :(得分:1)

分割文件内容时,它们仍然是字符串。将score = score_file.read().split(' ')更改为score = [float(x) for x in score_file.read().split(" ")]。您可能不需要执行.split(" "),因为str.split()默认情况下会按空格分割。因此,您可以使用.split()