有人能解释一下为什么会出现这个错误吗?这个程序要求一个单词,然后用这个单词制作一个金字塔。
palavra = input('Digite a palavra:').upper()
lista = list(palavra)
x = 0 #ímpares
y = 0 #contador
z = len(palavra) #conta o numero de letras mais o add
while y < z:
if (x%2) == 0:
x += 1
else:
p = lista[y]*x
print(p.rjust(z))
x += 1
y += 1
z += 1发布于 2022-05-23 12:48:28
我认为z不应该在while循环中增加,否则您将永远不会结束while循环。
palavra = input('Digite a palavra:').upper()
lista = list(palavra)
x = 0 #ímpares
y = 0 #contador
z = len(palavra) #conta o numero de letras mais o add
while y < z:
if (x%2) == 0:
x += 1
else:
p = lista[y]*x
print(p.rjust(z))
x += 1
y += 1
# z += 1 发布于 2022-05-23 12:55:03
,这将修复您的错误。试试这个,
palavra = input('Digite a palavra:').upper()
lista = list(palavra)
print(lista)
x = 0 #ímpares
y = 0 #contador
z = len(palavra) #conta o numero de letras mais o add
while y < z:
if (x%2) == 0:
x += 1
else:
if(len(palavra)-1 < y): #Check the length of string and y value to end the loop
break
p = lista[y]*x
print(p.rjust(z))
x += 1
y += 1
z += 1像这样输出,

发布于 2022-05-23 12:58:49
您正在迭代中递增'y‘&这就是问题所在。最后一次迭代,它将始终指向字符串和列表索引的长度,在那个时候不存在。
palavra = input('Digite a palavra:').upper()
lista = list(palavra)
x = 0 #ímpares
y = 0 #contador
z = len(palavra) #conta o numero de letras mais o add
strlen = len(palavra) #conta o numero de letras mais o a
while y < strlen:
if (x%2) == 0:
x += 1
else:
p = lista[y]*x
print(p.rjust(z))
x += 1
y += 1
z += 1https://stackoverflow.com/questions/72348698
复制相似问题