所以这不是一个非常困难的问题,我一直在努力尝试解决。以下是我的示例代码:
import sys
for s in sys.stdin:
s = s[0:1].upper() + s[1:len(s)-1] + s[len(s)-1:len(s)].upper()
print(s)
这段代码只将第一个字母大写,而不会将最后一个字母大写。有什么建议吗?
sys.stdin
将给您输入文本的每一行组成的字符串。所以您的逻辑不会大写每个单词。strip()
,则会看到最后一个字符被大写:import sys
for s in sys.stdin:
s = s.strip()
s = s[0:1].upper() + s[1:len(s)-1] + s[len(s)-1:len(s)].upper()
print(s)
@Calculuswhiz的回答向您展示了如何处理输入中每个单词的大写。
首先,您需要将标准输入的行拆分,然后可以使用map
函数对每个单词进行操作。如果不进行拆分,则在for
循环中仅逐行读取标准输入。
#!/usr/bin/python
import sys
def capitalize(t):
# Don't want to double print single character
if len(t) is 1:
return t.upper()
else:
return t[0].upper() + t[1:-1] + t[-1].upper()
for s in sys.stdin:
splitLine = s.split()
l = map(capitalize, splitLine)
print(' '.join(l))
capitalize
方法来处理 str
,这将完全满足你的需求,然后再单独将最后一个字母大写,例如:my_string = my_string.capitalize()
my_string = my_string[:-1] + my_string[-1].upper()
stdin
而不是input()
? - Tomerikoo