几个月前我才刚刚开始学习python,所以我是这里的新手。我试图将字符串中每个单词的首字母大写。当输入是“ hello world”时(例如),它可以很好地工作,但是对于某些输入(例如“ i lovecoding”),它将返回此“ I Love CodIng”,对我而言这没有意义。有人可以向我解释为什么会这样吗?这是代码:
def LetterCapitalize(str):
str = str.replace(str[0], str[0].upper())
for i in range(len(str)):
try:
if str[i] == ' ':
str = str.replace(str[i+1], str[i+1].upper())
else:
continue
except IndexError:
break
return str
答案 0 :(得分:1)
str.replace
方法替换了给定主字符串中所有出现的给定子字符串,因此通过将i
中的字母I
替换为i love coding
,它同时替换了两个{{字符串中的1}}。
由于字符串是不可变的,因此您可以将给定的字符串转换为一个字符列表,以便您可以遍历该列表,如果该字符位于字符串的开头或前面有空格,则将其替换,然后将最后列出一个字符串:
i
使def LetterCapitalize(s):
l = list(s)
for i, c in enumerate(l):
if not i or l[i - 1] == ' ':
l[i] = c.upper()
return ''.join(l)
返回:
LetterCapitalize('i love coding')
答案 1 :(得分:0)
代码的问题是您的第一行,
str = str.replace(str[0], str[0].upper())
在这里,您用大写字母替换了第一个字母,但在随后的所有字符串中也替换了该字母。
示例:
LetterCapitalize("hello hoher")
->'Hello HoHer'
您需要修改字符串中给定位置的单个字符,而不是替换所有出现的字母。您应该尝试使用字符串作为列表。这是一个有用的链接:Change one character in a string?