-
Notifications
You must be signed in to change notification settings - Fork 0
/
Laba3.py
63 lines (50 loc) · 2.48 KB
/
Laba3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import csv
from num2t4ru import num2text
from docxtpl import DocxTemplate
from docx2pdf import convert
def telephonia():
buffer = []
with open('data.csv') as file:
reader = csv.reader(file) # csv-файл передаётся функции csv.reader, которая возвращает объект-считыватель,
# позволяющий выполнять итерацию над каждым рядом в объекте-считывателе и отобразить строку данных без запятых
for row in reader:
buffer.append(row) # строка переносится в конец
call_duration = 0 # буфер, где хранятся суммы минут звонков
sms_number = -10 # буфер, где хранится количество смс. "-10", так как первые 10 шт. - бесплатно
for i in range(1, 10): # рассматриваем данные звонков и смс
if '933156729' in buffer[i][1]: # проверяется наличие номера
call_duration += float(buffer[i][3]) # складываем минуты
sms_number += float(buffer[i][4]) # складываем количество смс
return("%.0f" % (call_duration*2+sms_number*1))
def internet():
list_check = []
with open('nfcap.csv') as data_doc:
reader = csv.reader(data_doc)
for i in reader:
list_check.append(i)
ibyt = 0
price = 0
for i in range(len(list_check)):
if '192.0.73.2' in list_check[i]:
ibyt += float(list_check[i][12])
if ibyt > 200: # Т. к. общий объём трафика по абоненту меньше заявленного во варианте, было решено рассматривать байты.
ibyt = ibyt - 200
price += 0.5 * 200
price += ibyt * 1
return ("%.0f" % price)
cases = ((u'рубль', u'рубля', u'рублей'), 'm')
telephonia_price = int(telephonia())
internet_price = int(internet())
total_price = telephonia_price+internet_price
nds = "%.0f" % (total_price*0.2)
doc = DocxTemplate("blank.docx")
context ={
'telephonia': telephonia_price,
'internet': internet_price,
'total': total_price,
'nds': nds,
'word_price': (num2text(total_price, cases))
}
doc.render(context)
doc.save("total.docx")
convert("total.docx")