(Python)中的单词大写?
问题描述:
我正在试着写一些东西来把一个句子中的每个单词都大写。它工作正常,如下:(Python)中的单词大写?
print " ".join((word.capitalize() for word in raw_input().strip().split(" ")))
如果输入的是“世界你好”,输出将是:
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())
+0
我试过了。但它会用数字开头的词(如:3g),我不想这样做。 –
答
字符串是immutable
,你要更新这是不poassib相同的值乐。
创建一个新字符串并以此方式更新。
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(' ')])
这将解决你的问题。
在您的第二个程序中,您将s的单词拷贝大写。不是s本身的话。 – SvbZ3r0
字符串是不可变的,所以字符串方法不能修改原始字符串,它们总是返回一个新的字符串。你的第二个代码片段没有保存那个新的字符串。顺便说一句,有一种更简单的方式来利用字符串中的每个单词:使用'str.title'方法,例如''hello world'.title()'。 –