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

请求编写将输入文本按字母后移一位转换为密文的Python程序

字母移位加密的正确实现方案

需求是将输入文本的每个字母替换为字母表中的下一个字母(例如"apple"输出"bqqmf"),以下是两种实现方案:

基础实现(推荐,无需额外库)

这种方式用Python基础语法就能完成,简洁高效:

def shift_cipher(text):
    result = []
    for char in text:
        if char.islower():
            # 小写字母循环移位:z转为a
            result.append(chr((ord(char) - ord('a') + 1) % 26 + ord('a')))
        elif char.isupper():
            # 可选处理大写字母:Z转为A
            result.append(chr((ord(char) - ord('A') + 1) % 26 + ord('A')))
        else:
            # 非字母字符原样保留
            result.append(char)
    return ''.join(result)

# 使用示例
input_text = input("Enter: ")
print(shift_cipher(input_text))

原代码问题分析

你之前用pandas的尝试存在几个明显问题:

  • 用pandas处理简单字符串转换属于过度设计,徒增复杂度
  • 循环范围range(0, len(s)+1)会导致索引越界(Series索引从0到len(s)-1)
  • b[i=1]是语法错误,且逻辑错误——你需要根据原字符的位置取后一位,而非固定取b[1]
  • 没有处理字母循环(比如z要转为a)的场景

若坚持用pandas实现

如果一定要用pandas完成,可参考以下代码:

import pandas as pd

def shift_with_pandas(text):
    # 构建字母映射表:每个字母对应下一个字母,z→a
    alpha = 'abcdefghijklmnopqrstuvwxyz'
    shift_map = {c: alpha[(i+1)%26] for i, c in enumerate(alpha)}
    # 补充大写字母的映射
    shift_map.update({c.upper(): alpha[(i+1)%26].upper() for i, c in enumerate(alpha)})
    
    # 将输入转为Series并替换
    char_series = pd.Series(list(text))
    shifted_series = char_series.replace(shift_map)
    # 转回字符串
    return ''.join(shifted_series.tolist())

# 使用示例
input_text = input("Enter: ")
print(shift_with_pandas(input_text))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:30:57