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