Python使用字典构建凯撒密码仅输出单个键值对如何解决
凯撒密码映射字典生成问题修复方案
问题原因
- 你代码中的
return语句放在了for循环的内部逻辑块里,循环执行第一次(对应索引i=0、字母a)时就直接触发了返回操作,后续25次循环完全没有执行,最终只返回了仅包含单个键值对的字典。
修复方案
在函数开头先初始化一个空字典,循环过程中逐个将字母与对应移位后的字母存入字典,等全部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'] def build_cipher(shift): ''' Description: 接收移位参数shift,返回存储26个英文字母与对应移位后字母映射关系的字典,通过字母索引减去移位值后对26取模实现移位逻辑 >>> build_cipher(3) ''' # 初始化空字典存储映射关系 cipher_dict = {} for i in range(0, 26): letter = alphabet[i] shiftedletter = alphabet[(i - shift) % 26] # 逐个添加键值对 cipher_dict[letter] = shiftedletter # 循环结束后再返回完整字典 return cipher_dict
调用build_cipher(3)即可得到你给出的预期完整映射结果。
内容的提问来源于stack exchange,提问作者ashnotallyson
相关产品推荐
相关产品推荐

