2013-05-08 1 views
0

Je continue à obtenir cette erreurJe suis confus au sujet de cette erreur

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

Dans mon code ci-dessous:

done = False 
while not done: 
    if You.Hit_points > 0 and Opponent.Hit_points > 0: 
     move = raw_input("Would you like to make a move? (y/n) ") 
     if move == "y": 
      print "",You.name,"hit ",Opponent.name," by",You.Hit_points," hit points!" 
      Opponent.Health = You.Hit_points + You.Skill_points + Opponent.Health 

Merci!

+11

Lire à nouveau l'erreur. Vraiment lent. –

+0

vous ajouter un nombre à une chaîne, pas autorisé. Faites tous les nombres ou toutes les chaînes. –

Répondre

1

Hit_points est probablement un int. Convertir à une chaîne:

str(You.Hit_points) 

Edit:

Attendez, non. Mal interprété, la redevance Nolen est correcte. Cela suffirait probablement:

Opponent.Health=int(You.Hit_points)+int(You.Skill_points)+int(Opponent.Health) 

Mais je suivrais les recommandations de Nolen.

+0

Il essaie de calculer la santé de l'adversaire. C'est vraisemblablement un entier lui-même, et non une caténation de trois chaînes. – Cairnarvon

+0

Oui, j'ai mal lu. Édité. –

4

Au moins l'un de Opponent.Health, You.Hit_points et You.Skill_points est une chaîne, et au moins d'entre eux est un nombre (un entier). Vous essayez d'ajouter des chaînes et des nombres ensemble. Si vous avez l'intention que toutes ces valeurs soient des nombres, vous devez déterminer lequel ne l'est pas et changer cela. Vous pouvez convertir toutes les valeurs en int mais c'est une solution à court terme, c'est un problème qui continuera de se poser si vous ne le réparez pas.

Toutes les informations dont vous avez besoin est dans l'erreur: unsupported operand type(s) for +: 'int' and 'str'

Questions connexes