Софтуерно Инженерство
Loading...
+ Нов въпрос
martin_varbanov avatar martin_varbanov 1 Точки

2ра задача, 4тa лекция, Python 3 July

Здравейте,

Някой може ли да ми каже за по- добър начин за извличане на данните от този файл и дали отговора съвпада

Отговор: hp@HP-PC C:\Users\hp\Documents\Github\summer-2016\Pitonia\softuni\04\02
> python 02.py
{'2015-11-26': 216468.6100000001, '2015-11-25': 272291.64000000013, '2015-11-23': 258797.90000000002, '2015-11-24': 226962.82999999993}
2015-11-26

 

Решение: 

https://github.com/martin-varbanov96/summer-2016/blob/master/Pitonia/softuni/04/02/02.py

Тагове:
0
Python 03/08/2016 20:21:08
b.yordanov avatar b.yordanov 146 Точки
Best Answer

Здравей, няма да се занимавам да решавам задачата но ще ти дам малко насоки за това как може да стане малко по-добре.

 

with open('sales.csv', 'r') as lines:

-> когато отваряш файл за четене винаги задавай и енкодинг: with open('sales.csv', 'r', encoding='utf-8') as f:

Когато ще обработваш csv файлове използвай модула "csv" na pitonia

в началото пишеш: import csv

 

Изведи си ключовете, с които достъпваш лист-овете и дикт-овете в началото. Така файлът ще стане доста по-разбираем.

Например:

#02.py

-----------------------------

import csv

SALE_TIMESTAMP = 0

SALE_VALUE = 1

with open('sales.csv', 'r', encoding='utf-8') as f:

reader = csv.reader(f)
for row in reader:

       print(row)

 

За по-ефективно четене на файлове ред по ред използвай конструкцията yield от 6-та лекция. Там е обяснено как точно работи, но специално за твоята задача няма да ти трябва.

 

Когато принтваш стойности като сума от нещо използвай форматиране за да изглежда по-прилично. Например:

print("{total_sum:.2f}".format(total_sum=216468.6100000001)) ще ти изптринти: 216468.61. Обърни внимание, че има : и . преди 2f 

За да обработваш дати най-горе при импортите използвай "import iso8601". Това май беше обяснено в 4-та или 5-та лекция ако не се лъжа.

 

Спорно учене ;)

 

1
shine_g avatar shine_g 2 Точки

Предполагам, че става въпрос за ТАЗИ задача

Ако искаш резултатът да ти излиза подобно на това:

Сряда  ==> 273785.69
Понеделник  ==> 259736.72
Вторник  ==> 228910.47
Четвъртък  ==> 216472.38
Денят с максимални печалби е Сряда с печалба 273785.69

може да ползваш  date.weekday(some_date), което връща номера на деня от седмицата, почвайки от 0.

Кодът за тази част, която ти трябва, изглежда горе-долу така:

days_of_the_week = ['Понеделник', 'Вторник', 'Сряда', 'Четвъртък', 'Петък', 'Събота', 'Неделя']
max_profit = 0
max_profit_day = -1
for i, s in sales.items(): # i ни е датата s е сумарната стойност на продажбите за тая дата
    sale_weekday = days_of_the_week[date.weekday(i)] #date.weekday дава номера на деня
    print(sale_weekday, ' ==> {:.2f}'.format(s))
    if s > max_profit:
        max_profit = s
        max_profit_day = sale_weekday

print('Денят с максимални печалби е {} с печалба {:.2f}'.format(max_profit_day, max_profit))

 

Сигурно става и по много по-добър начин, но smiley

0