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

Vigenere Cipher加密问题求助:代码无输出且无法实现指定加密逻辑

解决Vigenère加密无输出的问题

兄弟,我太懂这种卡了好几个小时连个输出都看不到的憋屈感!你说的用密钥abc加密bob的需求其实很明确,咱们先从最常见的几个坑入手,再给你一个能直接跑的示例代码,你对照着看看自己的问题出在哪。

常见的无输出原因

  • 忘记打印结果:很多时候代码逻辑其实没问题,但写完加密函数后压根没调用,或者调用了没把结果print出来,自然看不到输出
  • 字符处理错误:直接用ASCII值计算时没把字母映射到0-25的范围(比如A/a对应0),结果算出的是不可见的控制字符,看起来就像没输出
  • 密钥循环逻辑出错:当明文比密钥长时,没正确重复密钥,导致后续字符计算异常甚至静默报错,最终也没输出

能直接运行的示例代码(Python)

def vigenere_encrypt(plaintext, key):
    ciphertext = []
    key_index = 0
    # 统一转小写简化处理,也可以保留大小写逻辑,按需调整
    plaintext = plaintext.lower()
    key = key.lower()
    
    for char in plaintext:
        # 只处理字母字符,非字母直接保留
        if char.isalpha():
            # 把字母转成0-25的索引(a=0, b=1...z=25)
            plain_char_num = ord(char) - ord('a')
            key_char_num = ord(key[key_index]) - ord('a')
            # Vigenère加密核心公式:(明文索引 + 密钥索引) % 26
            cipher_char_num = (plain_char_num + key_char_num) % 26
            # 转回ASCII字母字符
            cipher_char = chr(cipher_char_num + ord('a'))
            ciphertext.append(cipher_char)
            # 密钥索引循环,用完从头开始
            key_index = (key_index + 1) % len(key)
        else:
            ciphertext.append(char)
    
    return ''.join(ciphertext)

# 测试你的案例:密钥abc加密bob
plaintext = 'bob'
key = 'abc'
encrypted_result = vigenere_encrypt(plaintext, key)
print(f"加密结果:{encrypted_result}")

运行这段代码会得到cpd,咱们手动验证下:

  • 第一个b(索引1) + 密钥a(索引0) = 1 → c
  • 第二个o(索引14) + 密钥b(索引1) =15 → p
  • 第三个b(索引1) + 密钥c(索引2) =3 → d

对照检查你的代码

  1. 先确认你调用了加密函数并且打印了结果,这是最容易忽略的点
  2. 检查字符转换逻辑:是不是把字母正确转成了0-25的范围,而不是直接用原始ASCII值相加(直接加会超出字母范围得到不可见字符)
  3. 密钥循环:当明文长度大于密钥时,有没有用取模%来循环密钥索引
  4. 异常处理:如果你的代码遇到非字母字符就崩溃,也会导致没输出,建议加判断只处理字母

如果还是找不到问题,把你的代码贴出来,咱们再一起揪bug!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:05:28