在Python中用字符串和整数创建一个字符串

Kud*_*udu 42 python string random integer python-3.x

我尝试取一个整数并在其前面添加"b",将其转换为字符串时出现此错误:

  File "program.py", line 19, in getname
    name = "b" + num
TypeError: Can't convert 'int' object to str implicitly
Run Code Online (Sandbox Code Playgroud)

这与此功能有关:

num = random.randint(1,25)
name = "b" + num
Run Code Online (Sandbox Code Playgroud)

msw*_*msw 44

name = 'b' + str(num)
Run Code Online (Sandbox Code Playgroud)

要么

name = 'b%s' % num
Run Code Online (Sandbox Code Playgroud)

正如S.Lott所说,对于Python 3及更高版本,不推荐使用混合运算符'%'.我偷了INTERCAL的名字"mingle",但这就是我谈论它的方式,并希望至少在此之前看到它 - 就像渡渡鸟 - 它从地球上消失了.

  • @ S.Lott我必须使用python <2.6,即Ubuntu 8.04来处理某些系统.我没有意识到.format不可用,并且在Python 2.6上开发代码之后,不得不将所有.format命令更改为%有点痛苦.所以,实际上,虽然我更喜欢.format,如果你需要与每个版本兼容,%仍然是你最好的选择 - 它存在于Python 3中,而.format不存在于python 2.5及更低版本中. (3认同)
  • Python3中不推荐使用@ S.Lott%.[PEP 3101](https://www.python.org/dev/peps/pep-3101/)清楚地提到*新系统不会与现有字符串格式化技术的任何方法名称冲突,因此两个系统都是如此可以共存,直到废弃旧系统为止.* (3认同)

JAL*_*JAL 8

Python不会像JavaScript或PHP这样的语言自动转换类型.

您必须将其转换为字符串,或使用格式化方法.

name="b"+str(num)
Run Code Online (Sandbox Code Playgroud)

或printf样式格式...

name="b%s" % (num,)
Run Code Online (Sandbox Code Playgroud)

或者新的.format字符串方法

name="b{0}".format(num)
Run Code Online (Sandbox Code Playgroud)

  • 我似乎无法编辑它,所以在这里注意到%已被弃用.另外值得一提的是.format在Python 2.6之前不可用. (2认同)