Unsupported operand type(s) for +: 'float' et 'str' erreur
Je suis nouveau sur le Python et je suis coincé avec ce qu'il faut faire maintenant parce que je reçois cette erreur. Je suis en train d'ajouter le contenu du fichier de la partition et à obtenir une moyenne, mais je n'arrive pas à le faire fonctionner.
Mon code:
# 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)
Le fichier de la partition est pleine de nombres réels:
90.0 94.0 74.4 63.2 79.4 87.6 67.7 78.1 95.8 82.1
Le message d'erreur
line 12, in <module>
addedScore = addedScore + score[i]
TypeError: unsupported operand type(s) for +: 'float' and 'str'
J'apprécie toute l'aide que je peux obtenir. Merci beaucoup
addedScore = addedScore + float(score[i])
Vous devez vous connecter pour publier un commentaire.
Depuis
score
a été créé par le découpage d'une chaîne, c'est des éléments sont de toutes les chaînes; de là, la plainte au sujet de la tentative d'ajout d'un flotteur pour une chaîne de caractères. Si vous voulez que la valeur de cette chaîne représente, vous devez calculer; quelque chose commefloat(score[i])
.score
est une liste de chaînes de caractères, alors vous avez certainement ne peut pas ajouter une chaîne à un flotteur comme vous le faites ici:addedScore = addedScore + score[i]
. Vous devez convertir cette chaîne en un float:addedScore = addedScore + float(score[i])
Lorsque vous divisez le contenu du fichier, ils sont toujours des chaînes de caractères. Changement
score = score_file.read().split(' ')
àscore = [float(x) for x in score_file.read().split(" ")]
. Vous n'avez probablement pas besoin de faire.split(" ")
, parce questr.split()
, par défaut, à séparer par des espaces. Par conséquent, vous pouvez utiliser.split()
.