繁体   English   中英

在python 3.4中连接字符串和整数

[英]Concatenate string and int in python 3.4

我是 Python 新手,所以我一直在通过自己的一组练习来简单地开始记忆基本的函数和语法。 我正在使用 Pycharm IDE 和 Python 3.4。 在运行一些基本的 str/int 连接练习时,我遇到了一个问题。 下面的每个实例都抛出一个不受支持的操作数类型。 Stackoverflow 上有几个线程清楚地说明了正确的连接语法,但上述错误消息继续困扰着我。

print ("Type string: ") + str(123)
print ("Concatenate strings and ints "), 10

在 Python 3+ 中, print是一个函数,因此必须使用括号内的参数调用它。 所以看看你的例子:

print ("Type string: ") + str(123)

它实际上与以下相同:

var = print("Type string: ")
var + str(123)

由于print返回任何内容(在 Python 中,这意味着None ),这相当于:

None + str(123)

这显然会出错。

话虽如此,关于您尝试做什么,您想要做什么非常简单:将print功能传递给您想要打印的内容,这可以通过多种方式完成:

print ("Type string: " + str(123))

# Using format method to generate a string with the desired contents
print ("Type string: {}".format(123)) 

# Using Python3's implicit concatenation of its arguments, does not work the same in Python2:
print ("Type string:", str(123)) # Notice this will insert a space between the parameters

请记住(或者,如果您还不知道,请阅读该主题) print是 Python 3 中的一个函数 在 Python 2 中,您的第一行将连接“Type string:”和“123”,然后打印它们。 在 Python 3 中,您使用一个参数调用print函数,该参数返回None然后向其添加“123” 那没有任何意义。

第二行不会在 Python 2 或 3 中产生错误(我已经用 2.7.7 和 3.2.3 对其进行了测试)。 在 Python 2 中,你得到

连接字符串和整数 10

而在 Python 3 中,你的脚本应该只打印

连接字符串和整数

这是因为再次打印是一个函数,因此您使用参数“连接字符串和整数”来调用它。 , 10使您的行成为print返回值的元组,即None10 由于您不将该元组用于任何事情,因此没有明显的效果。

尝试format()

print("Type string: {}".format(123))
print("Concatenate strings and ints {}".format(10))

这有什么问题?

print ("Type string: ") + str(123)

print只是一个像其他任何东西一样的函数。 并且您使用一个参数"Type string: "调用该函数,然后尝试将结果(将为None )添加到字符串'123' 那是行不通的。 如果你想把这两个字符串加在一起,你必须把它们放在同一个表达式中,在括号内:

print("Type string: " + str(123))

相似地:

print ("Concatenate strings and ints "), 10

这会用一个参数调用print ,然后创建一个由print返回的None和数字 10 的元组。如果你想将10传递给print调用,它必须进入括号内:

print("Concatenate strings and ints ", 10)

正如 rednaw 的回答所指出的那样,使用str.format更加灵活,并且避免了出现此类问题的可能性。 它还为您提供了在 Python 2.6-2.7 和 Python 3.x 中工作方式完全相同的代码,即使您不尝试编写双平台/单代码库代码,这也非常好,因为它将即使是只知道其中之一的人也能理解。

我认为这是在 python 中连接 string 和 int 的非常酷的方法

print (f"Type string: {123}")
print (f"Concatenate strings and ints {10}")

你可以这样做:

c = 'Emerson'
d = 32
print("My name is %s and I am %d years old." %(c,d))

结果:

我叫爱默生,今年 32 岁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM