在 Python 中反向打印列表

Printing a List in reverse in Python

你好(这是我在网站上的第一个问题,如果我没有遵守规则,我深表歉意) 下面是我编写的两个代码(使用 for 循环),用于打印用户输入的字符串的反向。一个代码给我一个错误,另一个工作正常。我不明白为什么。为什么函数 "range" 似乎有所不同?感谢有人可以帮助我理解逻辑 - 非常感谢

代码 1:这给了我错误:

string = input('Enter a Word ')
length = len(string)
reverse = []

for i in string:
    x=string [-1-i]
    reverse.append(x)

print (reverse)

*输入一个词Python


TypeError Traceback(最后一次调用) 在 4个 5 为我在字符串中: ----> 6 x=字符串 [-1-i] 7 reverse.append(x) 8个 TypeError:- 不支持的操作数类型:'int' 和 'str'

代码 2:这很好用

string = input('Enter a Word ')
length = len (string)
reverse = []

for i in range(length):
    x=string [-1-i]
    reverse.append(x)

print (reverse)

*输入一个词Python

['n', 'o', 'h', 't', 'y', 'P']*

对于 for i in stringi 将取字符串中每个字符的值,例如'H''e''l''l''o' 如果输入是 'Hello'.

当您调用 string[-1-i] 时,Python 试图从数字中减去一个字符串,这就是您收到错误 unsupported operand type(s) for -: 'int' and 'str'.

的原因

您正在做的第一个循环是为您的字符串创建一个 foreach 循环,因此您的 "i" 基本上是一个字符。你知道还有一个函数叫做"reverse()"吗?

你可以很容易地制作一个reverse函数-

def reverse(word = ""):
  return word if len(word) < 2 else reverse(word[1::]) + word[0]

myword = "bookkeepper"

print(myword+reverse(myword))
# bookkeepperreppeekkoob