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

Python编写凯撒密码时调用list.index()查无字符报错如何解决

问题原因

Python列表的index()方法查找不存在的元素时,不会返回None,会直接抛出ValueError异常,因此你原有逻辑里的if indeksik == None判断无法生效,遇到空格、符号等非字母字符时就会直接报错。

解决方法

推荐两种可直接使用的实现方案:

  • 方案1:先判断字符归属,再执行移位逻辑(可读性更高)
def encrypt(text, shift):
    text_encrypted = []
    for letter in text:
        # 非字母字符直接追加
        if letter not in alphabet:
            text_encrypted.append(letter)
        else:
            indeksik = alphabet.index(letter)
            # 此处后续可自行补充移位超过'z'的处理逻辑
            text_encrypted.append(alphabet[indeksik + shift])
    # 拼接列表为字符串返回
    return ''.join(text_encrypted)
  • 方案2:捕获异常处理(适合不想提前做归属判断的场景)
def encrypt(text, shift):
    text_encrypted = []
    for letter in text:
        try:
            indeksik = alphabet.index(letter)
            text_encrypted.append(alphabet[indeksik + shift])
        except ValueError:
            # 捕获到字符不在字母表的异常时直接追加原字符
            text_encrypted.append(letter)
    return ''.join(text_encrypted)
调用示例

函数调用时需要接收返回值才能拿到加密结果,示例如下:

encrypted_text = encrypt(text, shift)
print(encrypted_text)

内容的提问来源于stack exchange,提问作者Rounded Hedgehog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:54:10