web-dev-qa-db-fra.com

TypeError: impossible de convertir implicitement l'objet 'int' en str

J'essaie d'écrire un jeu de texte et j'ai rencontré une erreur dans la fonction que je suis en train de définir qui vous permet de dépenser vos points de compétence après avoir créé votre personnage. Au début, l'erreur indiquait que j'essayais de soustraire une chaîne d'un entier dans cette partie du code: balance - strength. Évidemment, c’était faux, j’ai donc corrigé le problème avec strength = int(strength)... mais maintenant j’obtiens cette erreur que je n’ai jamais vue auparavant (nouveau programmeur) et je suis perplexe sur ce qu’elle essaie de me dire exactement et comment. répare le.

Voici mon code pour la partie de la fonction qui ne fonctionne pas:

def attributeSelection():
    balance = 25
    print("Your SP balance is currently 25.")
    strength = input("How much SP do you want to put into strength?")
    strength = int(strength)
    balanceAfterStrength = balance - strength
    if balanceAfterStrength == 0:
        print("Your SP balance is now 0.")
        attributeConfirmation()
    Elif strength < 0:
        print("That is an invalid input. Restarting attribute selection. Keep an eye on your balance this time!")
        attributeSelection()
    Elif strength > balance:
        print("That is an invalid input. Restarting attribute selection. Keep an eye on your balance this time!")
        attributeSelection()
    Elif balanceAfterStrength > 0 and balanceAfterStrength < 26:
        print("Ok. You're balance is now at " + balanceAfterStrength + " skill points.")
    else:
        print("That is an invalid input. Restarting attribute selection.")
        attributeSelection()

Et voici l'erreur que je reçois quand j'arrive à cette partie du code dans le shell:

    Your SP balance is currently 25.
How much SP do you want to put into strength?5
Traceback (most recent call last):
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 205, in <module>
    gender()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 22, in gender
    customizationMan()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 54, in customizationMan
    characterConfirmation()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 93, in characterConfirmation
    characterConfirmation()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 85, in characterConfirmation
    attributeSelection()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 143, in attributeSelection
    print("Ok. You're balance is now at " + balanceAfterStrength + " skill points.")
TypeError: Can't convert 'int' object to str implicitly

Quelqu'un sait-il comment résoudre ceci? Merci d'avance.

62
anon

Vous ne pouvez pas concaténer un string avec un int. Vous devez convertir votre int en string à l'aide de la fonction str ou utiliser formatting pour formater votre sortie.

Changement: -

print("Ok. Your balance is now at " + balanceAfterStrength + " skill points.")

à: -

print("Ok. Your balance is now at {} skill points.".format(balanceAfterStrength))

ou: -

print("Ok. Your balance is now at " + str(balanceAfterStrength) + " skill points.")

ou selon le commentaire, utilisez , pour passer différentes chaînes à votre fonction print, plutôt que de la concaténer à l'aide de +: -

print("Ok. Your balance is now at ", balanceAfterStrength, " skill points.")
111
Rohit Jain