我被要求有一个字符串循环并反向打印。我可以做到这一点,但为什么祈祷是最后一封信开始...
data = "Why am I doing this is reverse order."
for index in range(len(data)):
print(index, data[-index])
0 W
1 .
2 r
3 e
4 d
5 r
6 o
7
...
啊这是我最接近的......没有添加数据[: - index],[ - index:] ......他们都错了......
data = "Why am I doing this is reverse order."
for index in range(len(data)):
print(index, data[-index])
0 W
1 .
2 r
3 e
4 d
5 r
6 o
7
...
不要只使用-
,而是将索引减去字符串len:
data = "Why am I doing this is reverse order."
l = len(data) - 1
for index in range(l+1):
print(index, data[l-index])
输出:
0 .
1 r
2 e
...
34 y
35 h
36 W
或者,这样做的pythonic方法是使用reversed
:
for l in reversed(data):
print(l)
你也可以使用切片,data[::-1]
但我会避免这个,除非你想要一个反向的字符串副本。
如果您希望将其打印为句子,您还可以:
reversed_data = data[::-1]
print(reversed_data)
要么
reversed_data = reversed(data)
print("".join(list(reversed_data)))
或者,如果你想逐个字符:
reversed_data = data[::-1]
for char in reversed_data:
print(char)
reversed_data = reversed(data)
for char in reversed_data:
print(char)
你的实现不起作用的原因是因为range(len(data))
从0开始到n-1。但是当你得到data[-index]
索引为0时,它返回字符串的0元素;第一个字母。
一个简单的实现是:
data = 'Hello world!'
# Print every letter on different line
for x in data[::-1]:
print(x)
# Print the reverse string on one line
print(data[::-1])
请参阅this post,了解切片在python中的工作原理。