首页 > 解决方案 > 如何在 CodeHS 8.4.12:图书馆员,第 2 部分中仅打印姓氏?

问题描述

这就是我应该做的:在图书管理员练习中,您要求用户输入五个姓氏,然后按排序顺序打印这些名字的列表。

在本练习中,您将要求用户提供五个全名。您仍然应该按排序顺序打印姓氏列表。

每次从用户那里检索姓名时,都应该使用 split 方法和正确的索引来仅提取姓氏。然后,您可以将姓氏添加到您最终将排序和打印的姓氏列表中。

以下是您的程序运行示例的样子:

Name: Maya Angelou
Name: Chimamanda Ngozi Adichie
Name: Tobias Wolff
Name: Sherman Alexie
Name: Aziz Ansari
['Adichie', 'Alexie', 'Angelou', 'Ansari', 'Wolff']

这是我现在的代码:

name_1 = input("Name: ")
name_1.split()
name_2 = input("Name: ")
name_2.split()
name_3 = input("Name: ")
name_3.split()
name_4 = input("Name: ")
name_4.split()
name_5 = input("Name: ")
name_5.split()
my_list = [name_1[-1], name_2[-1], name_3[-1], name_4[-1], name_5[-1]]
my_list.sort()
print my_list

我的代码现在只打印最后一个字母,而不是最后一个单词。如何让我的代码打印最后一个单词?

标签: python

解决方案


你的问题是在一个只接受该字符串的最后一个字母的字符串上执行 some_string[-1] 。解决方案是在字符串上使用 some_string.split() 将其按空格拆分为值列表,然后使用 some_list[-1] 获取该列表的最后一个元素。

names_list = []
for i in range(0, 5):
    names_list.append(input("Name: "))
sorted_last_names = sorted([name.split()[-1] for name in names_list])
print(sorted_last_names)

推荐阅读