1

这个:

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

print joke_evaluation % hilarious

和这个:

w = "这是...的左边" e = "一个有右边的字符串。"

打印 w + e

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

print joke_evaluation + hilarious

为什么这不起作用?

4

4 回答 4

6

%r调用repr(),将False(bool) 表示为"False"(string)。

+只能用于连接一个字符串和其他字符串(否则你会得到一个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
于 2013-01-04T03:45:40.520 回答
3

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

你可以做

print w + str(e) 

那将是功能性的。

于 2013-01-04T03:43:08.180 回答
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 

我想它在我眼里看起来很时髦。

于 2013-01-04T20:15:22.333 回答
0

这对我来说也很困惑,但似乎由于它是一个布尔值,你不能使用 +。

如果你这样做,你会收到这样的错误:

TypeError: cannot concatenate 'str' and 'bool' objects
于 2020-03-10T03:51:44.353 回答