Python编写首字母缩写的代码缺陷

2024-04-26 04:30:21 发布

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

下面编写的代码应该给出如下结果。例如,如果输入是“狮子头和蛇尾”,则输出应该是-“LHAST”。你知道吗

结果是“LLLLL”。请检查我的密码。如果可能,请建议更好的做法,并帮助我更好的代码。你知道吗

代码如下:

#ask for Input
name = input('Input words to make acroname :')

#make all in caps
name = name.upper()

#turn them in list 
listname = name.split()

#cycle through
for namee in listname:
    #Get the first letter & type in same line
    print(name[0],end="")
print()

input (' press a key to move out' )

Tags: to代码namein密码forinputmake
3条回答

简单地说:

print ''.join([P[0] for P in input('Input words to make acroname :').upper().split()])

对python3使用input(''),对python2使用raw_input('')

您可以将str.joingenerator-expression结合使用,获得问题的单行解决方案:

>>> name = "Lion head and Snake tail"
>>> ''.join(i[0].upper() for i in name.split())
'LHAST'

为什么?

如果我们从生成器内部开始,我们将遍历name.split()。一个str.split方法返回一个list所有不同的stringslist,这些不同的strings是通过对传递到该方法的内容进行拆分而找到的。默认字符是一个空格,因为我们需要单词,这对我们来说很好。你知道吗

然后我们说对于这个list中的每个单词i,从字符串中取第一个字符:i[0]。然后用str.upper()将其转换为大写。你知道吗

然后,最后一步是将所有这些字符连接在一起,这是通过str.join方法完成的。你知道吗

您可以更正代码。你应该使用print(name[0])而不是print(namee[0]),因为你想打印单词的第一个字母,而不是原来的名字。你知道吗

一个好的做法是将变量命名为更具描述性的名称,以避免此类拼写错误。你知道吗

如果您想在同一行中打印首字母缩略词,我建议您使用下面的代码获得具有所需输出的变量acronym

phrase = raw_input('Input words to make acronym:')
phrase = phrase.upper()
list_words = phrase.split()
acronym = [word[0] for word in list_words]
acronym = "".join(acronym)
print acronym

相关问题 更多 >