Python代码.rstrip不是';不行吗?

Python代码.rstrip不是';不行吗?,python,uppercase,strip,Python,Uppercase,Strip,我在这里搜索了答案,并尝试实现它们,但我认为我遗漏了一些小细节。我有一个非常简短的python代码,用于一个程序,该程序应该返回带有句点的人名输入首字母(他们的全名)。例如,输入是Atticus Leonard Beasley,输出应该是 A.L.B. 但我得到的是: A. L. B. 这是我的密码: def main(): full_name = input("Enter your first, middle, and last name: ") for ch in f

我在这里搜索了答案,并尝试实现它们,但我认为我遗漏了一些小细节。我有一个非常简短的python代码,用于一个程序,该程序应该返回带有句点的人名输入首字母(他们的全名)。例如,输入是Atticus Leonard Beasley,输出应该是

A.L.B.
但我得到的是:

A.
L.
B.
这是我的密码:

def main():

    full_name = input("Enter your first, middle, and last name: ")

    for ch in full_name:
        if ch.isupper():
            ch = ch.rstrip('\n')
            print (ch,'.', sep='')

main()

仅供参考,您可以使用
split
join
执行此操作:

def main():

    full_name = input("Enter your first, middle, and last name: ")
    initials = []

    for name in full_name.split():
        initials.append(name[0])

    print('.'.join(initials) + '.')

main()
或使用列表理解:

def main():

    full_name = input("Enter your first, middle, and last name: ")
    print('.'.join(name[0] for name in full_name.split())+'.')

main()

我认为你可以用一种更简单的方式来做

解释

您可以使用函数确保在没有多余空格的情况下处理每个单词,而不是对名称的每个字母执行
for
循环

sentence = "hello world"

for ch in sentence.split():
    print(ch) # hello
    break
现在,您尝试验证第一个字母是否为
大写
,但如果用户输入的姓名没有
大写
,则您的函数无法工作。一个更简单的解决方案是提取单词的第一个字母
ch[0]
,并自动添加一个
大写字母
ch[0].upper()

也许单行程序解决方案令人困惑,但大多数python开发人员在解决方案易于阅读时,会使用over
for
循环

编辑

还有一件事,即使您正在编写一个简单的函数,比如打印姓名的首字母,您也应该相应地编写测试


一个好的开始方式是使用,因为它迫使您描述您的函数的功能。即使你认为这是浪费时间,但当你的程序越来越大时,它有助于克服许多问题。如果您想尝试编写您的第一个
doctest

如果
ch
'A'
,您希望得到什么
'A'.strip('\n'))
未来?
对于全名的ch
永远不应该有一个
\n
作为
ch
,因为
输入将所有输入都带到了新行。我认为你把事情复杂化了。以下是您需要的步骤:使用
split
拆分输入,使用索引获取每个单词的第一个字符,使用
。。join
将这些字符连接在一起使用
end='
在您的
print
通话中。谢谢您马克·迪金森,这正是我所需要的!在列表理解示例中,您忘记将
.split()
函数添加到全名中。@MaxChrétien谢谢!
sentence = "hello world"

for ch in sentence.split():
    print(ch) # hello
    break