3. Feladat

Dictionary - I.

Írjatok egy függvényt, ami a megadott szótár segítségével tetszőleges magyar szöveget angolra fordít!

  • A fordítás történjen szóról szóra.
  • 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 [1]:
szotar={'a':'the',
        'majom': 'monkey',
        'kutya':'dog',
        'szereti':'likes',
        'banánt':'banana',
        'kolbászt':'sausage'}

pelda_szoveg='a majom szereti a banánt minden kutya szereti a kolbászt'

Megoldás

A fordito függvény a kapott sringet először szétszedi a szavakra, majd azokat egyenkét fordítja le egy for-ciklus segítségével. Egy adott szóról először elönti, hogy szerepel-e a szótárban: ha nem, akkor egyszerűen berakja a magyar szót az új szólistába, ha igen, akkor a magyar szónak megfelelő angol szót rakja bele. Végül, az új szólistát visszaalakítja stinggé, amit a függvény, mint visszatérési értéket visszaad.

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

Ez alapján, a példamondat angolul:

In [3]:
fordito(szotar, pelda_szoveg)
Out[3]:
'the monkey likes the banana minden dog likes the sausage'

És még néhány másik mondat:

In [4]:
ujszotar = {'minden':"every", 'bogár':'beetle', "rovar":'insect', 'nem':'not', 'szó':'word',
            'elszáll':'flies away', 'írás':'writing', 'megmarad':'remains', 'lenni':'to be',
            'vagy':'are', 'itt':'here', 'kérdés':'question'}
mondat1 = "minden bogár rovar de nem minden rovar bogár"
mondat2 = "szó elszáll írás megmarad"
mondat3 = "lenni vagy nem lenni ez itt a kérdés"
In [5]:
fordito(ujszotar, mondat1)
Out[5]:
'every beetle insect de not every insect beetle'
In [6]:
fordito(ujszotar, mondat2)
Out[6]:
'word flies away writing remains'
In [7]:
fordito(ujszotar, mondat3)
Out[7]:
'to be are not to be ez here a question'