Ötszáz – a 2016. májusi emelt szintű informatika érettségi programozás-feladatának megoldása

Az Ötszáz című feladatsorban egy boltban veszünk el a termékek árazásának szépségeiben.

Ebben a feladatban már bevetjük a mostanában tanultakat: lesz benne enumerate, listaértelmezés, szótár, ez utóbbi természetesen a miből-mennyit-vettünk nyilvántartására.

Hosszas elemzést nem írok, mert majd megnézed a videót, de pár érdekességet azért felsorolnék:

  • listában tárolt szótárak
  • a szótár értékeinek összeadása sum-mal
  • enumerate listaértelmezésben

A feladat szövege és a forrásfájl letölthető innen.

És hát, lássuk a megoldást:

A megoldás forráskódja:


#!/usr/bin/env python3

def ertek(darab):
    if darab == 0:
        return 0
    elif darab == 1:
        return 500
    elif darab == 2:
        return 500+450
    else:
        return (darab - 2) * 400 + 950

vásárlások = []
vásárlás = {}

forrásfájl = open('penztar.txt')
for sor in forrásfájl:
    sor = sor.strip()
    if sor == 'F':
        vásárlások.append(vásárlás)
        vásárlás = {}
    else:
        vásárlás[sor] = vásárlás.get(sor, 0) + 1 #F0045c Pythonidomár-feladat
forrásfájl.close()

print('2. feladat\nA fizetések száma:', len(vásárlások))
print('3. feladat\nAz első vásárló', sum(vásárlások[0].values()), 'darab árucikket vásárolt.')

vásárlás_sorszáma = int(input('4. feladat\nAdja meg egy vásárlás sorszámát! '))
árucikk_neve = input('Adja meg egy árucikk nevét! ')
vásárolt_darabszám = int(input('Adja meg a vásárolt darabszámot! '))

vettek_ilyet = [ index + 1 for index, vásárlás in enumerate(vásárlások) if árucikk_neve in vásárlás.keys() ]

print('5. feladat\nAz első vásárlás sorszáma: ', vettek_ilyet[0],'\nAz utolsó vásárlás sorszáma: ', vettek_ilyet[-1], '\n', len(vettek_ilyet), ' vásárlás során vettek belőle.', sep='')
print('6. feladat\n', vásárolt_darabszám, ' darab vételekor fizetendő: ', ertek(vásárolt_darabszám), sep='')

print('7. feladat')
for árucikk, vásárolt_darab in vásárlások[vásárlás_sorszáma-1].items():
    print(vásárolt_darab, árucikk)

célfájl = open('osszeg.txt', 'w')
for index, vásárlás in enumerate(vásárlások):
    print(index+1, ': ', sum(map(ertek, vásárlás.values())), sep='', file=célfájl)
célfájl.close()

Legutóbb megismerkedtünk a szótárakkal. Legközelebb objektumorientált programot írunk.

Reklámok

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s