如何让A1Z26解密器兼容空格及各类Unicode字符输入?
A1Z26解密器兼容非数字输入的修改方案
修改后的完整代码
import re def A1Z26_decrypt(decrypt): result = "" # 提取输入中所有连续的数字序列 num_strings = re.findall(r'\d+', decrypt) for num_str in num_strings: try: num = int(num_str) # 仅转换1-26范围内的数字(符合A1Z26规则) if 1 <= num <= 26: result += chr(num + 64) else: # 超出范围的数字保留原内容,也可根据需求改为跳过 result += num_str except ValueError: # 兜底处理,避免意外报错 result += num_str return result def main(): user_input = input("请输入需要解密的内容:") print(A1Z26_decrypt(user_input)) if __name__ == "__main__": main()
关键修改说明
- 提取有效数字:用
re.findall(r'\d+', decrypt)替代原有的按-分割逻辑,能自动忽略空格、标点(,!@#$%等)等非数字字符,只提取连续的数字串,彻底解决非指定分隔符导致的报错问题。 - 修复提前返回bug:原代码在循环内直接
return,导致仅处理第一个数字就终止函数,现在将return移至循环外,确保所有数字都被转换。 - 增加合法性校验:转换前检查数字是否在1-26范围内,仅符合A1Z26规则的数字才转为字母;超出范围的数字保留原内容(可根据需求改为跳过)。
- 异常兜底:加入
try-except块,避免极端情况(如非数字串意外进入处理流程)导致程序崩溃。
测试示例
输入:14 13!@#2-26
输出:NMBZ
内容的提问来源于stack exchange,提问作者Lil Bone
相关产品推荐
相关产品推荐

