Python处理ASCII转换列表时为小于48的数值追加126报错如何解决
问题分析与修复
报错原因
- 核心错误是对整数类型调用了
append方法:你遍历newnumbers拿到的number是单个整数,整数不存在append方法,直接触发属性报错。 - 遍历列表时直接修改元素副本不会生效:你拿到的
number是列表元素的拷贝,对它的赋值不会修改原newnumbers列表的内容。 - 函数名不匹配:你说明自己实现的是
chr_list函数,但代码中调用了chr_string,如果实际函数名和调用名不符也会触发报错。 - 逻辑不符合需求:你要实现的是在小于48的数值之后追加126,原代码没有操作列表插入元素的逻辑,即使不报错也拿不到预期结果。
修复后代码
def encrypt_text(message: str, rotation_amount: int) -> str: numbers = ord_list(message) newnumbers = rotationlist(numbers, rotation_amount) processed_nums = [] for num in newnumbers: processed_nums.append(num) # 数值小于48时追加126 if num < 48: processed_nums.append(126) # 替换为你实际实现的数值转字符串函数名 newstring = chr_list(processed_nums) return newstring print(encrypt_text("(", 1))
验证说明
测试输入("(", 1)时,(的ASCII值为40,旋转1后为41,41小于48,所以处理后的数值列表为[41, 126],转换为字符串后就是你期望的(~。
内容的提问来源于stack exchange,提问作者Diya Shah
相关产品推荐
相关产品推荐

