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

Python字符串列表加解密报错:ord()函数参数类型异常求助

解决ord() expected a character, but string of length 4 found错误

嘿,我一眼就瞅出问题出在哪啦!这个报错的核心是你把整个字符串传给了ord()函数,但它只能处理单个字符。

错误原因拆解

当你遍历字符串列表时,比如列表是["test", "demo"],如果直接循环取每个元素(比如for s in str_list),那s是整个长度为4的字符串,而ord()需要的是单个字符(比如s[0]这种),所以就触发了这个类型错误。解密环节肯定也会犯同样的错——因为解密时你大概率会反过来把整个字符串传给chr(),而chr()同样需要单个整数编码。

修复后的代码示例

下面是修正后的加解密代码,我给你加上了注释说明关键点:

def encrypt(str_list):
    encrypted_results = []
    # 第一步:遍历列表中的每一个字符串
    for original_str in str_list:
        encrypted_chars = []
        # 第二步:遍历当前字符串中的每一个单个字符
        for char in original_str:
            # 对单个字符执行加密逻辑(这里用简单的ASCII偏移3做示例)
            encrypted_code = ord(char) + 3
            encrypted_chars.append(str(encrypted_code))
        # 把同一字符串的加密编码拼接成一个字符串,方便存储/传输
        encrypted_results.append(",".join(encrypted_chars))
    return encrypted_results

def decrypt(encrypted_list):
    decrypted_results = []
    # 第一步:遍历加密后的列表元素
    for encrypted_str in encrypted_list:
        decrypted_str = ""
        # 拆分加密字符串为单个字符编码
        for code_str in encrypted_str.split(","):
            # 解密逻辑:还原ASCII偏移
            decrypted_char = chr(int(code_str) - 3)
            decrypted_str += decrypted_char
        decrypted_results.append(decrypted_str)
    return decrypted_results

# 测试一下功能
test_input = ["hello stackoverflow", "coding is fun"]
encrypted = encrypt(test_input)
print("加密结果:", encrypted)
decrypted = decrypt(encrypted)
print("解密结果:", decrypted)

核心修复点

  • 加密时用嵌套循环:先遍历列表里的每个字符串,再遍历字符串里的每个字符,确保ord()只接收单个字符
  • 解密时先把加密后的编码字符串拆分成单个编码,再逐个用chr()还原成字符,最后拼接回原字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:21:03