我试图在Python中连接字符串和数字.当我尝试这个时它给了我一个错误:
"abc" + 9
Run Code Online (Sandbox Code Playgroud)
错误是:
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
"abc" + 9
TypeError: cannot concatenate 'str' and 'int' objects
Run Code Online (Sandbox Code Playgroud)
为什么我无法做到这一点?
如何可以我将字符串和Python中的号码是多少?
Joc*_*zel 80
Python是强类型的.没有隐式类型转换.
你必须做其中一个:
"asd%d" % 9
"asd" + str(9)
Run Code Online (Sandbox Code Playgroud)
vst*_*ien 28
如果它按照你预期的方式工作(产生"abc9"
),会带来什么"9" + 9
?18
还是"99"
?
要消除这种歧义,在这种情况下,您需要明确要转换的内容:
"abc" + str(9)
Run Code Online (Sandbox Code Playgroud)
Joh*_*web 12
由于Python是一种强类型语言,因此在Perl中连接字符串和整数是没有意义的,因为没有定义的方法来相互"添加"字符串和数字.
显式优于隐式.
...说"Python的禅",所以你必须连接两个字符串对象.您可以使用内置str()
函数从整数创建一个字符串来完成此操作:
>>> "abc" + str(9)
'abc9'
Run Code Online (Sandbox Code Playgroud)
或者使用Python的字符串格式化操作:
>>> 'abc%d' % 9
'abc9'
Run Code Online (Sandbox Code Playgroud)
或许更好,使用str.format()
:
>>> 'abc{0}'.format(9)
'abc9'
Run Code Online (Sandbox Code Playgroud)
禅还说:
应该有一个 - 最好只有一个 - 明显的方法来做到这一点.
这就是为什么我给出了三个选择.它继续说......
虽然这种方式起初可能并不明显,除非你是荷兰人.
这样的事情:
"abc" + str(9)
Run Code Online (Sandbox Code Playgroud)
要么
"abs{0}".format(9)
Run Code Online (Sandbox Code Playgroud)
要么
"abs%d" % (9,)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
126259 次 |
最近记录: |