web-dev-qa-db-fra.com

Faire une chaîne à partir d'une chaîne et d'un entier dans Python

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
42
Kudu
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.

44
msw

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)
8
JAL

Oui, python n'a pas de conversion implicite int en chaîne.

essayez plutôt str(num)

3
Alan

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'
3
name = "b{0:d}".format( num )
1
S.Lott

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.

1
whaley