在Python中显示首字母
我想让这个功能实现,当一个人输入他们的名字时,只显示名字的首字母,并且首字母要大写,中间用句点隔开。我不知道我写的代码哪里出了问题……请帮帮我!
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 个回答
我来解释一下为什么会出现这个问题,而不是直接给你解决方案。
你在用 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]
这里有一个和你那个差不多的版本。注意,你用的是 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()
创建的列表,然后打印出每个名字部分的第一个字母(大写)。当然,只有当你想要包含每个部分的时候,这个循环才有意义。
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()
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
如果你在使用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)