[英]How to capitalize the first and last letter of a string?
所以这不是一个非常困难的问题,我一直在努力。 这是我的示例代码:
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
将为您提供由您输入的每一行文本组成的字符串。 因此,您的逻辑不会将单个单词大写。
您将字符串的最后一个字符大写的逻辑没有任何问题。 您似乎没有将行尾大写的原因是行尾有一个 EOL 字符。 EOL 的大写是 EOL,因此没有任何变化。
如果您在处理之前在输入行上调用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
function 对每个单词进行操作。 如果不拆分,stdin 只能在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))
您可以只使用str
的capitalize
方法,这将完全满足您的需要,然后将最后一个字母单独大写,例如:
my_string = my_string.capitalize()
my_string = my_string[:-1] + my_string[-1].upper()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.