2017-07-05 3 views
2

Je ne parviens pas à tout avec le code suivant:Python TypeError doit être str pas int

if verb == "stoke": 

     if items["furnace"] >= 1: 
      print("going to stoke the furnace") 

      if items["coal"] >= 1: 
       print("successful!") 
       temperature += 250 
       print("the furnace is now " + (temperature) + "degrees!") 
          ^this line is where the issue is occuring 
      else: 
       print("you can't") 

     else: 
      print("you have nothing to stoke") 

L'erreur résultant se présente comme suit:

Traceback(most recent call last): 
     File "C:\Users\User\Documents\Python\smelting game 0.3.1 build 
     incomplete.py" 
    , line 227, in <module> 
     print("the furnace is now " + (temperature) + "degrees!") 
    TypeError: must be str, not int 

Je ne suis pas sûr ce que le problème est comme j'ai changé le nom de temp à la température et ajouté les parenthèses autour de la température, mais l'erreur se produit encore.

Répondre

10

print("the furnace is now " + str(temperature) + "degrees!")

jeter aux str

+0

Merci, cela a fonctionné –

+0

s'il vous plaît accepter la réponse :) – PYA

1

vous devez jeter int à str avant concaténer. pour cela utiliser str(temperature). Ou vous pouvez imprimer la même sortie en utilisant , si vous ne voulez pas convertir comme ça.

print("the furnace is now",temperature , "degrees!") 
5

Python est livré avec de nombreuses façons de chaînes de formatage:

Nouveau style (ma préférence) .format(), qui prend en charge un riche mini-langage de mise en forme:

>>> temperature = 10 
>>> print("the furnace is now {} degrees!".format(temperature)) 
the furnace is now 10 degrees! 

Ancien % spécificateur format:

>>> print("the furnace is now %d degrees!" % temperature) 
the furnace is now 10 degrees! 

Dans Py 3.6 en utilisant le nouveau f"" chaînes de format:

>>> print(f"the furnace is now {temperature} degrees!") 
the furnace is now 10 degrees! 

ou à l'aide print() par défaut sep arator:

>>> print("the furnace is now", temperature, "degrees!") 
the furnace is now 10 degrees! 

Et moins efficace, construire une nouvelle chaîne en jetant à un str() et concaténer:

>>> print("the furnace is now " + str(temperature) + " degrees!") 
the furnace is now 10 degrees! 

Ou join() ing:

>>> print(' '.join(["the furnace is now", str(temperature), "degrees!"])) 
the furnace is now 10 degrees!