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

通过偏移索引从现有字母列表生成新列表,代码输出为空如何解决

问题原因分析

你的实现思路本身存在逻辑错误,和第二个循环是否添加enumerate枚举无关,核心问题有以下4处:

  • 循环嵌套逻辑颠倒:当前外层遍历字母表、内层遍历输入文本的逻辑会产生大量无效重复判断,正确逻辑应该是优先遍历输入文本的每一个字符,再匹配该字符在字母表中的索引。
  • 判断条件完全错误:if letter == alphabet 是拿单个字符和整个字母表列表做等值判断,该条件永远不会成立,因此append逻辑永远不会执行,cipher_text自然为空。
  • 枚举起始值设置错误:你给enumerate设置了start=1,但Python列表索引从0开始,拿到的index会比字符的真实索引大1,后续偏移计算结果会全部错位。
  • 缺少索引溢出处理:当偏移后的索引超过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']
shift = 5
text = 'hello'
cipher_text = []

for letter in text:
    # 获取当前字符在字母表中的索引
    origin_idx = alphabet.index(letter)
    # 计算偏移后索引,对26取模防止越界
    new_idx = (origin_idx + shift) % 26
    cipher_text.append(alphabet[new_idx])

# 输出结果为 ['m', 'j', 'q', 'q', 'v'],拼接后得到密文 mjqqv
print(cipher_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:45:07