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

Python实现海盗文转换时如何保持单词末尾标点位置不变

海盗文转换代码修复方案

问题原因

原代码没有对单词的字母部分和末尾标点做拆分,直接对完整单词执行首字母移动逻辑,导致标点被错误插入到转换后的文本中间,不符合预期输出要求。

解决思路

  1. 预先定义需要识别的标点集合:.,:;?!
  2. 对每个拆分后的单词,从后向前遍历分离出末尾的连续标点,以及前面的纯字母内容
  3. 仅对纯字母内容执行转换逻辑:首字母移到末尾,拼接后缀arg
  4. 转换完成后,将之前分离的标点拼接在转换后内容的末尾
  5. 所有单词处理完成后用空格拼接得到最终结果

修复后代码

def pirate(s):
    # 定义需要处理的标点集合
    punctuations = '.,:;?!'
    word_list = s.split(' ')
    result = []
    for word in word_list:
        # 查找字母和标点的分割索引
        split_pos = len(word)
        while split_pos > 0 and word[split_pos - 1] in punctuations:
            split_pos -= 1
        # 拆分字母部分和末尾标点
        letters_part = word[:split_pos]
        punct_part = word[split_pos:]
        # 转换字母部分
        converted_letters = letters_part[1:] + letters_part[0] + 'arg'
        # 拼接后加入结果
        result.append(converted_letters + punct_part)
    return ' '.join(result)

print(pirate('Hello! how are, you!!'))

运行结果

输入测试用例Hello! how are, you!!时,输出为:elloHarg! owharg reaarg, ouyarg!!,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:15:03