Python az iskolában Wiki
Advertisement

Első megoldás[]

Yes check Tesztelve a 3..6.1 verzióban.

# -*- coding: utf-8 -*-
"""
A 2018. tavaszi Társalgó feladat megoldása klasszikus, "iskolás" módon
"""

def f(i):
    print('%d. feladat:' % i)

# 1. feladat
inp = open('ajto.txt')
ajto = []
for line in inp.readlines():
    line = line.replace('\n', '')
    sor = line.split(' ')
    ajto.append([int(sor[0]), int(sor[1]), int(sor[2]), sor[3]])
print('%d sor beolvasva.' % len(ajto))

f(2)
print('Az első belépő: %d' % ajto[0][2])
i = len(ajto) - 1
while i >= 0 and ajto[i][3] != 'ki':
    i -= 1
if i >= 0:
    print('Az utolsó kilépő: %d' % ajto[i][2])

# 3. feladat
azonositok = set()
for adat in ajto:
    azonositok.add(adat[2])
lista = sorted(list(azonositok))
athaladasok = [a[2] for a in ajto]
with open('athaladas.txt', 'w') as ath:
    for tag in lista:
        ath.write('%d %d\n' % (tag, athaladasok.count(tag)))

f(4)
bent = []
for tag in lista:
    athaladasok = [a[3] for a in ajto if a[2] == tag]
    if athaladasok[-1] == 'be':
        bent.append(str(tag))
print('A végén a társalgóban voltak: ' + ' '.join(bent))

f(5)
max = 0
ido = ''
akt = 0
for adat in ajto:
    akt += (1 if adat[3] == 'be' else -1)
    if akt > max:
        max = akt
        ido = '%d:%d' %(adat[0], adat[1])
print('Például %s-kor voltak a legtöbben a társalgóban.' % ido)

f(6)
ember = int(input('Adja meg a személy azonosítóját! '))

# Ez a 8. feladathoz kell
def perc(adat):
    return 60 * adat[0] + adat[1]
vege = 15 * 60

# 7-8. feladat egyben
f(7)
percek = 0
for adat in ajto:
    if adat[2] == ember:
        if adat[3] == 'be':
            bentvan = True
            ido = '%d:%d-' %(adat[0], adat[1])
            kezdet = perc(adat)
        else:
            bentvan = False
            ido += '%d:%d' %(adat[0], adat[1])
            print(ido)
            percek += perc(adat) - kezdet
if bentvan:
    print(ido)
    percek += vege - kezdet

f(8)
holvan = 'a társalgóban volt' if bentvan else 'nem volt a társalgóban'
s = 'A(z) %d. személy összesen %d percet volt bent, a megfigyelés végén %s.'
print(s % (ember, percek, holvan))

Második megoldás[]

Yes check Tesztelve a 3..6.1 verzióban.

Ambox important Ez a szakasz az érettségi követelményeket meghaladó ismeretet tartalmaz.
# -*- coding: utf-8 -*-
"""
A 2018. tavaszi Társalgó feladat megoldása pythonosabb, trükkösebb módon
"""

def f(i):
    print('%d. feladat:' % i)

# 1. feladat
ajto = [line.replace('\n', '').split(' ') for line in open('ajto.txt').readlines()]
print('%d sor beolvasva.' % len(ajto))

f(2)
print('Az első belépő: %s' % ajto[0][2])
visszajto = ajto[::-1]
kilepok = [v[2] for v in visszajto if v[3] == 'ki']
try:
    print('Az utolsó kilépő: %s' % kilepok[0])
except IndexError:
    print('Senki nem jött ki élve. :-O')

# 3-4. feladat (Bent van, aki pártlanszor haladt át.)
athaladok = [a[2] for a in ajto]
bent = []
with open('athaladas.txt', 'w') as ath:
    for tag in sorted(list(set(athaladok)), key = lambda x:int(x)):
        ath.write('%s %d\n' % (tag, athaladok.count(tag)))
        if athaladok.count(tag) % 2:
            bent.append(tag)

f(4)
print('A végén a társalgóban voltak: ' + ' '.join(bent))

f(5)
idok = []
letszamok = []
for i in range(len(ajto)):
    adat = ajto[i]
    idok.append('%s:%s' %(adat[0], adat[1]))
    eddigi = [a[3] for a in ajto[:i+1]]
    letszamok.append(eddigi.count('be') - eddigi.count('ki'))
mikor = idok[letszamok.index(max(letszamok))]
print('Például %s-kor voltak a legtöbben a társalgóban.' % mikor)

f(6)
ember = input('Adja meg a személy azonosítóját! ')

# Ez a 8. feladathoz kell
def perc(adat):
    return 60 * int(adat[0]) + int(adat[1])
vege = 15 * 60

# 7-8. feladat egyben
f(7)
percek = 0
emberadatai = [a for a in ajto if a[2] == ember]
for adat in emberadatai:
    if adat[3] == 'be':
        bentvan = True
        ido = '%s:%s-' %(adat[0], adat[1])
        kezdet = perc(adat)
    else:
        bentvan = False
        ido += '%s:%s' %(adat[0], adat[1])
        print(ido)
        percek += perc(adat) - kezdet
if bentvan:
    print(ido)
    percek += vege - kezdet
# Számít a vezető 0?

f(8)
holvan = 'a társalgóban volt' if bentvan else 'nem volt a társalgóban'
s = 'A(z) %s. személy összesen %d percet volt bent, a megfigyelés végén %s.'
print(s % (ember, percek, holvan))


Érettségi feladatok programozásból
2004 Személyazonosító jel

2005 LottóVigenère-tábla 2006 TelefonszámlaFehérjeZenei adók 2007 SMS-szavakFoci 2008 SMSRobot 2009 LiftAutomataÚtépítés 2010 HelyjegyTelekAnagramma 2011 SzójátékRejtvényPitypang 2012 FutárTörtekSzín-kép 2013 VálasztásokSzámokKözúti ellenőrzés 2014 IPv6CéllövészetNézőtér 2015 ExpedícióLatin táncokFej vagy írás 2016 ÖtszázZárTelefonos ügyfélszolgálat 2017 TesztversenyFürdőHiányzások 2018 TársalgóFogadóóraKerítés 2019 Céges autókTantárgyfelosztáseUtazás 2020 Meteorológiai jelentésMenetrendSorozatok 2021 GödrökBányató

Advertisement