我正在尝试编写一个函数,它接受一个字符串并正常打印,然后反过来,如下所示:
string = "hello"
mirror(string)
'helloolleh'
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的代码:
def mirror(x) :
sentence = " "
length = len(x)
lengthstring = str(len(x))
lengthint = int(lengthstring)
sentence = x[lengthint, 0]
print x + sentence
Run Code Online (Sandbox Code Playgroud)
但它一直说len(x)是一个元组而不是一个int,它不能成为字符串切片的一部分?
Gre*_*ill 12
我用你的代码得到的错误是:
File "<stdin>", line 6, in mirror
TypeError: string indices must be integers, not tuple
Run Code Online (Sandbox Code Playgroud)
什么也没说len(x).实际上,它指的是这条线
sentence = x[lengthint, 0]
Run Code Online (Sandbox Code Playgroud)
您正在尝试x使用索引进行索引lengthint, 0.Python假定您使用逗号表示您要x使用元组进行索引(lengthint, 0),这是无效的.
您似乎正在尝试使用字符串切片语法来反转字符串.字符串切片语法使用:,而不是,像这样:
sentence = x[lengthint:0]
Run Code Online (Sandbox Code Playgroud)
但是,因为lengthint大于或等于零,所以除了空结果之外永远不会产生任何东西.你还需要告诉Python向后索引,如下所示:
sentence = x[lengthint:0:-1]
Run Code Online (Sandbox Code Playgroud)
这几乎可行.它省略了反转副本中原始字符串的第一个字符,因为它0表示超过结束位置的位置.所以你必须使用特殊值None:
sentence = x[lengthint:None:-1]
Run Code Online (Sandbox Code Playgroud)
在你这样做并验证它是否有效之后,你可以删除使用lengthstring和lengthint(我认为这是为了避免原始错误而添加的):
sentence = x[len(x):None:-1]
Run Code Online (Sandbox Code Playgroud)
最后,在这种情况下,Python允许您省略前两个切片参数,只留下:
sentence = x[::-1]
Run Code Online (Sandbox Code Playgroud)
如果你的目标是使这个功能起作用,我认为你的方法太复杂了.您可以简单地将字符串添加到其反向:
>>> def mirror(example):
... return example + example[::-1]
...
>>> mirror('hello')
'helloolleh'
Run Code Online (Sandbox Code Playgroud)
Python支持跨步索引,这意味着[::-1]简单地反转字符串.