☠ 6. feladat

Dictionary - II.

A harmadik feladat magyar-angol szótárának megfordításával készítsétek el az angol-magyar szótárt, majd ennek segítségével a függvényt, ami tetszőleges angol szöveget magyarra fordít!

  • A kézzel bevitt szótár nem jó megoldás! (használjátok a dict típus items() tagfüggvényét!)

  • Ha ismeretlen szóval találkoztok, akkor csináljátok azt, amit a Google Translator: csak írjátok ki az eredeti szót fordítás nélkül. ( A szöveg többi részét természetesen le kell fordítani.)

  • Nem baj, ha nyelvtanilag nem helyes, vagy értelmetlen a fordítás.


In [8]:
szotar={'a':'the',
        'majom': 'monkey',
        'kutya':'dog',
        'szereti':'likes',
        'banánt':'banana',
        'kolbászt':'sausage'}

angol_mondat='The monkey likes banana. Every dog likes sausage.'

Megoldás

Először, megfordítjuk a dict-et:

In [34]:
ratozs = dict() # Üres dict létrehozása
for i in range(len(szotar)): # A szotar elemein végigmegyünk...
    ratozs[list(szotar.values())[i]] = list(szotar.keys())[i] # ... és a kulcsszavakat értékként, az értékeket kulcsszavakként mentjük az új szótárba    
ratozs
Out[34]:
{'banana': 'banánt',
 'dog': 'kutya',
 'likes': 'szereti',
 'monkey': 'majom',
 'sausage': 'kolbászt',
 'the': 'a'}

Majd létrehozzuk a függvényt, ami lefordítja a mondatot. Ez lényegileg ugyanaz, mint a 3. feladatban, csak az angol szavak helyett magyar szavak vannak és fordítva.

In [35]:
def fordito(szotar, string):
    angolszavak = string.split()             # A kapott mondat feldarabolása
    magyarszavak = list()
    for szo in angolszavak:                  # A függvény végigmegy a mondat szavain
        if szo in szotar:
            magyarszavak += [szotar[szo]]    # Ha a szó benne van a szótárban, a magyar szót használja
        else:
            magyarszavak += [szo]            # Ha nincs, akkor az angolt
    return " ".join(magyarszavak)            # Az új szólista visszaalakítása stringgé

És leellenőrizzük, hogy jól működik-e: (sajnos az írásjelek és a nagyetűk miatt a hatékonyság csökken)

In [37]:
fordito(ratozs, angol_mondat)
Out[37]:
'The majom szereti banana. Every kutya szereti sausage.'