Python代码.rstrip不是';不行吗?
我在这里搜索了答案,并尝试实现它们,但我认为我遗漏了一些小细节。我有一个非常简短的python代码,用于一个程序,该程序应该返回带有句点的人名输入首字母(他们的全名)。例如,输入是Atticus Leonard Beasley,输出应该是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
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开发人员在解决方案易于阅读时,会使用overfor
循环
编辑
还有一件事,即使您正在编写一个简单的函数,比如打印姓名的首字母,您也应该相应地编写测试
一个好的开始方式是使用,因为它迫使您描述您的函数的功能。即使你认为这是浪费时间,但当你的程序越来越大时,它有助于克服许多问题。如果您想尝试编写您的第一个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