2017-10-04 4 views
1
print("\n\nThis is a basic program to find the letter grade for a student.") 
student = input("What is the students name? : ") 
test1 = input("What is the first test grade " + student.capitalize() + " recieved? : ") 
test2 = input("What is the second test grade " + student.capitalize() + " recieved? : ") 
test3 = input("What is the third test grade " + student.capitalize() + " recieved? : ") 
averageTest = (int(test1) + int(test2) + int(test3)) 
print(student.capitalize() + " recieved an average test grade of " + ((averageTest)/3)) 

J'écris un programme de calcul de qualité de base et ne peut pas résoudre ce problèmeTypeError: ne peut pas concaténer « str » et des objets « float » en ligne 10

TypeError: cannot concatenate 'str' and 'float' objects

J'ai tellement plus à écrire et im coincé sur cette ligne print(student.capitalize() + " recieved an average test grade of " + ((averageTest)/3))

+2

envisager la recherche dans [ 'str.format()'] (https://docs.python.org/2 /library/string.html#format-examples) – rob

Répondre

3

Vous ne pouvez pas ajouter une chaîne et un nombre (flottant). Au lieu de cela, convertissez votre float en une chaîne avant de l'ajouter avec une autre chaîne. Vous pouvez le faire avec

str(x) 

Dans votre cas, ce serait:

# converting the float to a string 
print(student.capitalize() + " recieved an average test grade of " + str((averageTest)/3)) 

# or, to avoid using addition or conversion at all in a console print 
print student.capitalise(), "recieved an average test grade of", averageTest/3 

# or even using string formatting (example is py2.7) 
print '%s recieved an average test grade of %s' % (student.capitalise(), averageTest/3) 
+0

Merci! Y at-il autre chose que je devrais faire? C'est un projet dans lequel l'enseignant choisit le poids de chaque document de recherche/participation à la classe/examen final. Il doit être convivial ... Des suggestions? Merci –

+0

En dehors de je recommanderais de créer des fonctions pour des choses comme le «test moyen» qui renvoie la moyenne au lieu d'avoir à le diviser plus tard. Cela vous donnerait plus de flexibilité quand il s'agit d'ajouter des paramètres supplémentaires tels que la pondération pour chaque test et vous permet de coder d'une manière un peu plus organisée car il encourage à penser en «blocs» basés sur les choses que vous voulez faire. Par exemple - définir les tests et la pondération, demander des intrants (nom et résultats des tests), établir des résultats pondérés, calculer la note à partir des résultats pondérés. – MattWBP

+0

Merci! J'apprécie vraiment, il a parcouru un long chemin depuis hier ... –