【问题标题】:Find dominant number(number that repeat at least n /2 times)查找主导数(至少重复 n / 2 次的数)
【发布时间】: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 次”是什么意思?第一个输入是我们输入了多少个数字。还没学过收藏。计数器,有没有其他更简单的方法?

标签: python list for-loop


【解决方案1】:

您可以遍历numbers 的集合并计算每个数字出现的次数,然后再次遍历该计数器以找到占主导地位的数字:

dominant_numbers = [k for k, v in [[num, numbers.count(num)] for num in set(numbers)] if v >= (n+1)//2]

【讨论】:

  • 谢谢。我解决了,我只是对贴出的代码做了一些更改。
【解决方案2】:

解决方案:

brojevi = []
n = int(input("Koliko brojeva zelite da unesete? "))

for i in range(n):
    brojevi.append(int(input(f"Unesite {i+1}. broj: ")))

print(brojevi)

for e in brojevi:
    brojac = 0
    for j in brojevi:
        if e == j:
            brojac += 1
    if brojac >= n//2:
        print(e)
        break

【讨论】:

    猜你喜欢
    • 2011-04-14
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2015-12-09
    • 2023-03-10
    相关资源
    最近更新 更多