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

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

===============>>#1 票数: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)

===============>>#2 票数: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()

===============>>#3 票数: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()创建的列表,并打印名称的每个部分的第一个字母(大写)。 如果你想要包含每个部分,那么循环才有意义。

===============>>#4 票数:0

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

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

'Amanda Leigh Blount' = 'Amanda Leigh Blount' 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]

  ask by user3534918 translate from so

未解决问题?本站智能推荐: