
Python Почему при выводе среднего avg захватывает только 3 числа вместо четырех в ранге(4),что
нужно исправить? код: from random import uniform days = input("Enter number of days: \n\n") print("Generated prices:") a, b, c = [], [], [] for i in range(4): a.append("{:= .2f}".format(uniform(60, 70))) b.append("{:= .2f}".format(uniform(60, 70))) c.append("{:= .2f}".format(uniform(60, 70))) n = [] for i in range(4): n.append((a[i]) + b[i] + c[i]) num = n[0] days = float(days) my_list1 = a[i] my_list2 = b[i] my_list3 = c[i] list1 = str(my_list1).strip('[]') list2 = str(my_list2).strip('[]') list3 = str(my_list3).strip('[]') avg = ((float(list1)) + (float(list2)) + (float(list3)))/days print("Exchange 1:", a) print("Exchange 2:", b) print("Exchange 3:", c) print("Average price:", f'{avg:.5f}') вывод: Enter number of days: 4 Generated prices: Exchange 1: [' 68.69', ' 60.10', ' 60.37', ' 65.34'] Exchange 2: [' 65.36', ' 64.22', ' 67.72', ' 69.51'] Exchange 3: [' 65.68', ' 60.87', ' 61.48', ' 67.10'] Average price: 50.48750 Вместо Average price: 50.48750 должно быть число среднее всех чисел в р-не 65-70

Ответы на вопрос

Ответ:
не совсем понятно, что вы хотите от программы.
я так понял, что вам нужно найти среднее значение всех элементов 3 списков, если это так, то обратите внимание вот на эти строки
my_list1 = a[i]
my_list2 = b[i]
my_list3 = c[i]
здесь сбита табуляция, однако я думаю, что вы явно прогоняете эти переменные по циклу и хотите работать с ними дальше в виде списка с переменными, в этом случае вы должны были объявить их до цикла и в самом цикле написать что то типа my_list1 += a[i], а получается, что весь цикл они просто переприсваиваются и по завершении просто равны последнему элементу a, b, c соответственно, уберите days = float(days) из цикла - занимает память и num никак не используется - ну это мелочи,
если бы вы написали что хотите от кода, я бы помог детальнее



Проблема в вашем коде заключается в том, что вы неправильно обрабатываете список сгенерированных чисел. Вы сначала объявляете пустой список n
, чтобы в него добавить сумму значений из списков a
, b
и c
. Затем вы используете переменные my_list1
, my_list2
и my_list3
, чтобы извлечь значения из этих списков, но вы делаете это вне цикла, и они всегда будут содержать последние значения из соответствующих списков a
, b
и c
.
Чтобы исправить эту проблему и вычислить среднее значение для всех сгенерированных чисел в диапазоне от 60 до 70, вам не нужно создавать отдельные списки a
, b
и c
. Вы можете сгенерировать числа и сразу вычислить среднее значение. Вот исправленный код:
pythonfrom random import uniform
days = int(input("Enter number of days: "))
print("Generated prices:")
total_sum = 0 # Переменная для суммы всех сгенерированных чисел
for i in range(4):
price = uniform(60, 70)
total_sum += price # Добавляем значение к сумме
print(f"Exchange {i + 1}: {price:.2f}")
avg = total_sum / (4 * days) # Вычисляем среднее значение
print("Average price:", f'{avg:.5f}')
Этот код будет генерировать числа, выводить их и затем вычислять среднее значение для всех сгенерированных чисел в диапазоне от 60 до 70.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili