我有这段代码,但我不明白为什么它不以相反的顺序打印输入字符串。我已经指定它从字符串的最后一个字符打印到第一个字符 (-1,0,-1)。
string=str(input())
for i in range(-1,0,-1):
print(string[i],end="")
请您参考如下方法:
range(-1, 0, -1) 为空。 -1 将导致 last 元素,因此范围无法工作,因为它不知道集合的长度(此处为字符串)。
因此,如果我们将 range(..) 转换为列表,我们将得到:
>>> list(range(-1, 0, -1))
[]
因此您需要从 len(string)-1 开始,此外,由于第二个参数是独占,因此应该是 -1 .例如:
>>> string = 'foobar'
>>> list(range(len(string)-1, -1, -1))
[5, 4, 3, 2, 1, 0]
所以在你的情况下我们可以这样使用:
for i in range(<b>len(string)</b>-1, <b>-1</b>, -1):
print(string[i],end="")
另一种方法是使用reversed(..),或者对字符串进行切片:
for c in reversed(string):
print(c, end='')
请注意,您最好先生成 完整的字符串,例如:
print(string[::-1])
或替代方案(但性能较差):
print(''.join(reversed(string))
