试图在Python中显示缩写

时间:2014-04-19 22:17:37

标签: python python-3.x

我试图这样做,以便当一个人输入他们的名字时,只有首字母显示大写并以句点分隔。我无法弄清楚我写的这段代码有什么问题......帮帮忙!

def main():

name = input('Type your name and press ENTER. ')
name_list = name.split()

print(name_list)

first = name[0][0]
second = name[1][0]
last = name[2][0]

print(first,'.', second,'.')

main()

4 个答案:

答案 0 :(得分:8)

如果您使用的是Python 2.x,则应该为raw_input交换输入。这是一个更快的方法来实现你的目标,假设你使用的是Python 2.x:

def main():
    full_name = raw_input('Type your name and press ENTER. ')
    initials = '.'.join(name[0].upper() for name in full_name.split())
    print(initials)

答案 1 :(得分:0)

def main():


    name = input('Type your name and press ENTER. ')
    name_list = name.split()

    print(name_list)

    first = name_list[0][0]
    second = name_list[1][0]
    last = name_list[2][0]

    print(first.upper(),'.', second.upper(),'.', last.upper()) 


main()

答案 2 :(得分:0)

这是一个类似于你的版本。 请注意,您使用的是name而不是name_list,以及一些硬编码索引。

def main():

    name = input('Type your name and press ENTER. ')
    name_list = name.split()

    for part in name_list:
        print(part[0].upper() + ". ", end="")
    print()

main()

它循环使用split()创建的列表,并打印名称每个部分的第一个字母(大写)。 如果你想要包含每个部分,那么循环才有意义。

答案 3 :(得分:0)

我会尝试解释它为什么会发生而不只是给你解决方案。

name是您打算使用的时候,您正在使用name_list而不是name_list

name

'Amanda Leigh Blount' = 'Amanda Leigh Blount'

但是name_list = name.split() = ['Amanda', 'Leigh', 'Blount']


所以你只能在中间/姓氏上获得两者的差异。

第一个名字对于两者都是等价的:

name[0][0] == name_list[0][0]

左侧与第一个字母的第一个字母相匹配:

'Amanda Leigh Blount'[0][0] = 'A'[0] = 'A'

右侧与第一个单词的第一个字母相匹配。

['Amanda', 'Leigh', 'Blount'][0][0] = 'Amanda'[0] = 'A'


但是对于第二个:

name[1][0] != name_list[1][0]

因为第一个&第二是:

'Amanda Leigh Blount'[1][0] = 'm'[0] = 'm'

['Amanda', 'Leigh', 'Blount'][0][0] = 'Leigh'[0] = 'L'

所以只需使用name_list代替name

first = name_list[0][0]
second = name_list[1][0]
last = name_list[2][0]