Python字符串长单词反转异常:仅单个符合条件单词被反转
问题原因
你的代码只反转了最后一个符合条件的单词,核心问题有两个:
- 循环过程中,
word和words变量会被最后一次循环的内容覆盖。比如遍历到fellow时,变量存的是反转后的wollef和原词fellow,但接着遍历到warriors时,这两个变量就被替换成sroirraw和warriors,最后只执行了一次替换操作,自然只有最后一个单词被反转。 - 直接调用原句子的
replace方法不够可靠:万一原句子里有重复单词,会错误替换所有匹配项,而且没法批量处理所有需要反转的单词。
解决方法
正确思路是:拆分句子为单词列表,逐个判断处理,最后把处理后的单词重新拼接成句子。
修改后的代码:
def spin_words(sentence): processed_words = [] for word in sentence.split(): if len(word) >= 5: processed_words.append(word[::-1]) else: processed_words.append(word) return ' '.join(processed_words) print(spin_words('Hey fellow warriors')) # 输出:Hey wollef sroirraw
也可以用更简洁的列表推导式实现:
def spin_words(sentence): return ' '.join([word[::-1] if len(word)>=5 else word for word in sentence.split()])
这样就能批量处理所有符合长度要求的单词,不会出现只反转最后一个的问题。
内容的提问来源于stack exchange,提问作者bunny
相关产品推荐
相关产品推荐

