dron.py
1    repules = []
2    # 1. feladat - beolvasás
3    fbe = open('adatok.txt','r',encoding='utf-8')
4    for sor in fbe:
5        repules.append(list(map(int,sor.strip().split(';'))))
6    fbe.close()
7    # ------------------------------------------------------------
8    # 2. és 3. feladat
9    print('2. feladat - fájlbaírás')
10   
11   def egtaj(fok):
12       if 315 <= fok:
13           return 'É'
14       elif 225 <= fok:
15           return 'N'
16       elif 135 <= fok:
17           return 'D'
18       elif 45 <= fok:
19           return 'K'
20       else:
21           return 'É'
22   # szótár adattípus használata: kulcs az égtáj, érték a db    
23   # 'É': 1-ről indul, mert kezdetben arra néz a drón
24   compass = {'É':1,'K':0,'D':0,'N':0}
25   
26   fki = open('irany.txt','w')
27   irany = repules[0][2]
28   print(f'{repules[0][0]}: {irany}, É',file = fki)
29   for i in range(1, len(repules)):
30       irany = (irany+repules[i][2]) % 360
31       et = egtaj(irany)
32       print(f'{repules[i][0]}: {irany}, {et}', file=fki)
33       compass[et] += 1    # szótár adott kulcsú elemének növelése
34   fki.close()
35   
36   print('3. feladat')
37   for et, db in compass.items():  # szótár elemeinek ciklikus kiírása
38       print(f'{et}: {db}')
39   mx_irany = max(compass, key = compass.get)  # maximális értékhez tartozó kulcs
40   print(f'Legtöbbször {mx_irany} irányába repült a drón!')
41   # ------------------------------------------------------------
42   # 4. feladat - maximális magasság
43   # maximális magasság kiválasztása, a "kis" listák második eleme a magasság
44   max_magassag = max(repules, key = lambda elem:elem[1]) 
45   print(f'A legnagyobb repülési magasság {max_magassag[1]} cm volt!')  
46   # ------------------------------------------------------------
47   # 5. feladat - lokális minimumok száma
48   db = 0
49   for i in range(1, len(repules)-1):   # i-1 és i+1 miatt ilyen a range
50       # csak az olvashatóság kedvéért:
51       elozo = repules[i-1][1]
52       aktualis = repules[i][1]
53       kovetkezo = repules[i+1][1]
54       if elozo > aktualis < kovetkezo:
55           db += 1
56   print(f'Süllyedések száma: {db}')    
57   
58