Python 中的这个函数有一个小问题,它应该返回字符串中每个单词的第一个字母大写,其他所有字母都小写:
def titleize(phrase):
split_phrase = phrase.split()
for word in split_phrase:
word.capitalize()
return ' '.join(split_phrase)
titleize('oNLy cAPITALIZe fIRSt')
-> oNLy cAPITALIZe fIRSt
很明显,问题在于被拆分的短语(我认为)的循环,我怀疑它不是变异而是创造了一些新的东西,但我一直在努力修复它。
答案 0 :(得分:9)
我可以建议使用内置的 str.title()
函数吗?
def titleize(phrase):
capitalize_first = phrase.title()
return capitalize_first
print(titleize('oNLy cAPITALIZe fIRSt'))
输出:
Only Capitalize First
答案 1 :(得分:3)
您没有在任何地方分配结果——split_phrase
变量在任何时候都不会改变。
您可以按照@pythonanthrop 的建议使用 str.title()
,或使用 list comprehension 来简化您当前的方法:
def titleize(phrase):
return ' '.join([word.capitalize() for word in phrase.split()])
原始代码的更正版本可能如下所示:
def titleize(phrase):
split_phrase = phrase.split()
result = []
for word in split_phrase:
result.append(word.capitalize())
return ' '.join(result)
这里创建了一个新的 result
列表,并且在每次迭代中,我们将更改的单词附加到列表中。最后,我们 join
并返回新的 result
列表。