【发布时间】:2022-01-21 00:38:21
【问题描述】:
家庭作业:
编写一个程序,要求用户输入数字 n,然后程序要求用户输入 n 个数字。程序需要在列表中找到显性数字。显性数字是至少重复的数字列表中的 n/2 次。
我的想法是创建一个开始为 0 的计数器。如果计数器为 = 或 > n//2,我们将该数字添加到列表中。但这个想法并没有像我想的那样工作。
代码:
numbers = []
n = int(input("Type number: "))
for i in range(n):
numbers.append(int(input("Type number: ")))
print(numbers)
counter = 0
dominant = []
for e in numbers:
for i in range(n):
if i == e:
counter += 1
if counter >= n // 2:
dominant.append(i)
print(dominant)
附注如果没有占主导地位的数字,则没有任何说明,因此我们将跳过该部分。
【问题讨论】:
-
“但这个想法并没有像我想象的那样奏效。”——请更详细地描述您遇到的问题。
-
你能编辑你的问题并描述一个问题吗?
-
“在列表中至少重复 n/2 次”是什么意思? 2 在 [2, 2] 中重复了多少次——一次还是两次?如果“重复 n 次”表示“出现 n+1 次”,那么您可以使用 en.wikipedia.org/wiki/… 。否则,您必须使用更普通的方法(例如使用
collections.Counter,然后简单地查找出现最多的元素)。 -
[(x, count)] = collections.Counter(numbers).most_common(1)为您提供最常见的元素及其出现的次数。请注意,在您编写问题时,可能有两个主要数字,例如在 [1, 2, 1, 2] 中,1 和 2 出现 4/2 次。 -
““在列表中至少重复 n/2 次”是什么意思?第一个输入是我们输入了多少个数字。还没学过收藏。计数器,有没有其他更简单的方法?