为什么它显示我所有输入的重复?

问题描述:

pres = ["Kennedy", "Lincoln", "Washington", "Trump"] 

for presidents in pres: 
    print ("%s" % presidents) 

add = input("Please enter a president: ") 
if add not in pres: 
    pres.append(add) 
pres.insert(-1,add) 
add = input("Please enter a president: ") 
if add not in pres: 
    pres.append(add) 
pres.insert(-1,add) 
add = input("Please enter a president: ") 
if add not in pres: 
    pres.append(add) 
pres.insert(-1,add) 
add = input("Please enter a president: ") 
if add not in pres: 
    pres.append(add) 
pres.insert(-1,add) 
print (pres) 

这个程序是否也正确覆盖了这个问题:编写一个程序,其中包含一个名单,其中包含四个美国总统的名字。使用任何你想要的总统。然后,运行一个循环,将四位总统添加到列表中。以列表作为唯一参数调用另一个函数。第二个函数应该对列表进行排序,然后循环遍历列表,以便按照自己的路线打印每个总统的姓名。为什么它显示我所有输入的重复?

例如它表明我的输出:

Please enter a president: obama 
Please enter a president: eisenhower 
Please enter a president: truman 
Please enter a president: obama 
['Kennedy', 'Lincoln', 'Washington', 'Trump', 'obama', 'obama', 'eisenhower', 'eisenhower', 'truman', 'obama', 'truman'] 
+3

它显示重复,因为您要添加两次 - 首先使用'pres.append(add)',然后使用'pres.insert(-1,add)'。您不需要最后的声明,因为如果总统不在列表中,您已经添加了该声明。 – AKS

add = input("Please enter a president: ") 
if add not in pres: 
    pres.append(add) #adding president if name is not present. 
pres.insert(-1,add) #adding president again(doesn't matter if present or not) 

所以删除第二个插件。

add = input("Please enter a president: ") 
if add not in pres: 
    pres.append(add) 

而且,你必须运行一个循环再增加四个总统这样:

For i in range(4): 
    add = input("Please enter a president: ") 
    if add not in pres: 
     pres.append(add); 
    else: 
     i = i-1; #to add president, not already present. 

最后,创建一个函数并通过总统的名字作为参数,使用排序功能(使用排序( )或排序())并打印列表。

希望得到这个帮助。