如何在CodeHS 8.4.4:多少个名称中打印名称?

时间:2019-05-15 16:02:15

标签: python

这是我应该做的:

本练习的第一部分与“多少个名字?”的第一部分相同。在“控制流”模块中。

有些人只有名字和姓氏。有些人也有中间名。有些人有五个中间名。

编写一个程序,询问用户他们有多少个名字。 (例如,如果他们有一个名字,两个中间名和一个姓氏,则键入4。)然后,使用for循环,询问用户每个名字。将名称存储在列表中。

然后,使用切片来分别打印此人的名字,中间名和姓氏。

您的程序示例运行如下:

Number of names: 4
Name: Nora
Name: Stanton
Name: Blatch
Name: Barney
First name: Nora
Middle name(s): ['Stanton', 'Blatch']
Last name: Barney
Your program should work regardless of how many middle names the person has!

提示

索引-1在几个地方可能会派上用场。 您需要使用str函数来打印中间名。

我找到了此问题的正确答案。在这里:

name_amount = int(input("How many names do you have? "))
namelist = []
index = 0
for i in range (name_amount):
    name = input("Name: ")
    namelist.append(name)
    index += 1
print "First name: " + namelist[0]
print "Middle names: " + str(namelist[1:-1])
print "Last name: " + namelist[-1]

2 个答案:

答案 0 :(得分:1)

您的问题在此行中:

print "Middle names: " + namelist[1:-1]

当中间名namelist[1:-1]多于1个时,列表将至少2个长。您在此行中使用的+试图将字符串"Middle Names: "与列表["middlename1","middlename2"]连接起来,Python不知道该怎么做,因此抛出了异常:

TypeError: cannot concatenate 'str' and 'list' objects

要解决此问题并获取所需的中间名(Middle name(s): ['Stanton', 'Blatch'])格式,您需要告诉python使用str()将列表转换为字符串,因此您的行应为:

print "Middle names: " + str(namelist[1:-1])

这将迫使python将您的列表转换为可以连接和打印的字符串。

答案 1 :(得分:0)

还要在要打印的行周围加上括号,例如:

print("Middle names: " + str(namelist[1:-1]))