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