您如何修改此代码,以使其以相反的顺序打印输入字符串?

时间:2018-10-02 18:14:06

标签: python python-3.x

我有这段代码,我不为什么它不会以相反的顺序打印输入字符串。我已指定它从字符串的最后一个字符到带有(-1,0,-1)的第一个字符进行打印。

string=str(input())

for i in range(-1,0,-1):
    print(string[i],end="")

4 个答案:

答案 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])
相关问题