Python代码,.rstrip不工作?

2024-09-24 06:26:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里搜索了答案,并尝试实现了这些答案,但我认为我遗漏了一些小细节。我有一个非常短的python代码,用于一个程序,它应该返回带有人员输入周期的初始值(对于他们的全名)。例如,输入是Atticus LeonardBeasley,输出应该是

A.L.B.

但我却得到了:

^{pr2}$

这是我的代码:

^{pr3}$

Tags: 答案代码程序人员细节遗漏pr2pr3
2条回答

我认为你可以用一种更简单和“更像Python”的方式来做。在

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

print(''.join([ch[0].upper() + '.' for ch in full_name.split()]))

解释

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

^{pr2}$

现在,您尝试验证第一个字母是否是uppercase,但是如果用户没有uppercase输入他的名字,那么您的函数就不能工作了。一个更简单的解决方案是提取单词ch[0]的第一个字母并自动添加一个uppercase:ch[0].upper()

也许一行代码的解决方案令人困惑,但是当解决方案易于阅读时,大多数python开发人员使用^{}循环而不是{}循环。在

编辑

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

一个好的开始方法是使用doctests,因为它强迫您描述函数的功能。即使你认为这是浪费时间,但当你的程序越来越大时,它有助于克服许多问题。如果你想写你的第一篇文章,我很乐意帮助你

仅供参考,您可以使用splitjoin来完成此操作:

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()

或者使用列表理解:

^{pr2}$

相关问题 更多 >