如何在python中使用列表进行投票

2024-06-16 08:44:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一个民意测验,作为一个练习,使用用户输入来找出人们想去哪里度假。以下是我目前为止的代码:

done = False
places = []
while done == False:
    dreamvacation = input("What is your dream vacation? ")
    if dreamvacation == "quit":
        for item in places:
            number = places.count(item)
            if number == 1:
                print("{} occured in the list 1 time.".format(item))
            else:
                print("{} occured in the list {} times.".format(item, number))
                while number > 0:
                    places.remove(item)
                    number -= 1
        done = True
    places.append(dreamvacation)

基本上,它会进行投票,每次有人输入内容时,它都会将其添加到列表中。然后,当有人说“退出”时,它会计算项目数,并根据度假地点发生的次数说出不同的话。如果它发生多次,我会在使用while循环计数后删除其他重复项。但是,当它删除重复项时,整个列表会移动,索引点向前移动,从而跳过一个点。例如:

^{pr2}$

计数后,两个a都将被删除,索引位置将向前移动:

[b,c(index is here)]

如何使索引位置在列表移动时保持在同一位置?在

如果我能做到这一点,那么我可以让我的程序删除重复和单数后的字母计数。在


Tags: theinfalsenumber列表ifisitem
1条回答
网友
1楼 · 发布于 2024-06-16 08:44:10

您不需要删除places的条目。这只会让跟踪变得困难。请看下面的例子。我也对代码进行了一点重新组织:

done = False
places = []

# user input stage
while not done:
    dream_loc = input('where to go? ')
    if dream_loc == 'quit':
        done = True
    else:
        places.append(dream_loc)

# counting stage
for loc in set(places):
    count = places.count(loc)
    if count == 1:
        print("{} occured in the list 1 time.".format(loc))
    else:
        print("{} occured in the list {} times.".format(loc, count))

相关问题 更多 >