根据用户输入计算列表中数字的出现

时间:2017-08-05 08:23:10

标签: python list loops infinite-loop

我试图计算列表中数字的出现次数。所以基本上,我有一个清单:

lst = [23,23,25,26,23]

,程序将首先提示用户从列表中选择一个数字。

"Enter target number: "

例如,如果目标是23,那么它将打印出列表中出现23次的次数。

output = 3 #since there are three 23s in the list

这是我尝试过的,它导致了一个无限循环:

lst = [23,23,24,25,23]
count = 0
i = 0

prompt= int(input("Enter target: "))
while i< len(lst)-1:
    if prompt == lst[i]:
        count+=1
        print(count)
    else:
        print("The target does not exist in the list")

我不应该使用任何库,所以我真的很感激,如果有人可以通过指出我写的代码中的错误来帮助我。此外,我更喜欢使用&#39; while循环&#39;因为我练习使用while循环,我至少理解。

5 个答案:

答案 0 :(得分:2)

i为0 始终,这会导致无限循环。考虑在循环结束时将i增加1。

此外,您需要一直到列表的末尾,因此while循环条件应为:

while i < len(lst):

把所有东西放在一起应该这样:

while i< len(lst)a:
    if prompt == lst[i]:
        count+=1
        print(count)
    else:
        print("The target does not exist in the list")
    i += 1

输出:

Enter target:  23
1
2
The target does not exist in the list
The target does not exist in the list
3

顺便说一句,这是一个更加pythonic实现的样子:

lst = [23,23,24,25,23]
count = 0

target = int(input("Enter target: "))
for number in lst:
  if number == target:
    count += 1

print(count)

输出:

Enter target:  23
3

或者如果您想使用内置函数,可以尝试:

print(lst.count(target))
正如smarx指出的那样。

答案 1 :(得分:1)

你应该在循环结束后打印,而不是每个循环

lst = [23,23,24,25,23]
count = 0
i = 0

prompt= int(input("Enter target: "))
while i< len(lst):
    if prompt == lst[i]:
        count+=1
    i+=1

if count>0:
    print(count)
else:
    print("The target does not exist in the list")

答案 2 :(得分:1)

您可以使用count执行此任务:

lst = [23,23,24,25,23]

prompt= int(input("Enter target: "))
cnt = lst.count(prompt)
# print(cnt)
if cnt:
  print(cnt)
else:
  print("The target does not exist in the list")

输出

Enter target: 23
3
Enter target: 3
The target does not exist in the list

答案 3 :(得分:1)

您可以使用collections.Counter来达到您想要的效果。例如:

>>> from collections import Counter

>>> lst = [23,23,25,26,23]
>>> my_counter = Counter(lst)
#              v element for which you want to know the count
>>> my_counter[23]
3

official document中所述:

  

Counter是用于计算可哈希对象的dict子类。它是一个   无序集合,其中元素存储为字典键和   他们的计数存储为字典值。计数是允许的   任何整数值,包括零或负数。柜台班   类似于其他语言的包或多重集。

答案 4 :(得分:1)

您可以尝试使用filter

>>> lst = [23,23,24,25,23]
>>> prompt= int(input("Enter target: "))
Enter target: 23
>>> len(filter(lambda x: x==prompt, lst))
3

>>> prompt= int(input("Enter target: "))
Enter target: 24
>>> len(filter(lambda x: x==prompt, lst))
1