尝试在Python中显示首字母
我试着这样做,当一个人输入他们的名字时,名字的首字母大写,并用句号分隔。我不知道我写的这段代码有什么问题。。。请帮忙尝试在Python中显示首字母,python,python-3.x,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,'.'
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()
如果您使用的是Python2.x,那么应该将输入交换为原始输入。假设您使用的是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)
这是一个类似于你的版本。 请注意,您使用的是
name
而不是name\u 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()
创建的列表上循环,并打印名称每个部分的第一个字母(大写)。
当然,只有当您希望包含每个部分时,循环才有意义。我将尝试解释它发生的原因,而不仅仅是给出解决方案 当您打算使用
name\u list
时,您使用的是name
而不是name\u list
name
for'Amanda Leigh Blount'='Amanda Leigh Blount'
但是name\u list=name.split()
因此,这两个词的区别仅在于中间名/姓
第一个名称对于以下两种情况都是等效的:
name[0][0]==name\u list[0][0]
左侧与第一个字母的第一个字母匹配:
'Amanda Leigh Blount'[0][0]='A'[0]='A'
右侧与第一个单词的第一个字母匹配
['Amanda'、'Leigh'、'Blount'][0][0]='Amanda'[0]='A'
但对于第二个问题:
名称[1][0]!=姓名列表[1][0]
因为第一个和第二个是:
'Amanda Leigh Blount'[1][0]='m'[0]='m'
['Amanda','Leigh','Blount'][0][0]='Leigh'[0]='L'
所以只需使用name\u list
而不是name
:
first = name_list[0][0]
second = name_list[1][0]
last = name_list[2][0]
您使用的是Python2.x还是Python3.x?首先使用name\u list
而不是name
。你创造它是有原因的。就在。。。谢谢凯瑟。。。我现在觉得自己哑口无言出去。。。您假设所有人都有一个中间名,并且他们只有一个中间名。如果有人没有中间名或两个中间名(或只有像Cher或Prince这样的名字),你的密码就会被破解。我以前有过这种情况,当我用“Amanda Leigh Blount”这个名字运行它时,它会给我一个错误。M.A.显然不是首字母。@user3534918,我刚刚测试过这个名字,在我的终端有效。OP说python 3.3。(否则答案很好!)
first = name_list[0][0]
second = name_list[1][0]
last = name_list[2][0]