Egy szabadstrand vízibicikli-kölcsönzőjében kölcsönzéskor rögzítik a kölcsönző nevét (lehet becenév is), az elvitt jármű azonosítóját (A, B, C, D, E, F, G), az elvitel óráját és percét, valamint a visszahozatal óráját és percét. Például:

Cica;C;9;55;10;56
Anti;A;10;1;10;58
Manci;B;10;5;11;4
Csacsa;D;10;12;10;30

Egy időpontban csak egy jármű indulhat vagy érkezhet. A járművekért minden megkezdett fél óra után 1500 Ft-ot kell fizetni. A kölcsönzés idejébe az első és az utolsó perc is beleszámít.

Az adatokat a vizdat.csv nevű, pontosvesszővel tagolt szöveges állomány tartalmazza. Feltételezhetjük, hogy a napi kölcsönzések száma nem haladja meg a 100-at.

Készítsünk programot  a következő feladatok megoldására. A program futása során a képernyőre való kiíráskor utaljunk a feladat sorszámára.

1.   Olvassuk be a vizdat.csv fájlból és tároljuk el a napi kölcsönzések adatait.

2.   Kérjünk be egy nevet és írassuk ki, hogy az illető aznap mettől meddig vette igénybe a kölcsönző szolgáltatásait. Elképzelhető, hogy az illető többször is kölcsönzött aznap, ebben az esetben minden kölcsönzés adatát írassuk ki. Ha aznap egyszer sem kölcsönzött, akkor a Nem volt ilyen nevű kölcsönző! szöveg jelenjen meg.

3.   Kérjünk be egy időpontot az óra és a perc megadásával, majd írassuk ki a képernyőre, hogy ekkor mely járművek voltak vízen, és azokat kik kölcsönözték ki.

4.   Határozzuk meg a napi bevétel összegét, és írassuk ki a képernyőre.

5.   Melyik járművet hányszor kölcsönözték ki aznap? A választ a minta szerinti elrendezésben írassuk ki a képernyőre:

6.   Melyik jármű után fizették a legnagyobb kölcsönzési díjat? Írassuk ki a képernyőre órában megadva a fizetett időt és a jármű azonosítóját. (Vegyük figyelembe, hogy minden megkezdett fél óra után a teljes fél órát ki kell fizetni.) Ha több ilyen jármű volt, mindegyik azonosítója jelenjen meg.

7.   Néhány strandoló nem tudott járművet kölcsönözni, mert éppen az összeset elvitték. Mikor volt ilyen időszak? Jelenítsük meg valamennyi időtartamot a képernyőn kezdés óra, kezdés perc, vége óra, vége perc formátumban.

8.   Sajnos az FF jelű járművet napközben valaki használat közben megrongálta. Készítsünk egy szöveges állományt, amely tartalmazza a lehetséges elkövetőket és azt, hogy mettől meddig volt náluk a jármű. Az adatokat a következő formában írassuk a fjarmu.txt fájlba:

10:15-10:55 : Zigler
10:42-11:10 : Csacsa
11:16-11:40 : Bandi
11:52-12:02 : Joci
12:48-13:47 : Babi
15:00-16:00 : Zoli

Letöltés: vizdat.csv

 

Minta

2. feladat
Kérek egy nevet: Anti
Kölcsönzött: 10:1-10:58, 11:50-12:35

 

3. feladat
Kikölcsönzött járművek: G, Linda; E, Anti; C, Bandi; A, Joci

 

4. feladat
Bevétel: 111000 Ft.

 

5. feladat
A – 6
B – 4
C – 4
D – 6
E – 3
F – 6
G – 4

 

6. feladat
Fizetett idő: 6.5 óra, járművek: A, C

 

7. feladat
Az összes kint van: 12, 50, 13, 10, 13, 45, 13, 47

 

8. feladat
A fájl írása megtörtént.

 

 

Megoldás

# 1. feladat
with open('vizdat.csv') as fajl:
     forras = fajl.read().splitlines()
adatok = [sor.split(';') for sor in forras]

# 2. feladat
print('2. feladat')
nev = input('Kérek egy nevet: ')
lista = [adat[2]+':'+adat[3]+'-'+adat[4]+':'+adat[5] for adat in adatok if adat[0]==nev]
print('Kölcsönzött: '+', '.join(lista) if lista else 'Nem volt ilyen nevű kölcsönző!')

# 3. feladat
print('\n3. feladat')
idopont = input('Kérek egy időpontot (óra:perc): ')
ido = int(idopont.split(':')[0])*60+int(idopont.split(':')[1])
lista = [adat[1]+', '+adat[0] for adat in adatok if int(adat[2])*60+int(adat[3])<=ido<=int(adat[4])*60+int(adat[5])]
print('Kikölcsönzött járművek: '+'; '.join(lista))

# 4. feladat
osszeg = 0
dijak = [] # érdemes összegyűjteni jármű-díj párosokat, az 5. feladatban kelleni fog
for adat in adatok:
     perc = int(adat[4])*60+int(adat[5]) – (int(adat[2])*60+int(adat[3]))
     if perc % 30 == 0:
          dij = 1500*(perc//30)
     else:
          dij = 1500*((perc//30)+1)
     osszeg += dij
     dijak.append([adat[1],dij])
     #print(adat[1],perc, perc//30, perc%30, dij, osszeg)
print('\n4. feladat\nBevétel:',osszeg,'Ft.')

# 5. feladat
print('\n5. feladat')
jarmuvek_lista = [adat[1] for adat in adatok]
jarmuvek = list(set(jarmuvek_lista)) # csak a járművek listája; az ABC kiírás miatt kell lista, hogy rendezhető legyen
jarmuvek.sort()
lista = [jarmu+' – '+str(jarmuvek_lista.count(jarmu)) for jarmu in jarmuvek]
print('\n'.join(lista))

# 6. feladat
print('\n6. feladat')
osszegek = [] # jármű, összeg
for jarmu in jarmuvek:
     osszeg = sum(dij[1] for dij in dijak if dij[0]==jarmu)
     osszegek.append([jarmu,osszeg])
max_osszeg = max([osszeg[1] for osszeg in osszegek])
lista = [osszeg[0] for osszeg in osszegek if osszeg[1]==max_osszeg] # csak a legtöbbet fizetett járművek és összeg
print('Fizetett idő:',(max_osszeg/1500)/2,'óra, járművek:',', '.join(lista))

# 7. feladat
idok = [[int(adat[2])*60+int(adat[3]),int(adat[4])*60+int(adat[5])] for adat in adatok] # jármű,kivisz,behoz
kezd = min(ido[0] for ido in idok) # legelső kivitel
vege = max(ido[1] for ido in idok) # legutolsó visszahozatal
#print(idok,kezd,vege)
kint = []
jo_percek = [] # azok a percek, amíg az összes jármű kint volt
for perc in range(kezd,vege): # megnézzük, hogy minden percben hány jármű van kint
     hanyban = 0
     for ido in idok:
          if ido[0]<=perc<=ido[1]:
               hanyban += 1
               #print(perc,hanyban)
     if hanyban==len(jarmuvek):
          jo_percek.append(perc)
          #print(jo_percek)
jo_idok = [jo_percek[0]] # első időpont; a jo idok csak a jó perceket tartalmazzák
for index1 in range(1,len(jo_percek)-1):
if jo_percek[index1]!=jo_percek[index1-1]+1 or jo_percek[index1]!=jo_percek[index1+1]-1:
jo_idok.append(jo_percek[index1])
jo_idok.append(jo_percek[-1]) # utolsó időpont
#print(jo_idok)
kiir = [str(perc//60)+', '+str(perc%60) for perc in jo_idok]
print('\n7. feladat\nAz összes kint van:',', '.join(kiir))

# 8. feladat
for adat in adatok: # kellenek a bevezető nullák is, ha nincsnek
     for i in range(2,6):
          if len(adat[i])==1:
               adat[i] = '0'+adat[i]
f_jarmu = [adat[2]+':'+adat[3]+'-'+adat[4]+':'+adat[5]+' : '+adat[0] for adat in adatok if adat[1]=='F']
fajl = open('fjarmu.txt','w')
print('\n'.join(f_jarmu),file=fajl)
fajl.close()
print('\n8. feladat\nA fájl írása megtörtént.')

News Reporter
situs bandar togel terbesar terpercaya nama 10 situs togel terpercaya situs totoslot hoki gacor 4d situs bandar togel macau terpercaya toto slot hoki gacor 4d situs totoslot gacor 4d bandar togel resmi terbesar situs toto togel 4d terpercaya situs toto togel macau 4d hadiah 10 juta terbesar situs tototogel totoslot hadiah macau 10 juta toto slot 4d hoki gacor situs toto slot gacor hoki 4d situs togel 4d toto slot 4d toto togel 4d demo akun slot pragmatic gacor 2022 https://hoteles.udg.mx/clubdeportivo/wp-includes/ situs tototogel 4d bandar macau terpercaya slot hoki gacor 4d Daftar Situs Toto Slot Hoki Gacor 4D Deposit Pulsa 10RB SITUS TOTO SLOT HOKI GACOR 4D Deposit Pulsa Dana 10rb situs bandar togel hadiah 4d 10 juta terbesar terpercaya 10 situs bandar togel hadiah 4d terbesar resmi http://adn.fcm.uncu.edu.ar/plugins/ TOTO SLOT 4D > Daftar Situs Judi Slot Online Hoki Gacor Terpercaya Deposit Dana situs tototogel 4d rdtoto https://udc.go.ug/toto-togel https://sfmu.edu.bd/wp-includes situs tototogel 4d situs slot toto hoki gacor 4d situs toto slot hoki gacor 4d Daftar Situs Toto Slot Hoki Gacor 4D Deposit Pulsa 10rb Tanpa Potongan Situs Toto Togel 4D Terpercaya Bandar Toto Slot Hadiah Terbesar Resmi 2022 TOTOTOGEL > Daftar Situs Toto Togel Toto Slot 4D Gacor Hadiah 10 Juta Bandar Macau Bet 100 Perak TOTOTOGEL > Daftar Situs Toto Togel Toto Slot 4D Gacor Hadiah 10 Juta Bandar Macau Bet 100 Perak Situs Slot Joker123 TOTO SLOT GACOR 4D Terpercaya Gampang Menang Maxwin JOKER123 > Daftar Situs Toto Slot Hoki Gacor 4D Gampang Maxwin 2022 Situs Toto Slot Gacor 4D Judi Slot Joker123 Terpercaya Gampang Menang Maxwin Situs Toto Slot Joker123 Deposit Pulsa 10rb Tanpa Potongan Resmi Terpercaya JOKER123 > Daftar Situs Judi Toto Slot Gacor 4D Deposit Pulsa 10rb JOKER123 Situs Toto Slot Hoki Gacor 4D Deposit Pulsa 10rb TOTO SLOT > Daftar Situs Judi Slot Joker123 Terpercaya Gacor Deposit Pulsa 10RB TOTO TOGEL TOTO SLOT Hoki Gacor 4D Situs Resmi Terpercaya TOTOTOGEL Daftar Situs Toto Slot Hoki Gacor 4D Bandar Hadiah Terbesar Resmi Terpercaya TOTO TOGEL 4D > Situs Bandar Togel Resmi Hadiah 10 Juta Resmi Terpercaya https://class.cjps.ntpc.edu.tw/storage/totoslot/index.php TOTO SLOT 4D > Daftar Situs Judi Hoki SLot Gacor 4D Resmi Gampang Maxwin Daftar Situs Toto Togel 4D Bandar Togel Hadiah 10 Juta Resmi Terpercaya Terbesar TOTOSLOT > Daftar Situs Slot Toto Hoki Gacor 4D Resmi Terpercaya 2022 TOTOSLOT > Daftar Situs Slot Toto Hoki Gacor 4D Resmi Terpercaya 2022 TOTOSLOT > Daftar Situs Slot Toto Hoki Gacor 4D Resmi Terpercaya 2022 Daftar SItus Slot Toto Gacor 4D Hoki Deposit Pulsa Dana 10rb TOTO SLOT HOKI GACOR 4D > Daftar Situs Judi Slot Online Gacor 2022 Terpercaya HOKI SLOT GACOR 4D > Situs Toto Slot Gacor Terpercaya Resmi 2022 SITUS TOTO SLOT HOKI GACOR 4D DEPOSIT PULSA 10RB TANPA POTONGAN situs slot deposit pulsa 10rb tanpa potongan
Situs Toto Slot Hoki Gacor 4D 2022 Gampang Menang Maxwin situs nexus slot hoki gacor 4d slot4d gacor deposit pulsa 10rb tanpa potongan nexus slot 4d situs slot deposit dana tanpa potongan resmi 2022 situs slot deposit dana pulsa tanpa potongan 10rb situs slot deposit dana pulsa tanpa potongan 10rb situs bandar togel terbesar terpercaya situs bandar togel terbesar terpercaya situs bandar togel terbesar terpercaya