我在尝试取一个整数并在其前面添加“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
答案 0 :(得分:44)
name = 'b' + str(num)
或
name = 'b%s' % num
正如S.Lott所说,对于Python 3及更高版本,不推荐使用混合运算符'%'。我偷了INTERCAL这个名字“mingle”,但这就是我谈论它的方式,并且希望以前至少看过一次 - 比如渡渡鸟 - 它从地球上消失了。
答案 1 :(得分:8)
Python不会像JavaScript或PHP这样的语言自动转换类型。
您必须将其转换为字符串,或使用格式化方法。
name="b"+str(num)
或printf样式格式化......
name="b%s" % (num,)
或新的.format字符串方法
name="b{0}".format(num)
答案 2 :(得分:3)
是的,python没有隐式int到字符串转换。
尝试str(num)
而不是
答案 3 :(得分:2)
Python 3.6有f-strings,您可以直接放置变量名称,而无需使用format
:
>>> num=12
>>> f"b{num}"
'b12'
答案 4 :(得分:1)
name = "b{0:d}".format( num )
答案 5 :(得分:1)
已经给出了正确的答案但是我想要插入并说每次打算将var用作字符串时总是使用str(var),无论你是否知道它是不是字符串。
比抱歉更安全。