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

Ответы

Ответ дал: TTолковник
0

Ответ:

не совсем понятно, что вы хотите от программы.

я так понял, что вам нужно найти среднее значение всех элементов 3 списков, если это так, то обратите внимание вот на эти строки

my_list1 = a[i]

my_list2 = b[i]

my_list3 = c[i]

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

если бы вы написали что хотите от кода, я бы помог детальнее


vipfinpol: Дюпаедомно даны 3 списка с валютой ща последние 4 дня, необходимо вывести среднее значение всех курсов за 4 дня, тот код который я написал выводил :
vipfinpol: Вот это :
vipfinpol: 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
vipfinpol: Первое слово в комментарии рандомно
vipfinpol: У меня получается код захватывает только 3 числа из кортежа, как написать код чтоб он и четвёртое значение в кортеж тоже захватывал?
TTолковник: 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)))
summ = 0
days = float(days)*3
for i in range(4):
print(type(a[1]))
summ += float(a[i])+float(b[i])+float(c[i])

avg = summ/days
print("Exchange 1:", a)
print("Exchange 2:", b)
print("Exchange 3:", c)
print("Average price:", f'{avg:.5f}')
Вас заинтересует