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
相关产品推荐
相关产品推荐

