在Python 3.4中连接字符串和int

时间:2014-09-28 22:14:40

标签: python string

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

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

6 个答案:

答案 0 :(得分:8)

在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

答案 1 :(得分:5)

请记住(或者如果您还不知道,请阅读此主题)print is a function in Python 3。在Python 2中,你的第一行将连接"输入字符串:"和" 123"然后打印它们。在Python 3中,您使用一个参数调用print函数,该函数返回None,然后添加" 123"对它。这没有任何意义。

第二行在Python 2或3中没有产生错误(我用2.7.7和3.2.3测试过它)。在Python 2中,你得到了

  

连接字符串和整数10

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

  

连接字符串和整数

这是因为print是一个函数,因此你用参数"连接字符串和整数"来调用它。 , 10使您的行成为print的返回值的元组,即None10。由于你没有使用那个元组,所以没有明显的效果。

答案 2 :(得分:2)

尝试format()

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

答案 3 :(得分:2)

这有什么问题?

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

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

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

类似地:

print ("Concatenate strings and ints "), 10

这会使用一个参数调用print,然后生成由None返回的print和数字10的元组。如果要将10传递给print打电话,它必须进入parens:

print("Concatenate strings and ints ", 10)

正如rednaw的回答所指出的,使用str.format更灵活,并避免出现类似问题的可能性。它还为您提供了在Python 2.6-2.7和Python 3.x中完全相同的代码,即使您没有尝试编写双平台/单代码库代码也非常好,因为它&# 39;即使对那些只知道其中一个的人也是可以理解的。

答案 4 :(得分:0)

你可以这样做:

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

结果:

  

我的名字是爱默生,我32岁。

答案 5 :(得分:0)

我认为这是在Python中连接字符串和int的很酷的方法

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