如何将字符串的第一个和最后一个字母大写?

3

所以这不是一个非常困难的问题,我一直在努力尝试解决。以下是我的示例代码:

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)

这段代码只将第一个字母大写,而不会将最后一个字母大写。有什么建议吗?


这个回答解决了你的问题吗?理解切片符号 - Tomerikoo
是的,第一个和最后一个字母。只有第一个字母是大写的。 - Lostsoulaside
你为什么要使用 stdin 而不是 input() - Tomerikoo
3个回答

1
您正在处理行而不是单词,因为迭代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的回答向您展示了如何处理输入中每个单词的大写。


0

首先,您需要将标准输入的行拆分,然后可以使用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))

在线试用!


-1
你可以直接使用 capitalize 方法来处理 str,这将完全满足你的需求,然后再单独将最后一个字母大写,例如:
my_string = my_string.capitalize()
my_string = my_string[:-1] + my_string[-1].upper()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接