Создание строки из строки и целого числа в 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 как строку, независимо от того, знаете ли вы, что это строка или нет.
Береженого Бог бережет.