Python实现单词第二个字母大写仅返回最后一个单词的问题排查
问题原因
代码的核心问题出在循环内的result赋值逻辑:
- 每次循环都直接用
=给result重新赋值,会直接覆盖上一轮循环的处理结果,所以循环结束后result里只剩最后一个单词的处理结果。 - 除此之外,处理完每个单词后没有保留单词之间的空格,直接拼接会把所有单词连到一起。
修复方案
实现方式1:循环累加(直观易理解)
def capitalize_n(s, n): result = "" for word in s.split(): # 用 += 累加处理后的单词,末尾加空格做分隔 result += word[:n].lower() + word[n:].capitalize() + " " # 去掉末尾多余的空格后返回 return result.rstrip()
实现方式2:列表存储后拼接(性能更优,推荐)
def capitalize_n(s, n): processed_words = [] for word in s.split(): processed_words.append(word[:n].lower() + word[n:].capitalize()) return " ".join(processed_words)
运行验证
调用capitalize_n('hello world', 1),输出结果为:
hEllo wOrld
符合每个单词第二个字母大写的预期需求。
内容的提问来源于stack exchange,提问作者user2034164
相关产品推荐
相关产品推荐

