我有这段代码,我不为什么它不会以相反的顺序打印输入字符串。我已指定它从字符串的最后一个字符到带有(-1,0,-1)的第一个字符进行打印。
string=str(input())
for i in range(-1,0,-1):
print(string[i],end="")
答案 0 :(得分:4)
range(-1, 0, -1)
是空。范围不能与-1
将导致 last 元素的事实一起使用,因为它不知道集合的长度(这里是字符串)。
因此,如果将range(..)
转换为列表,则会得到:
>>> list(range(-1, 0, -1))
[]
因此,您需要从len(string)-1
开始,此外,由于第二个参数是 exclusive ,因此该参数应为-1
。例如:
>>> string = 'foobar'
>>> list(range(len(string)-1, -1, -1))
[5, 4, 3, 2, 1, 0]
因此,在您的情况下,我们可以这样使用:
for i in range(len(string)-1, -1, -1):
print(string[i],end="")
另一种方法是使用reversed(..)
,或通过对字符串进行斜线输入:
for c in reversed(string):
print(c, end='')
请注意,最好先生成完整字符串,例如:
print(string[::-1])
或其他替代方法(但性能较低):
print(''.join(reversed(string))
答案 1 :(得分:2)
使用切片符号向后打印字符串:
print(string[::-1])
-1是步长和方向。
答案 2 :(得分:2)
正如Willem Van Onsem指出的那样,range(-1, 0, 1)
是空的。如果您希望以相反的顺序打印字符串,则使用string slicing会更容易:
print(string[::-1])
答案 3 :(得分:2)
您的range
定义不正确,如下所示:
for i in range(-1,0,-1):
print(i)
不返回任何内容。此外,len(i)
返回0
。
只需在此处使用列表扩展语法:
string=str(input())
print(string[::-1])