J'obtiens cette erreur lorsque j'essaie de prendre un entier et d'y ajouter "b", en le convertissant en chaîne:
File "program.py", line 19, in getname
name = "b" + num
TypeError: Can't convert 'int' object to str implicitly
C'est lié à cette fonction:
num = random.randint(1,25)
name = "b" + num
name = 'b' + str(num)
ou
name = 'b%s' % num
comme le note S.Lott, l'opérateur de mixage '%' est déconseillé pour Python 3 et plus. Et j'ai volé le nom "mingle" de INTERCAL mais c'est comme ça que j'en parle et je voulais le voir imprimé au moins une fois avant - comme le dodo - il disparaît de la surface de la terre.
Python ne convertira pas automatiquement les types de la même manière que les langages tels que JavaScript ou PHP do.
Vous devez le convertir en chaîne ou utiliser une méthode de formatage.
name="b"+str(num)
ou formatage de style printf ...
name="b%s" % (num,)
ou la nouvelle méthode de chaîne .format
name="b{0}".format(num)
Oui, python n'a pas de conversion implicite int en chaîne.
essayez plutôt str(num)
Python 3.6 a f-strings où vous pouvez directement mettre les noms de variables sans avoir besoin d'utiliser format
:
>>> num=12
>>> f"b{num}"
'b12'
name = "b{0:d}".format( num )
Des réponses correctes ont déjà été données, mais je veux intervenir et dire que vous devez toujours utiliser str (var) chaque fois que vous avez l'intention d'utiliser var comme chaîne, que vous sachiez que c'est une chaîne ou pas.
Mieux vaut prévenir que guérir.