2024-09-24 06:26:14 发布
网友
我在这里搜索了答案,并尝试实现了这些答案,但我认为我遗漏了一些小细节。我有一个非常短的python代码,用于一个程序,它应该返回带有人员输入周期的初始值(对于他们的全名)。例如,输入是Atticus LeonardBeasley,输出应该是
A.L.B.
但我却得到了:
这是我的代码:
我认为你可以用一种更简单和“更像Python”的方式来做。在
full_name = input("Enter your first, middle, and last name: ") print(''.join([ch[0].upper() + '.' for ch in full_name.split()]))
解释
不必对名称的每个字母执行for循环,而是可以使用split()函数来确保在没有多余空格的情况下处理每个单词。在
for
现在,您尝试验证第一个字母是否是uppercase,但是如果用户没有uppercase输入他的名字,那么您的函数就不能工作了。一个更简单的解决方案是提取单词ch[0]的第一个字母并自动添加一个uppercase:ch[0].upper()
uppercase
ch[0]
ch[0].upper()
也许一行代码的解决方案令人困惑,但是当解决方案易于阅读时,大多数python开发人员使用^{}循环而不是{}循环。在
编辑
还有一件事,即使您正在编写一个简单的函数,例如打印名称的首字母,您也应该始终相应地编写测试。在
一个好的开始方法是使用doctests,因为它强迫您描述函数的功能。即使你认为这是浪费时间,但当你的程序越来越大时,它有助于克服许多问题。如果你想写你的第一篇文章,我很乐意帮助你
仅供参考,您可以使用split和join来完成此操作:
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()
或者使用列表理解:
我认为你可以用一种更简单和“更像Python”的方式来做。在
解释
不必对名称的每个字母执行
^{pr2}$for
循环,而是可以使用split()函数来确保在没有多余空格的情况下处理每个单词。在现在,您尝试验证第一个字母是否是
uppercase
,但是如果用户没有uppercase
输入他的名字,那么您的函数就不能工作了。一个更简单的解决方案是提取单词ch[0]
的第一个字母并自动添加一个uppercase
:ch[0].upper()
也许一行代码的解决方案令人困惑,但是当解决方案易于阅读时,大多数python开发人员使用^{} 循环而不是{}循环。在
编辑
还有一件事,即使您正在编写一个简单的函数,例如打印名称的首字母,您也应该始终相应地编写测试。在
一个好的开始方法是使用doctests,因为它强迫您描述函数的功能。即使你认为这是浪费时间,但当你的程序越来越大时,它有助于克服许多问题。如果你想写你的第一篇文章,我很乐意帮助你
仅供参考,您可以使用
split
和join
来完成此操作:或者使用列表理解:
^{pr2}$相关问题 更多 >
编程相关推荐