在Python中显示首字母

4 投票
4 回答
19435 浏览
提问于 2025-04-18 03:26

我想让这个功能实现,当一个人输入他们的名字时,只显示名字的首字母,并且首字母要大写,中间用句点隔开。我不知道我写的代码哪里出了问题……请帮帮我!

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

我来解释一下为什么会出现这个问题,而不是直接给你解决方案。

你在用 name,但其实你应该用 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'][1][0] = 'Leigh'[0] = 'L'

所以你只需要用 name_list 而不是 name

first = name_list[0][0]
second = name_list[1][0]
last = name_list[2][0]
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() 创建的列表,然后打印出每个名字部分的第一个字母(大写)。当然,只有当你想要包含每个部分的时候,这个循环才有意义。

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()

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

8

如果你在使用Python 2.x版本,那么你应该把输入的函数从input换成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)

撰写回答