【发布时间】:2016-03-16 07:32:04
【问题描述】:
对不起,如果这是重复的,但我还没有找到任何明确的答案。
基本上,我的程序应该像这样大写一个字符串:
'some words'
变成这样:
'Some Words'
这是我的代码:
mystring = "some words"
copy_of_mystring = ""
word = ""
for i in mystring:
if i==" ":
for j in range(1):
#capitalize if my word has more than 1 letter
if len(word) > 1:
word=str.upper(word[0]) + word[1:]
#capitalize if word has only 1 letter
elif len(word)==1:
word=str.upper(word[0])
copy_of_mystring += word + " "
word = ""
else:
word += i
print(copy_of_mystring)
所以基本上我的第一个循环将i 添加到word 直到i 是一个空格。
然后我的第二个循环将开始并大写word并将其添加到copy_of_mystring,这部分正在工作。
这就是我的问题出现的时候。当我的第一个循环“构建”我的最后一个单词时,它当然不会在它之后找到任何空格,所以我的问题来自这种情况:
if i==" ":
我试过这个:
if i==" " or i==mystring[-1]:
但是,在几个字符与最后一个字符相同的字符串中,例如'morgana',它会以这样的方式结束
'Morg N'
那么,有没有办法检查我的角色 i 是否是 mystring 中的最后一个?
P.S:很抱歉,如果这听起来像是一个非常基本的错误,但我仍在学习我们可以用字符串做的所有事情。
【问题讨论】:
-
我认为 my_string.title() 就足够了...
-
你也可以将空格上的字符串拆分成一个数组,数组中每个字符串的第一个数字大写,然后用空格重新连接数组的元素(将数组重组成一个字符串)。
-
退出循环时,
word将包含最后处理的单词。只需大写即可。 -
我不明白你为什么要检查最后一个。你只关心单词的第一个字母
-
因为我只在下一个字符是空格时才将
word大写,但对于最后一个字符则不起作用,因为它后面没有空格。
标签: python python-3.x