|
reklam202310dk_alapmegoldas.py
|
1 def kiir(f):
2 print(f'{f}. feladat:')
3 # -----------------------------------------------------------------------------
4 # 1. Olvassa be és tárolja el a további feldolgozáshoz a rendel.txt állomány
5 # tartalmát!
6 # -----------------------------------------------------------------------------
7 rendelesek=[sor.strip().split() for sor in open('rendel.txt','r')]
8 # -----------------------------------------------------------------------------
9 # 2. Állapítsa meg, hogy hány rendelés történt a teljes időszakban, és írja a
10 # képernyőre a rendelések számát!
11 # -----------------------------------------------------------------------------
12 kiir(2)
13 print(f'A rendelések száma: {len(rendelesek)}')
14 # -----------------------------------------------------------------------------
15 # 3. Kérje be a felhasználótól egy nap számát, és adja meg, hogy hány rendelés
16 # történt az adott napon!
17 # -----------------------------------------------------------------------------
18 kiir(3)
19 nap=input('Kérem, adjon meg egy napot: ')
20 rend=[rendeles[0] for rendeles in rendelesek if rendeles[0]==nap]
21 print(f'A rendelések száma az adott napon: {len(rend)}')
22 # -----------------------------------------------------------------------------
23 # 4. Számolja meg, hogy hány nap nem volt rendelés a reklámban nem érintett
24 # városból, és írja ki a napok számát! Ha egy ilyen nap sem volt, akkor írja
25 # ki „Minden nap volt rendelés a reklámban nem érintett városból” szöveget!
26 # -----------------------------------------------------------------------------
27 kiir(4)
28 rend={rendeles[0] for rendeles in rendelesek if rendeles[1]=='NR'}
29 if len(rend)==30:
30 print('Minden nap volt rendelés a reklámban nem érintett városból')
31 else:
32 print(f'{30-len(rend)} nap nem volt a reklámban nem érintett\
33 városból rendelés')
34 # -----------------------------------------------------------------------------
35 # 5. Állapítsa meg, hogy mennyi volt az egy rendelésben szereplő legnagyobb
36 # darabszám, és melyik volt az a nap, amikor az első ilyen számú rendelést
37 # leadták! Az eredményt a minta szerint írja ki!
38 # -----------------------------------------------------------------------------
39 kiir(5)
40 rendezett=sorted(rendelesek,key=lambda r:int(r[2]),reverse=True)
41 print(f'A legnagyobb darabszám: {rendezett[0][2]}, \
42 a rendelés napja: {rendezett[0][0]}')
43 #A legnagyobb darabszám: 9, a rendelés napja: 22
44 def osszes(varos,nap):
45 return sum([int(rend[2]) for rend in rendelesek \
46 if rend[1]==varos and int(rend[0])==nap])
47 # -----------------------------------------------------------------------------
48 # 7. Számítsa ki, hogy a kampány utáni első napon, azaz a 21-edik napon melyik
49 # városból mennyit rendeltek a termékből! Az eredményt a lenti mintának
50 # megfelelő formában írja ki!
51 # -----------------------------------------------------------------------------
52 kiir(7)
53 print(f'A rendelt termékek darabszáma a 21. napon \
54 PL: {osszes("PL",21)} TV: {osszes("TV",21)} NR: {osszes("NR",21)}')
55 # -----------------------------------------------------------------------------
56 # 8. Összesítse városonként, hogy hány rendelés érkezett az első 10, a
57 # 11-20-adik valamint a záró 10 napon! Az eredményt (a fejlécet is bele-
58 # értve) táblázatos formában, tabulátorokkal tagoltan jelenítse meg a képer-
59 # nyőn, illetve írja azonos formátumban a kampany.txt szöveges állományba!
60 # -----------------------------------------------------------------------------
61 kiir(8)
62 varosok={'PL':[0,0,0],'TV':[0,0,0],'NR':[0,0,0]}
63 for rendeles in rendelesek:
64 for ism in range(3):
65 for nap in range(1+ism*10,11+ism*10):
66 if int(rendeles[0])==nap:
67 varosok[rendeles[1]][ism]+=1
68 fki=open('kampany.txt','w')
69 print('Napok\t1..10\t11..20\t21..30')
70 print('Napok\t1..10\t11..20\t21..30',file=fki)
71 for varos,rend in varosok.items():
72 print(f'{varos}\t{rend[0]}\t{rend[1]}\t{rend[2]}')
73 print(f'{varos}\t{rend[0]}\t{rend[1]}\t{rend[2]}',file=fki)
74 fki.close()
75
76
77
78
79