有谁知道为什么会出现这种错误?错误与标题中的错误完全一样,indexerror:String index超出范围。 我的代码是:
import random
Cipher = input("What would you like to encrypt? ")
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
a = 0
aValue = True
while aValue == True:
for letter in Cipher:
pos = random.randint(0,25)
letter = alphabet[pos]
if letter == 'a':
lol = 0
else:
if a >= 24:
aValue = False
if Cipher[a] == 'a' or Cipher[a] == 'A': #It says the error occurs on this line
Cipher = Cipher.replace(Cipher[a], letter)
a = a + 1
print("Your final message is: " + Cipher + ".")
我只放了1个字母,因为它不会让我把所有的代码都放进去。我希望你能帮助我。谢谢, -space
答案 0 :(得分:0)
for循环完成后,变量 a 将等于 Cipher 的长度。例如,如果密文长度为五个字符,那么 a 将等于5.这是因为一个对于 Cipher 中的每个字母递增一次
然后,如果 aValue 尚未设置为false,则while循环生效,for循环再次运行。如果发生这种情况,变量 a 永远不会重置,并且它仍然保持其先前的值。如果 Cipher 的长度为5且 a 等于5,那么 Cipher [a] 将引用 Cipher的第六个字母。这封信不存在,因为在这种情况下只有五个字母长。这是抛出异常的地方。
要解决此问题,请确保 a 始终小于所有循环的所有迭代的 Cipher 的长度。