%vs +与Python中的字符串相关?

时间:2013-01-04 03:40:40

标签: python syntax

此:

hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r"

print joke_evaluation % hilarious

和此:

  

w =“这是...的左侧”e =“右侧的字符串。”

     

打印w + e

似乎在做同样的事情。为什么我不能将代码更改为:

print joke_evaluation + hilarious

为什么这不起作用?

4 个答案:

答案 0 :(得分:6)

%r调用repr(),代表False(bool)为"False"(字符串)。

+只能用于将字符串与其他字符串连接起来(否则会得到TypeError: cannot concatenate 'str' and 'bool' objects

在连接之前,您可以将False转换为字符串:

>>> print "Isn't that joke so funny?!" + str(False)

您还可以尝试新的字符串格式:

>>> print "Isn't that joke so funny?! {!r}".format(False)
Isn't that joke so funny?! False

答案 1 :(得分:3)

这是类型转换问题。当您尝试连接到Python中的字符串时,您可能只连接其他字符串。您正在尝试将布尔值连接到字符串,这不是受支持的操作。

你可以做到

print w + str(e) 

那将是有用的。

答案 2 :(得分:0)

这令我感到困惑:

hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r"

print joke_evaluation % hilarious

我希望它看起来像这样:

hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r" % hilarious

print joke_evaluation 

我想我的眼睛看起来很时髦。

答案 3 :(得分:0)

这也让我感到困惑,但是似乎由于它是一个布尔值,所以您不能使用+。

如果您收到这样的错误:

TypeError: cannot concatenate 'str' and 'bool' objects