我正在尝试编写一个基本上要求用户输入5个名字的代码。然后它将创建这些名称的列表,并将其打印出来。随后,它打印列表的排序版本。接下来,代码将在列表中打印第三个名称。在此步骤之后,代码询问用户要更改哪些名称,然后用户输入他们选择替换的名称的新名称。
这应该是输出,例如:
名称为:"Sal", "Jane", "Fred", "Bob", "Cole"
排序后的名称为:"Bob", "Cole", "Fred", "Jane", "Sal"
列表中的第三个名称是:"Fred"
(这将是排序列表中的第三个名称)
名称为:"Bob", "Joe", "Fred", "Jane", "Sal"
(假设用户选择替换第二个名称。
到目前为止,这就是我对代码的要求:
name_list = input ("Please list 5 names here:")
name_list = name_list.split()
name_list = [name_list]
print ("The names in your list are:", name_list)
print ("The sorted list is:", name_list)
print(name_list[2:3])
我遇到的问题是一个,我无法弄清楚为什么排序列表不排序"排序"正确,其次,最后一行应打印出第三个名称,但打印[]
代替。
答案 0 :(得分:3)
首先,在打印排序列表之前,您没有对列表进行排序,您应该在打印排序列表之前调用name_list.sort()
。
其次,name_list[<start>:<end>]
打印出从<start>
索引开始并以<end> - 1
索引结束的列表,因此您将获得name_list[2:3]
的空列表。你应该改为name_list[2]
。
答案 1 :(得分:2)
它没有排序,因为你没有对它进行排序,你只是把它放在另一个列表中。只需拨打name_list.sort()
即可。
切片[2:3]
无效,因为在调用name_list = [name_list]
之后,它是一个包含单个元素的列表,它本身就是一个名称列表。此列表在索引2中没有元素,因此当您对其进行切片时会返回一个空列表。
答案 2 :(得分:1)
name_list=input("enter the list of names ")
name_list.sort()
print "sorted name list is ",name_list
print "Third name is ",name_list[2:3]
item= input("enter the name to be modified ")
print "position of the name to be modified is",name_list.index(item)
print("enter a name to modify "+item+ "!")
newname= input("name: ")
position=name_list.index(item)
name_list[position]=newname
name_list.sort()
print"modifified list is ",name_list
答案 3 :(得分:0)
这应该有用。
name_list = input ("Please list 5 names here:")
name_list = name_list.split()
print ("The names in your list are:", name_list)
print ("The sorted list is:", name_list.sort()) #sorting list
print(name_list[2]) # printing 3rd element of the list as indices start from 0
要找到要替换的元素的索引(比如说“Fred”),你可以这样做:
index_to_be_replaced = name_list.index("Fred")
找到索引后,执行:
name_list[index_to_be_replaced] = new_element to be inserted