在codefight中,有一个问题:
哪个给定的字符串定义不正确?
s ='abacaba'
s =“abacaba”
s =''abacaba''
s =“”abacaba“”
s ='''abacaba'''
- 醇>
s =“”“abacaba”“”
3和4中的定义是错误的。
我的问题是,如果3和4是定义字符串的错误方法,那么类似的推理不应该是5和6错误吗?
答案 0 :(得分:1)
回答你的问题
当您使用3个单引号或3个双引号时,您可以使用跨越multiple lines
的字符串。这就是你为doc字符串提供它的原因。请参阅以下示例。
>>> s ="""Hello
... whats going on
... thats it"""
>>> s
'Hello\nwhats going on\nthats it'
>>>
但是当使用2个单引号(''
)或使用2个双引号(""
)时,如果您需要将字符串封装在它们的引号中,它应该如下所示。
"'Hello'" or '\'Hello\''
'"Hello'" or "\"Hello\""
如果你不这样做,python口译人员期望得到“你好”的价值。而不是把它当作一个字符串。
答案 1 :(得分:0)
3和4是错误的,因为''是空字符串,abacaba将被视为变量,因此您需要将其写为'' + str(abacaba) + ''
,这将连接您的字符串,并且您必须在使用前指定abacaba的值。
现在,当您使用"""abacaba"""
python时,您的答案将找到三个不同的字符串""
,"abacaba"
和""
,您的结果将为'abacaba'
。
发生这种情况是因为您需要+
符号来连接存储在变量中的字符串,但对于"abc"
和"xyz"
之类的字符串,如果您编写s="abc" "xyz"
或s="abc""xyz"
,您将获得结果'abcxyz'
以下是几个例子:
>>> s="abc" "xyz"
>>> s
'abcxyz'
>>> s="1""abc""1"
>>> s
'1abc1'
>>> s="1" "abc" "1"
>>> s
'1abc1'
>>> s="1"abc"1"
SyntaxError: invalid syntax
>>> abc="2"
>>> s="1"abc"1"
SyntaxError: invalid syntax
>>> s="1"+abc+"1"
>>> s
'121'
>>> s=r"""abc""" # raw string which will treat all content/special character between "" as your string
>>> s
'abc'
答案 2 :(得分:-1)
三重引号最常用于python中的方法描述。这些方法描述称为docstrings
,表示为多行字符串文字""" """
以下是python中的示例。
def testdocstring():
"""
this is a test docstring method
:return: None
"""
pass
print testdocstring.__doc__
此print
语句的输出将为:
this is a test docstring method
:return: None
编辑:正如@Varad和@abccd所提到的,它也用于多行字符串文字。