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

Főoldal » Középiskola » Informatika
543
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: 3 é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