这是我应该做的:
本练习的第一部分与“多少个名字?”的第一部分相同。在“控制流”模块中。
有些人只有名字和姓氏。有些人也有中间名。有些人有五个中间名。
编写一个程序,询问用户他们有多少个名字。 (例如,如果他们有一个名字,两个中间名和一个姓氏,则键入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]
答案 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]))