Создание строки из строки и целого числа в Python

Я получаю эту ошибку при попытке взять целое число и добавить к нему "b", преобразовав его в строку:

  File "program.py", line 19, in getname
    name = "b" + num
TypeError: Can't convert 'int' object to str implicitly

Это связано с этой функцией:

num = random.randint(1,25)
name = "b" + num

6 ответов

Решение
name = 'b' + str(num)

или же

name = 'b%s' % num

как отмечает С.Лотт, смешанный оператор "%" устарел для Python 3 и выше. И я украл название "смешаться" с INTERCAL, но именно так я об этом говорил и хотел хотя бы раз увидеть его в печати - как додо - оно исчезает с лица земли.

Python не будет автоматически конвертировать типы так, как это делают языки, такие как JavaScript или PHP.

Вы должны преобразовать его в строку или использовать метод форматирования.

name="b"+str(num)

или форматирование в стиле printf...

name="b%s" % (num,)

или новый метод строки.format

name="b{0}".format(num)

В Python 3.6 есть f-строки, в которые можно напрямую помещать имена переменных без необходимости использовать format:

>>> num=12
>>> f"b{num}"
'b12'

Да, у python нет неявного преобразования строк в int.

пытаться str(num) вместо

Правильные ответы уже даны, но я хочу присоединиться и сказать, что вы всегда должны использовать str(var) каждый раз, когда вы намереваетесь использовать var как строку, независимо от того, знаете ли вы, что это строка или нет.

Береженого Бог бережет.

name = "b{0:d}".format( num )
Другие вопросы по тегам