首页 > 解决方案 > IndexError:列表索引超出范围。这是在加密时

问题描述

我已经用 Python 编码了几个月,并且我已经编写了一个成功的密码,但是我正在制作一个随机密码,它不会工作。我附上了代码。

    txt=input("Input message.\n")
  numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]
  ra.shuffle(numbers)
  a1=numbers[1]
  b1=numbers[2]
  c1=numbers[3]
  d1=numbers[4]
  e1=numbers[5]
  f1=numbers[6]
  g1=numbers[7]
  h1=numbers[8]
  i1=numbers[9]
  j1=numbers[10]
  k1=numbers[11]
  l1=numbers[12]
  m1=numbers[13]
  n1=numbers[14]
  o1=numbers[15]
  p1=numbers[16]
  q1=numbers[17]
  r1=numbers[18]
  s1=numbers[19]
  t1=numbers[20]
  u1=numbers[21]
  v1=numbers[22]
  w1=numbers[23]
  x1=numbers[24]
  y1=numbers[25]
  z1=numbers[26]
  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=alphabet[a1]
  b=alphabet[b1]
  c=alphabet[c1]
  d=alphabet[d1]
  e=alphabet[e1]
  f=alphabet[f1]
  g=alphabet[g1]
  h=alphabet[h1]
  i=alphabet[i1]
  j=alphabet[j1]
  k=alphabet[k1]
  l=alphabet[l1]
  m=alphabet[m1]
  n=alphabet[n1]
  o=alphabet[o1]
  p=alphabet[p1]
  q=alphabet[q1]
  r=alphabet[r1]
  s=alphabet[s1]
  t=alphabet[t1]
  u=alphabet[u1]
  v=alphabet[v1]
  w=alphabet[w1]
  x=alphabet[x1]
  y=alphabet[y1]
  z=alphabet[z1]
  txta=txt.replace("a","á")
  txtb=txta.replace("b","+")
  txtc=txtb.replace("c","ç")
  txtd=txtc.replace("d","ð")
  txte=txtd.replace("e","é")
  txtf=txte.replace("f","đ")
  txtg=txtf.replace("g","ŋ")
  txth=txtg.replace("h","ħ")
  txti=txth.replace("i","í")
  txtj=txti.replace("j","j̉")
  txtk=txtj.replace("k","ĸ")
  txtl=txtk.replace("l","ł")
  txtm=txtl.replace("m","µ")
  txtn=txtm.replace("n","n̉")
  txto=txtn.replace("o","ó")
  txtp=txto.replace("p","þ") 
  txtq=txtp.replace("q","@")
  txtr=txtq.replace("r","¶")
  txts=txtr.replace("s","ß")
  txtt=txts.replace("t","ŧ")
  txtu=txtt.replace("u","ú")
  txtv=txtu.replace("v","̉")
  txtw=txtv.replace("w","ẃ")
  txtx=txtw.replace("x","»")
  txty=txtx.replace("y","ý")
  txtz=txty.replace("z","«")
  texta=txtz.replace("á",a)
  textb=texta.replace("+",b)
  textc=textb.replace("ç",c)
  textd=textc.replace("ð",d)
  texte=textd.replace("é",e)
  textf=texte.replace("đ",f)
  textg=textf.replace("ŋ",g)
  texth=textg.replace("ħ",h)
  texti=texth.replace("í",i)
  textj=texti.replace("j̉",j)
  textk=textj.replace("ĸ",k)
  textl=textk.replace("ł",l)
  textm=textl.replace("µ",m)
  textn=textm.replace("n̉",n)
  texto=textn.replace("ó",o)
  textp=texto.replace("þ",p)
  textq=textp.replace("@",q)
  textr=textq.replace("¶",r)
  texts=textr.replace("ß",s)
  textt=texts.replace("ŧ",t)
  textu=textt.replace("ú",u)
  textv=textu.replace("̉",v)
  textw=textv.replace("ẃ",w)
  textx=textw.replace("»",x)
  texty=textx.replace("ý",y)
  text=texty.replace("«",z)
  print(text)

它只是提出了 IndexError: list index out of range。有人知道为什么吗?它会影响字母 z,当我删除它时,它会影响字母 j。如果你想知道为什么会有特殊字符,那么如果 a 转到 z 并且 z 转到 a 那么 a 将转到 z 然后又回到 a。我称之为双重替换。

标签: pythonstringlistencryptionrandom

解决方案


python中的列表是从零开始的。例如,numbers[1]在您的代码中将给出2- 列表中的第二个值。

要在您的代码中解决此问题,请26从您的列表索引中删除。您应该从 开始索引0


推荐阅读