#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)