This error keeps appering "builtins.IndexError: string index out of range"

This error keeps appering "builtins.IndexError: string index out of range"

normal = input("请输入要编码的文本:")

对=“”

2odd = ""

comp = len(正常)

我在范围内(长度):

if( i%2 == 0):
    pares = pares + normal[i]
else:``
    impares = impares + normal[i]

加密 = 偶数 + 奇数

打印(加密)

打印("\n")

text = input("输入要解码的文本:")

car_pares2 = ""

car_impares2 = ""

comp2 = len(文本)

我在范围内(comp2):

if i%2 == 0:
    pares2 = pares2 + texto[i]
else:
    impares2 = impares2 + texto[i-1]

我在范围内(comp2):

print(pares2[i], end = "")

我在范围内(comp2):

print(impares2[i-1], end = "")

我认为错误是在这里产生的:

for i in range(comp2):

   print(pares2[i], end = "")
for i in range(comp2):

   print(impares2[i-1], end = "")

我对 cpython 没有太多经验,但我想你的意思是:

for i in range(pares2):

   print(pares2[i], end = "")
for i in range(impares2):

   print(impares2[i-1], end = "")

因为对于任何非空字符串,comp2 的长度将明显超过 pares2 和 impares2 的长度。

此外,请记住,impares2[i-1] 上的索引将从 -1 开始,因为范围函数的第一个索引 (i) 将为 0。因此,它将 return字符串的最后一个字符,如下例所示:

myList = ['A', 'B', 'C', 'D', 'E']
print(myList[-1])

output: E