列表上的重复项-在第二项之后插入输出

时间:2019-04-25 09:56:02

标签: python

我有一个进入酒店的人的名单。

  • 如果这是他们的第一个条目,则程序应显示(“ welcome”,名称)
  • 如果是他们的第二个条目,程序应该说(“再次见到你很高兴”,名字)。

我的问题是第二次问候的顺序不正确。 在第二次出现名字后如何插入第二个问候语?

使用

enter = ["David", "Orly", "Neta", "Peleg", "Carol", "Ezra", "Irina", 
         "Orly", "Shir", "Neta", "Sheli", "Neta", "Ezra", "Yosi"]

我的预期输出将是:

Welcome  David
Welcome  Orly
Welcome  Neta
Welcome  Peleg
Welcome  Carol
Welcome  Ezra
Welcome  Irina
Good to see you again Orly
Welcome  Shir
Good to see you again Neta
Welcome  Sheli
Good to see you again Neta
Good to see you again Ezra
Welcome  Yosi

这是我的代码:

enter = ["David", "Orly", "Neta", "Peleg", "Carol", "Ezra", "Irina", "Orly", "Shir", "Neta", "Sheli", "Neta", "Ezra", "Yosi"]

i = 0

for i in enter:
    print ("welcome", i)
    if enter.count(i)>1:
        print("good to see you again",i)

我当前的错误输出:

welcome David
welcome Orly
good to see you again Orly
welcome Neta
good to see you again Neta
welcome Peleg
welcome Carol
welcome Ezra
good to see you again Ezra
welcome Irina
welcome Orly
good to see you again Orly
welcome Shir
welcome Neta
good to see you again Neta
welcome Sheli
welcome Neta
good to see you again Neta
welcome Ezra
good to see you again Ezra
welcome Yosi

2 个答案:

答案 0 :(得分:2)

count会告诉您它们在列表中的次数,但不会告诉您这是否是第一次。建议您将人们添加到集合中,然后再查看它们是否在集合中。

答案 1 :(得分:2)

您要计算的是,整个列表中的名称是否不止一次,而不仅仅是进入事件的一部分,直到现在“发生”。
除此之外,如果某人的计数> 1,则同时打印“ welcome”(欢迎)“很高兴再次见到您”。

这样效果更好:

for i, name in enumerate(enter):
    if name in enter[:i]:
        print("Good to see you again", name)
    else:
        print ("Welcome", name)