You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python加密解密代码触发IndexError,请求故障排查与修复

问题分析与修复方案

核心错误原因

  • 函数返回位置错误:gevenl和goddl里的return语句写在了for循环内部,导致循环只跑一次就直接返回结果。这会让evenl和oddl列表最多只有一个元素,后续swap函数里循环访问列表元素时,必然触发IndexError(索引超出列表范围)。
  • 拼写错误:解密分支里的decrpyt、dycrypted都是拼写错误,应该是decrypt、decrypted,会导致无法正确触发解密逻辑。

修复后的完整代码

from tkinter import messagebox, simpledialog, Tk

def even(number):
    return number % 2 == 0

def gevenl(message):
    evenl = []
    for c in range(len(message)):
        if even(c):
            evenl.append(message[c])
    # 把return移到循环外,确保遍历完所有字符
    return evenl

def goddl(message):
    oddl = []
    for c in range(len(message)):
        if not even(c):
            oddl.append(message[c])
    # 把return移到循环外,确保遍历完所有字符
    return oddl

def swap(message):
    letter = []
    if not even(len(message)):
        message = message + "."
    evenl = gevenl(message)
    oddl = goddl(message)
    for c in range(int(len(message)/2)):
        letter.append(oddl[c])
        letter.append(evenl[c])
    newm = "".join(letter)
    return newm

def gettask():
    task = simpledialog.askstring("", "Encrypt or Decrypt?")
    return task

def getm():
    message = simpledialog.askstring("Message", "Enter your secret message: ")
    return message

root = Tk()

while True:
    task = gettask()
    if task == "encrypt":
        message = getm()
        encrypted = swap(message)
        messagebox.showinfo("", f"Encrypted message is: {encrypted}")
    elif task == "decrypt":  # 修正拼写错误
        message = getm()
        decrypted = swap(message)  # 修正拼写错误
        messagebox.showinfo("", f"Decrypted message is: {decrypted}")  # 修正拼写错误
    else:
        messagebox.showinfo("Idiot", "Ayo stupid baka, No breaking in hahaha")
        break
root.mainloop()

额外优化点

  • 去掉range(0, len(message))里的0,range默认从0开始,写法更简洁。
  • 修正getm函数提示文本的语法错误(Enter is改成Enter your)。
  • 调整消息框的标题参数,显示更规范。

内容的提问来源于stack exchange,提问作者PythonBasicsDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:21:37