web-dev-qa-db-fra.com

Python TypeError doit être str non int

J'ai des problèmes avec le code suivant:

    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ésultante 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 sais pas quel est le problème car j'ai changé le nom de temp en température et ajouté les crochets autour de la température, mais l'erreur persiste.

10
Eps12 Gaming

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

jette-le à str

38
PYA

Python propose de nombreuses manières de formater des chaînes:

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

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

Ancien style % Spécificateur de format:

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

Dans Py 3.6, en utilisant les nouvelles chaînes de format f"":

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

Ou en utilisant print() par défaut separator:

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

Et le moins efficacement, construisez une nouvelle chaîne en la convertissant en str() et en concaténant:

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

Ou join() le:

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

vous devez convertir int en str avant de concaténer. pour cela, utilisez str(temperature). Ou vous pouvez imprimer le même résultat avec , _ si vous ne voulez pas convertir comme ça.

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