我被要求进行字符串循环并反向打印。我可以做到这一点,但是为什么祈祷词是开始它的最后一封信...
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
...
答案 0 :(得分:2)
不要仅使用-
,而是将索引替换为字符串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]
,但除非您需要字符串的反向副本,否则我会避免这种情况。
答案 1 :(得分:0)
如果您希望将其打印为句子,还可以:
reversed_data = data[::-1]
print(reversed_data)
OR
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)
答案 2 :(得分:0)
您的实现无法正常工作的原因是,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])
有关切片在python中的工作方式,请参见this post。