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

Python字符串处理问题:获取末尾单词及加密函数bug排查

问题1:无需针对索引的if判断获取指定字符串的最后一个单词

直接用Python字符串内置的split()方法分割单词后取末尾元素即可,实现逻辑不需要额外写索引相关的if判断:

def get_last_word(s):
    words = s.split()
    # 若需兼容空输入可加上述判断,无特殊要求可直接返回words[-1]
    return words[-1] if words else ''

示例:输入"How to resolve",输出为resolve。

问题2:加密函数bug排查与实现

核心bug原因

代码实际输出和预期不符的核心问题出在单词提取逻辑:

  • 遍历字符串提取单词的判断条件错误:if str[i] != " " and i + 1 != len(str): 会导致所有单词的最后一个字符、以及整句的最后一个字符都不会被加入word变量。比如第三个单词resolve处理时,最后一个字符e不会被存入word,word实际值为resolv,反转后得到vloser,和你实际输出完全一致。
  • 次要冗余问题:consonants_vowels函数末尾主动拼接了空格,后续单词拼接时又额外加空格,会导致空格冗余、最终输出尾部多空格。

修复后的完整实现(符合题目要求的函数形式)

def encrypt_sentence(msg):
    vowels = "aAeEiIoOuU"
    
    def process_even_word(word):
        # 偶数位置单词处理:辅音在前元音在后,各自保持原有顺序
        consonant_part = ""
        vowel_part = ""
        for c in word:
            if c in vowels:
                vowel_part += c
            else:
                consonant_part += c
        return consonant_part + vowel_part
    
    words = msg.split()
    processed = []
    for idx, word in enumerate(words, start=1):
        if idx % 2 == 1:
            # 奇数位置单词直接反转
            processed.append(word[::-1])
        else:
            processed.append(process_even_word(word))
    return " ".join(processed)

# 测试用例
print(encrypt_sentence("How to resolve"))

运行后输出为woH to evloser,和预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 00:42:03