2015-03-25 2 views
1

Im un problème avec mon code et il ditTypeError: type d'opérande non pris en charge (s) pour +: 'int' et 'str' erreur

TypeError: unsupported operand type(s) for +: 'int' and 'str'

et je ne sais pas pourquoi. la zone de mon code qui provoque ceci est montrée ci-dessous, toute l'aide serait appréciée: D! * Modifier l'erreur semble se produire en raison des options d'entrée, si cela aide de quelque façon.

Score1 = str(input("what did the first person get in their test the first  time?")) 
Score2 = str(input("what did the first person get in their test the second time?")) 
Score3 = str(input("what did the first person get in their test the third time?")) 

Score4 = str(input("what did the second person get in their test the first time?")) 
Score5 = str(input("what did the second person get in their test the second time?")) 
Score6 = str(input("what did the second person get in their test the third time?")) 


Score7 = str(input("what did the third person get in their test the first time?")) 
Score8 = str(input("what did the third person get in their test the second time?")) 
Score9 = str(input("what did the third person get in their test the third time?")) 


P1S = [Score1, Score2, Score3] 
P2S = [Score4, Score5, Score6] 
P3S = [Score7, Score8, Score9] 



print ("here are the scores of",Name1,",well done") # defines scores 
print(P1S) 
print ("here is the average score of",Name1,",Well Done") # makes average of scores 
print(sum(P1S)/float(len(P1S))) 

print ("here are the scores of",Name2,",well done") # defines scores 
print(P2S) 
print ("here is the average score of",Name2,",Well Done") # makes average of scores 
print(sum(P2S)/float(len(P2S))) 

print ("here are the scores of",Name3,",well done") # defines scores 
print(P3S) 
print ("here is the average score of",Name3,",Well Done") # makes average of scores 
print(sum(P3S)/float(len(P3S))) 
+0

Je pense que vous devez convertir les entrées 'Score' en int, elles sont interprétées comme des chaînes au début – EdChum

+0

Pouvez-vous expliquer ce que vous voulez faire? aussi, pourriez-vous réduire votre code à être minimal pour montrer l'eror? –

+0

Je le veux donc je peux utiliser mes entrées comme des nombres pour travailler dans une somme –

Répondre

1

Vous explicitement prendre soin que les choses les entrées utilisateur sont des chaînes:

Score1 = str(input("what did the first person get in their test the first  time?")) 

si vous remplacez str() par int() ou float() (selon ce que vous attendez que l'entrée soit), votre le problème devrait disparaître, car vous obtiendriez un type numérique plutôt qu'un str ing.

+0

J'ai maintenant ce problème Traceback (appel le plus récent dernier): Fichier "\\ CUR-FSM \ 10brierleye $ \ Computing CA 2 \ tâche 3 moyenne .py ", ligne 57, en Stu3AVG = (somme (Score3)/float (len (Score3))) #définit la moyenne TypeError: l'objet 'int' n'est pas itérable –

+0

cette ligne ne se trouve pas dans le code vous avez posté. Vraiment, vous pourriez soit a) ouvrir une nouvelle question ou b) essayer de ** comprendre ** ce que fait l'erreur. La programmation consiste à comprendre les problèmes, et ce que vous faites actuellement ne fait que courir constamment vers StackOverflow pour signaler les erreurs. Je recommande vraiment de lire l'erreur. Cela dit vraiment ce qui ne va pas. –

+0

Je vais essayer de vous montrer tout mon code, mais il est trop long pour la réponse, je saisis un nom et quelques valeurs pour créer une moyenne des scores entrés, trier le nom par ordre alphabétique et trier les moyennes dans l'ordre numérique du plus haut au plus bas, mais il dit que l'entier entré n'est pas itérable et je ne sais pas pourquoi: L –

0

Cast la chaîne par l'entrée par défaut à un nombre entier afin que vous puissiez calculer les scores moyens:

Score1 = int(input("what did the first person get in their test the first time?")) 
+0

Je continue à recevoir le message: l'objet 'int' n'est pas itérable –

+0

Est-ce que vous lancez le score? Publiez votre code mis à jour pour le débogage. –

+0

Êtes-vous en Python 2 ou 3? –

0

Vous pouvez également utiliser la carte en calculant votre score.

print ("here are the scores of",Name1,",well done") # defines scores 
print(P1S) 
print ("here is the average score of",Name1,",Well Done") # makes average of scores 
print(sum(map(int,P1S))/float(len(P1S))) 

print ("here are the scores of",Name2,",well done") # defines scores 
print(P2S) 
print ("here is the average score of",Name2,",Well Done") # makes average of scores 
print(sum(map(int,P2S))/float(len(P2S))) 

print ("here are the scores of",Name3,",well done") # defines scores 
print(P3S) 
print ("here is the average score of",Name3,",Well Done") # makes average of scores 
print(sum(map(int,P3S))/float(len(P3S))) 

En outre, pouvez-vous s'il vous plaît dire comment fournissez-vous les entrées.

+0

Je fournis les entrées via l'entrée manuelle, je reçois toujours le problème Int n'est pas itérable, même si je définis l'entrée comme un entier (comme je dois l'utiliser dans une équation plus tard dans le code) –

+0

Pouvez-vous indiquer la ligne non avec l'erreur .. –

+0

le numéro de ligne est 56 et l'erreur est que INT n'est pas itérable, je ne sais pas pourquoi parce que cela a fonctionné quand j'avais défini des valeurs, mais maintenant que j'ai ajouté d'une manière d'entrer des valeurs, il a brisé –