试图在另一个列表中显示所有低于平均值的数字

Trying to show all numbers lower than the average in another list

对于学校,我们必须制作一个代码,将某个列表的平均值显示到另一个列表中,但由于某种原因,我应该显示较小数字的列表是空的,我不知道这是否可能,但我尝试使用一个额外的变量,它对自身计数 +1

from random import randint

kleiner = []
list = []
teller = 0
aantal = int(input("Hoeveel random getallen wilt u? "))
veelvoud = int(input("Welke veelvoud? "))

while len(list) < aantal:
    getal = randint(1, 100)
    if getal % veelvoud == 0:
        list.append(getal)
gemiddelde = sum(list) / len(list)

while len(list) < aantal:
    if list[teller] < gemiddelde:
        kleiner.append(list[teller])
        teller += 1

print(list)
print(list[::-1])
print(kleiner)

在此先感谢您的帮助。

2 件事:

  • 不要命名变量 list 因为 list 也是一个 python 类型
  • 第二个 while 循环导致了问题,因为列表的长度默认等于 aantal,因为列表已经创建。因此,while 循环中的任何内容都不会执行。相反,您可以在一个简单的 for 循环
  • 中遍历列表

这使得:

from random import randint

kleiner = []
list_ = []
teller = 0
aantal = int(input("Hoeveel random getallen wilt u? "))
veelvoud = int(input("Welke veelvoud? "))

while len(list_) < aantal:
    getal = randint(1, 100)
    if getal % veelvoud == 0:
        list_.append(getal)
gemiddelde = sum(list_) / len(list_)

for i in list_:
    if i < gemiddelde:
        kleiner.append(i)

print(list_)
print(list_[::-1])
print(kleiner)

获得平均值 (gemiddelde) 后,您可以使用列表理解构建结果列表:

kleiner = [n for n in list_ if n < gemiddelde ]

如果您想要一个 veelvoud <= 100 的倍数的随机数列表,您可以使用 choices() 函数获得:

list_ = random.choices(range(velvoud,100,velvoud), k=aantal)