繁体   English   中英

如何在 CodeHS 8.4.4: How Many Names 中打印名称?

[英]How do I print the names in CodeHS 8.4.4: How Many Names?

这是我应该做的:

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

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

编写一个程序,询问用户他们有多少个名字。 (例如,如果他们有一个名字、两个中间名和一个姓氏,他们将输入 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]

您的问题在此行中:

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

当您有超过 1 个中间名时, namelist[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 将您的列表转换为可以连接和打印的字符串。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM