Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在Python中显示首字母_Python_Python 3.x - Fatal编程技术网

尝试在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]