+ 1
Добрый день. Помогите решить задачу по Python цены на жилье. Мой код ниже. Не понимаю в чём ошибка.
import numpy as np data = np.array([150000, 125000, 320000, 540000, 200000, 120000, 160000, 230000, 280000, 290000, 300000, 500000, 420000, 100000, 150000, 280000]) stat=np.std(data) res_mean=np.mean(data) for n in data: if (n >= stat-res_mean and n<=stat+res_mean): print((sum(n)/len(data))*100)
9 Respostas
+ 2
Вы не правильно используете функцию sum(), для неё нужно несколько аргументов, но она вам не нужна.
И условие неправильно записали, нужно:
if (n > res_mean-stat and n<stat+res_mean)
Вам нужно найти количество домов соответствующих данному условию, а не их сумму и вывод результата должен быть за пределами цикла. Справитесь? ☺️
+ 2
☺️ n - это цена дома.
Какая же у цены может быть длина? Это всё равно что написать len(1).
Количество нужных домов Вам нужно посчитать, для этого Вы и создали цикл, а уж потом произвести расчёт и распечатать.
Я надеялся Вы поняли.
+ 2
😃 это потому что Вы понаписали кучу ненужных скобок и сами запутались в них.
И помоему вы не сделали отступ для z+=1
+ 2
Точно. Спасибо большое!
import numpy as np
data = np.array([150000, 125000, 320000, 540000, 200000, 120000, 160000, 230000, 280000, 290000, 300000, 500000, 420000, 100000, 150000, 280000])
stat=np.std(data)
res_mean=np.mean(data)
z=0
for n in data:
if (n >res_mean-stat and n<stat+res_mean):
z += 1
print((z/len(data))*100)
Работает😊
+ 2
Ура-а 👏👏👏 рад за Вас 😃
А теперь вспомните как в numpy учили использовать условие в качестве индекса массива и выполните это задание без использования цикла ☺️
+ 1
Вот другой вариант и все равно не идёт
import numpy as np
data = np.array([150000, 125000, 320000, 540000, 200000, 120000, 160000, 230000, 280000, 290000, 300000, 500000, 420000, 100000, 150000, 280000])
stat=np.std(data)
res_mean=np.mean(data)
z=0
for n in data:
if (n >res_mean-stat and n<stat+res_mean):
z+=1
print((z)/len(data))*100)
+ 1
import numpy as np
data = np.array([150000, 125000, 320000, 540000, 200000, 120000, 160000,
230000, 280000, 290000, 300000, 500000, 420000, 100000, 150000, 280000])
stand = np.std(data) # 130053.69984644804
me = np.mean(data) # 260312.5
print(len(data[(data > me - stand) & (data < me + stand)])/len(data)*100)
0
import numpy as np
data = np.array([150000, 125000, 320000, 540000, 200000, 120000, 160000, 230000, 280000, 290000, 300000, 500000, 420000, 100000, 150000, 280000])
stat=np.std(data)
res_mean=np.mean(data)
for n in data:
if (n >res_mean-stat and n<stat+res_mean):
a=((len(n)/len(data))*100)
print(a)
0
Не идёт (