2017-10-18 19 views
0

je dois avoir le signe de pourcentage après le calcul, comment puis-je modifier ce code afin de l'erreur:chaîne Ajouter à integer

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

ne s'affiche pas. Pour enlever le point décimal, le calcul est 'int'.

global score 
score = 2 

def test(score): 
    percentage = int(((score)/5)*100) + ("%") 
    print (percentage) 

test(score) 
+1

Cast your numéro à une chaîne. –

+0

vous devez * encore * convertir le numéro * retour * en str. – Mangohero1

Répondre

5

Utiliser la chaîne de mise en forme:

print('{:.0%}'.format(score/5)) 
0

Comme l'erreur dit, vous ne pouvez pas appliquer l'opérateur + entre un int et une chaîne. Vous pouvez cependant convertir l'int en une chaîne vous:

percentage = str(int(((score)/5)*100)) + ("%") 
# Here ------^ 
0

Utilisez cette

global score 
score = 2 

def test(score): 
    percentage = str(int(((score)/5)*100)) + "%" 
    print (percentage) 

test(score) 
1

en python (et beaucoup d'autres langues), l'opérateur + un double objectif. Il peut être utilisé pour obtenir la somme de deux nombres (nombre + nombre), ou concaténer des chaînes (chaîne + chaîne). Dans ce cas, python ne peut pas décider ce que le + devrait faire, car l'un de vos opérandes est un nombre, et l'autre est une chaîne.

Pour résoudre ce problème, vous devez modifier un opérande pour qu'il corresponde au type de l'autre. Dans ce cas, votre seule option est de faire le numéro dans une chaîne (facile à faire en utilisant la fonction str() intégrée:

str(int(((score)/5)*100)) + "%" 

Ou, vous pouvez fossé entièrement + et aller avec la syntaxe de format

. syntaxe ancienne:

"%d%%" % int(((score)/5)*100) 

Nouvelle syntaxe:

'{}%'.format(int(((score)/5)*100)) 
0

Pour Python> = 3.6:

percentage = f"{(score/5) * 100}%" 
print(percentage)