用于编写首字母缩略词的Python编码缺陷

时间:2017-12-08 16:43:05

标签: python

下面写的代码应该给出如下结果。例如,如果输入是'Lion head and Snake tail',则输出应为 - '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' )

3 个答案:

答案 0 :(得分:1)

您可以更正您的代码。您应该使用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

答案 1 :(得分:0)

您可以将str.joingenerator-expression一起用于问题的单行解决方案:

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

为什么?

如果我们从生成器内部开始,我们将遍历name.split().split的{​​{1}}方法返回通过拆分传入方法的内容找到的所有不同str的{​​{1}}。默认字符是一个空格,因为我们想要单词,这对我们来说很好。

然后我们对此list中的每个单词strings说,请将字符串中的第一个字符改为:i。然后,我们使用list将其转换为大写。

然后,最后一步是将所有这些字符连接在一起,这是通过i[0]方法完成的。

答案 2 :(得分:0)

简单地:

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

对python 3使用input(''),对python 2使用raw_input('')