FANDOM


A 2., 4. és 5. feladatnál kétféle megoldás is található, egy klasszikusabb és egy pythonosabb.

Check Tesztelve a 3.1.2 verzióban.

# -*- coding: utf-8 -*-
#sms.py -- 2007. májusi érettségi

def betűkódja(betű):
    #Az 'a' kódja 97, 3-mal osztva egy maradékot ad.
    #Ezt vonjuk ki előbb.
    #A 7-es gombon van először 4 betű.
    if betű<'s':
        return (ord(betű)-1)//3-30
    elif betű=='s':
        return 7
    elif betű<'w':
        return 8
    else:
        return 9

print("1. feladat")
#Lehet, hogy a gonosz user több betűt ír, válasszuk le az elsőt!
print("A betű kódja:",betűkódja(input("Kérem a betűt: ")[0]))

print("\n2. feladat, klasszikus megoldás:")
szó=input("Kérek egy szót: ")
print("Az ehhez tartozó számsor:")
#1. változat: egyszerű, de lesz egy felesleges vessző a végén.
for betű in szó:
    print (betűkódja(betű), end="")
print() #Ne maradjon ott a kurzor.

print("2. feladat, pythonos megoldás:")
#A join az elválasztóstring metódusa!
#betű --> fv. --> szám --> string --> lista a [] miatt --> "joinolt" szöveg
print("".join([str(betűkódja(betű)) for betű in szó]))

print("\n3. és 6. feladat")
szavak=[]
try:
    f=open("szavak.txt","r")
    g=open("kodok.txt","w")
    for sor in f:
        szó=sor.rstrip() #enter leválasztása a végéről
        szavak.append(szó)
        print("".join([str(betűkódja(betű)) for betű in szó]), file=g)
    print(len(szavak),"szó beolvasva, a kódok kiírva.")
    f.close()
    g.close()
except IOError:
    print("A beolvasás vagy a kiírás nem sikerült.")

print("\n4-5. feladat, klasszikus megoldás:")
max=''
darab=0
for szó in szavak:
    if len(szó)>len(max):
        max=szó
    if len(szó)<=5:
        darab+=1
print("A leghosszabb szó:",max)
print("Hossza:",len(max),"betű.")
print(darab,"darab rövid szó van.")

print("4-5. feladat, pythonos megoldás:")
maxx=sorted(szavak, key=len)[-1]
print("A leghosszabb szó:",maxx)
print("Hossza:",len(maxx),"betű.")
#Ez létrehoz egy listát, amelyben a rövid szavakat 1, a többit 0 jelöli, 
#és összeadja ezeket a számokat:
print(sum(map(lambda x:len(x)<6,szavak)),"darab rövid szó van.")

#Logikai értékű segédfüggvény, a "kód" számokból álló lista
def egyezik(szó,kód):
    return ([betűkódja(betű) for betű in szó] == kód)

print("\n7. feladat")
print("Írd be a számkódot jegyenként, amelyekhez keressük a szót. Nullával fejezd be.")
kód=[]
while True:
    #Ez a pythonos megoldás, lásd a Ciklus szócikket.
    #Ellenőrzést nem végzünk, az érettségin nem kell.
    k=int(input("A következő számjegy: "))
    if k==0:
        break
    kód.append(k)
print("A kódnak megfelelő szavak:")
for szó in szavak:
    if egyezik(szó,kód):
        print(szó)
else: #Ez az else a forhoz tartozik, nem az ifhez!!!!!! A ciklus végén fut le.
    print("Vége a listának, ennyit találtam.")

#Előkészület a 8. és 9. feladathoz
kódlista=[[betűkódja(betű) for betű in szó] for szó in szavak] #2D lista
#print(kódlista)
def kódokszáma(kód):
    #Megmondja, hogy egy lista formájában adott kód hányszor fordul elő.
    return sum(map(lambda x:x==kód,kódlista))

print("\n8. feladat")
"""
Végigmegyünk a kódokon, és egy halmazba rakjuk, ami már volt.
Így zárjuk ki az ismétlődést.
Listákat közvetlenül nem lehet halmazba rakni, mert nem 
"hashable" objektumok, ezért tuple-vá alakítjuk őket.
Lásd: http://docs.python.org/py3k/library/stdtypes.html#set-types-set-frozenset
"""
használtkód=set()
maxkód=kódlista[0]
for kód in kódlista:
    if tuple(kód) not in használtkód and kódokszáma(kód)>1:
        #Hozzáadjuk a halmazhoz, mert ezzel a kóddal most rögtön elbánunk.
        használtkód.add(tuple(kód))
        #8. feladat
        for szó in szavak:
            if egyezik(szó,kód):
                print(szó,":","".join([str(x) for x in kód]),end="; ")
        #9. feladathoz, maximumkiválasztás
        if kódokszáma(kód)>kódokszáma(maxkód):
            maxkód=kód
print()

print("\n9. feladat")
print("A legtöbbször előforduló kód a szótárban:","".join([str(x) for x in maxkód]))
for szó in szavak:
    if egyezik(szó,maxkód):
        print(szó)

Ez a szócikk forráskódot tartalmaz, amely egy WikiMedia-kiegészítés segítségével olyan színesen jeleníthető meg, mint például ebben a Wikipédia-cikkben. A kiegészítést a Wikia-stáb ígérete szerint 2010 végéig frissítik, addig türelmet kérünk a fapados kinézet miatt.

É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ő

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

A Wikia-hálózat

Véletlen wiki