Попытка отобразить все числа ниже среднего в другом списке

#python #list #random #iteration #average

Вопрос:

Для школы мы должны сделать код, который показывает среднее значение определенного списка в другой список, но по какой-то причине мой список, в котором должны отображаться меньшие числа, пуст, я не знаю, возможно ли это, но я пытался использовать дополнительную переменную, которая сама по себе имеет значение 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) lt; aantal:  getal = randint(1, 100)  if getal % veelvoud == 0:  list.append(getal) gemiddelde = sum(list) / len(list)  while len(list) lt; aantal:  if list[teller] lt; gemiddelde:  kleiner.append(list[teller])  teller  = 1  print(list) print(list[::-1]) print(kleiner)  

помощь ценится заранее.

Комментарии:

1. Использовали ли вы отладчик, чтобы узнать, когда вы ожидали , что он будет добавлен в этот список, но не сделали этого? Это помогло бы объяснить, почему это не так.

2. Пожалуйста, НИКОГДА не используйте list в качестве названия для списка, это встроенная функция.

3. «список» — это тип, а не функция.

Ответ №1:

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_) lt; aantal:  getal = randint(1, 100)  if getal % veelvoud == 0:  list_.append(getal) gemiddelde = sum(list_) / len(list_)  for i in list_:  if i lt; gemiddelde:  kleiner.append(i)  print(list_) print(list_[::-1]) print(kleiner)  

Ответ №2:

Как только у вас будет среднее значение (gemiddelde), вы сможете построить результирующий список, используя понимание списка:

 kleiner = [n for n in list_ if n lt; gemiddelde ]  

Если вам нужен список случайных чисел, кратных veelvoud:

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