Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

Python feladat

453
5.Kérje be a felhasználótól egy sofőr nevét, majd határozza meg a sofőr által indított hívások számát a napló bejegyzéseiből! Az eredményt a minta szerint írja ki a képernyőre! Ha olyan sofőr nevét adja meg a felhasználó, aki nem szerepel a naplóban, akkor a „Nincs ilyen nevű sofőr!” mondat jelenjen meg!

6.Készítsen AtszamolPercreazonosítóval egész típusú értékkel visszatérő metódust vagy függvényt, ami a paraméterként megadott óra- és percértéket percekre számolja át! Egy óra 60 percből áll. Például: 8 óra 5 perc esetén a visszatérési érték: 485 (perc).

7.Készítsen szöveges állományt cb2.txtnéven, melybe a forrásállományban található bejegyzéseket írja ki új formátumban! Az órákat és a perceket percekre számolja át az előző feladatban elkészített metódus (függvény) hívásával! Az új állomány első sorát és az adatsorokat a minta szerint alakítsa ki!

cb.txt: https://infojegyzet.hu/erettsegi/informatika-ismeretek/kozep-prog-2019okt/cb.txt
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Középiskola / Informatika

Válaszok

3
Minta:
0

lista = []
with open('cb.txt') as allomany:
    fejlec = allomany.readline().strip().split(';')
    for sor in allomany:
        lista.append(sor.strip().split(';'))

# 5.

nev = input('Kérek egy nevet: ')

darab = sum(map(lambda sofor: int(sofor[2]) if sofor[3] == nev else 0, lista))

# vagy

darab = sum([int(sofor[2]) for sofor in lista if sofor[3] == nev])

# vagy

darab = 0
for sofor in lista:
    if sofor[3] == nev:
        darab += int(sofor[2])

if darab:
    print(f'{nev} {darab}x használta a CB-rádiót.')
else:
    print('Nincs ilyen nevű sofőr!')

# 6.

def AtszamolPercre(ora, perc):
    return ora * 60 + perc

# 7.

with open('cb2.txt', 'w') as allomany:
    print(';'.join(fejlec[1:]), file = allomany)
    for sofor in lista:
        print(';'.join([str(AtszamolPercre(int(sofor[0]), int(sofor[1])))] + sofor[2:]), file = allomany)
Módosítva: 2 éve
1

OOP változat. Először is szögezzük le, hogy a feladat kérdésben idézett része meglehetősen kevés az osztály megtervezéséhez. Mert ez alapból baromság:

> Készítsen AtszamolPercreazonosítóval egész típusú értékkel visszatérő metódust vagy függvényt, ami a paraméterként megadott óra- és percértéket percekre számolja át!
(…)
> Az órákat és a perceket percekre számolja át az előző feladatban elkészített metódus (függvény) hívásával!

Ha radio osztály metódusa a radio osztály tulajdonságait konvertálja, akkor minek neki paraméter? Ezzel lenullázza az egységbezárás értelmét.

(Apróság: a Python stílus útmutató szerint az osztály neve Radio, a metódusé atszamol_percre() kellene legyen. https://peps.python.org/pep-0008/ )

# 5.

nev = input('Kérek egy nevet: ')

darab = sum(map(lambda sofor: sofor.db if sofor.nev == nev else 0, radiok))

# vagy

darab = sum([sofor.db for sofor in radiok if sofor.nev == nev])

# vagy

darab = 0
for sofor in radiok:
    if sofor.nev == nev:
        darab += sofor.db

if darab:
    print(f'{nev} {darab}x használta a CB-rádiót.')
else:
    print('Nincs ilyen nevű sofőr!')

# 6.

class radio:
    #Konstruktor:
    def __init__(self, ora, perc, db, nev):
        self.ora = int(ora)
        self.perc = int(perc)
        self.db = int(db)
        self.nev = nev

    def AtszamolPercre(self):
        return self.ora * 60 + self.perc

# 7.

with open('cb2.txt', 'w') as allomany:
    print('Kezdés;Név;AdasDb', file = allomany)
    for sofor in radiok:
# a korábbi válasz 6. pontnál létrehozott függvénnyel
        print(AtszamolPercre(sofor.ora, sofor.perc), sofor.nev, sofor.db, sep = ';', file = allomany)

# az ebben a válaszban létrehozott metódussal
        print(sofor.AtszamolPercre(), sofor.nev, sofor.db, sep = ';', file = allomany)
1