我试图写一些东西来把句子中的每个单词都用来大写。它工作正常,如下:
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
那有什么不对,为什么结果不一样?!谢谢。
答案 0 :(得分:4)
你的代码中的问题是字符串是不可变的,你试图改变它。因此,如果您不使用循环,则必须创建新变量。
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())
答案 1 :(得分:0)
字符串是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(" ")])
答案 2 :(得分:0)
print ' '.join([i.capitalize() for i in raw_input('Enter text here:').split(' ')])
这将解决您的问题。