Python 将字符串从最后一个索引打印到第一个索引的循环中出错

Python 将字符串从最后一个索引打印到第一个索引的循环中出错,python,python-3.x,loops,while-loop,Python,Python 3.x,Loops,While Loop,我编写这个循环是为了在每一行上打印从最后一个索引到第一个索引的任何输入字符串。但从技术上讲,当我运行它时,只有当字符串都是小写时,它才能正常工作。对于大写字符串,它不能正常工作。在这两种情况下,无论输入字符串是大写还是小写,以下输出都会显示一个回溯,我不知道这是为了什么: 输出: 我认为最好为名称长度定义一个条件 然后在i上开始-1 name = input("Enter: ") i = len(name) - 1 while i > 0 : print(nam

我编写这个循环是为了在每一行上打印从最后一个索引到第一个索引的任何输入字符串。但从技术上讲,当我运行它时,只有当字符串都是小写时,它才能正常工作。对于大写字符串,它不能正常工作。在这两种情况下,无论输入字符串是大写还是小写,以下输出都会显示一个回溯,我不知道这是为了什么:

输出:


我认为最好为名称长度定义一个条件 然后在i上开始-1

name = input("Enter: ")
i = len(name) - 1
while i > 0 :
    print(name[i])
    i = i - 1

请尝试上面的方法,[::-1]返回反向字符串。

您可以按如下方式重构代码:

name = 'emadd'
j = len(name)-1

while j>= 0:
    print(name[j])
    j-= 1
或者可以选择使用for循环处理int,如下所示:

for i in range(len(enter)-1,-1,-1):
    print(enter[i])

while-True循环何时停止…?另外:print*name[::-1],sep='\n'用于相同的结果,无错误。起初我将其编写为while lenname>I:,但没有任何区别,因此我将其更改为True。lenname始终比I多一个。“emadd”的len是5,但最后一个有效索引是4…你也在从0向下递减i,所以,是的,len总是>i。对,明白了!谢谢
for i in name[::-1]: print(i)
name = 'emadd'
j = len(name)-1

while j>= 0:
    print(name[j])
    j-= 1
for i in range(len(enter)-1,-1,-1):
    print(enter[i])