将 (Python) 中的单词大写?

Capitalizing words in (Python)?

我试图写一些东西来将句子中的每个单词大写。而且效果很好,如下:

print " ".join((word.capitalize() for word in raw_input().strip().split(" ")))

如果输入是 'hello world',输出将是:

    Hello World

但我试着用不同的方式写成如下:

s = raw_input().strip().split(' ')
for word in s:
    word.capitalize()
print ' '.join(s)

它的输出是错误的:

    hello world

这有什么问题,为什么结果不一样?!谢谢。

你的代码中的问题是字符串是不可变的,而你正试图改变它。因此,如果您不想使用循环,则必须创建新变量。

s = raw_input().strip().split(' ')
new_s = ''
for word in s:
    new_s += s.capitalize()
print new_s

或者,如果您使用 enumerate 遍历列表并更新 s:

s = raw_input().strip().split(' ')
for index, word in enumerate(s):
    s[index] = .capitalize()
print ' '.join(s)

但是将字符串中的单词大写的最佳方法是使用 str.title() - 字符串中单词大写的方法:

s = 'hello word'
print(s.title())

字符串是 immutable 并且您正在尝试更新不可能的相同值。

创建一个新字符串并以这种方式更新。

s = raw_input().strip().split(' ')
st = ''
for word in s:
    st+= word.replace(word,word.capitalize())
print ''.join(st)

或者

print " ".join([i.capitalize() for i in raw_input().strip().split(" ")])
print ' '.join([i.capitalize() for i in raw_input('Enter text here:').split(' ')])

这会解决你的问题。