Traducció¶
Traducció¶
Un diccionari té per clau una paraula en una llengua i per valor una llista de les traduccions d’aquesta paraula en altres llengües. Per exemple:
>>> dt1 = {
... 'gat': ['gato', 'chat', 'cat'],
... 'casa': ['casa', 'maison', 'house'],
... 'serp': ['serpiente', 'serpent', 'snake'],
... }
Totes les paraules del diccionari tenen el mateix nombre de traduccions i sempre en el mateix ordre. L’identificador d’una llengua és la posició que ocupa en la llista de traduccions. En el cas de l’exemple, l’identificador 1 correspon al castellà, 2 al francès i 3 a l’anglès. L’identificador 0 és sempre el de la llengua de la clau (català en el cas de l’exemple).
Dissenyeu la funció:
- traduccio.traduccio(paraula, dic, llengua)¶
Donat un diccionari com el descrit i donat un identificador de llengua retorna la paraula expressada en la llengua. Si la paraula no és al diccionari retorna “”.
Per exemple:
>>> traduccio.traduccio('f', dt1, 2)
''
>>> traduccio.traduccio('gat', dt1, 0)
'gat'
>>> traduccio.traduccio('casa', dt1, 3)
'house'
Disposeu de jocs de prova al fitxer traduccio.txt.
Creació d’una llista d’imatges¶
Un diccionari té per clau el nom d’una categoria d’objectes i per valor una llista de tuples compostes pel nom d’un objecte de la categoria i el nom d’un fitxer d’imatge que conté una il·lustració de l’objecte. Per exemple:
>>> dc1 = {
... 'eina':[('escaire','esca_001.jpg'), ('martell', 'figures/martell.jpg')],
... 'animal':[('gat', 'miau.jpg'), ('serp', '../../figures/snake.jpg'), ('conill', 'conill.jpg')]
... }
Dissenyeu la funció llista_imatges que, donat un diccionari com el descrit, un diccionari de traduccions com el de la pregunta 1, el nom d’una categoria i l’identificador d’una llengua, retorni una llista de tuples (n,nf), essent n el nom de l’objecte de la categoria donada expressat en la llengua donada i nf el nom del fitxer de la imatge corresponent. La llista retornada ha d’estar ordenada pel nom dels objectes. Suposeu que el nom en el diccionari de categories està escrit en la mateixa llengua que en les claus del diccionari de traducció. Si la categoria no existeix, la funció ha de retornar la llista buida. Només s’han d’incloure a la llista els noms que estiguin als dos diccionaris.
- traduccio.llista_imatges(diccat, dictrad, categoria, llengua)¶
Donat un diccionari de categories, un diccionari de llengües, una categoria i un identificador de llengua, retorna una llista ordenada de parelles (nom, nom_de_fitxer) amb el nom expressat en la llengua indicada.
Per exemple:
>>> traduccio.llista_imatges(dc1, dt1, 'flor', 2)
[]
>>> traduccio.llista_imatges(dc1, dt1, 'animal', 2)
[('chat', 'miau.jpg'), ('serpent', '../../figures/snake.jpg')]
Creació del diccionari de traduccions a partir d’un fitxer de text¶
Un fitxer de text conté la traducció de paraules en diverses llengües.
S’estructura en línies en les que les diverses traduccions estan
separades per “:” (dos punts). Si hi ha espais en blanc, cal
eliminar-los. Per exemple, el fitxer trad.txt conté:
gat : gato : chat : cat
casa:casa: maison : house
serp:serpiente : serpent:snake
Dissenyeu una funció que donat el nom d’un fitxer amb el format
descrit retorni un diccionari de traducció com el de la funció
traduccio(). Comproveu que les paraules del diccionari creat
no contenen espais en blanc ni salts de línia.
- traduccio.creadictrad(nomfitxer)¶
Retorna un diccionari de traduccions a partir del fitxer de text
Per exemple:
>>> d = traduccio.creadictrad('trad.txt')
>>> assert d == dt1, "Els diccionaris següents haurien de ser iguals:\n{}\n{}".format(d, dt1)
Creació del diccionari de categories a partir d’un fitxer de text¶
Un fitxer de text conté la llista dels noms de fitxers amb
il·lustracions de diversos objectes. Està estructurat en línies, un
objecte per línia, i en cada línia hi ha el nom de l’objecte, la
categoria i el nom del fitxer que conté la il·lustració, separats per
“:”. Si hi ha espais en blanc, cal eliminar-los. Per exemple, el
fitxer cat.txt conté:
gat : animal : miau.jpg
serp : animal :../../figures/snake.jpg
martell : eina : hammer.jpg
conill : animal : conill.jpg
escaire : eina : esca_001.jpg
Dissenyeu una funció que, donat el nom d’un fitxer com el descrit,
retorni un diccionari de categories com el de la funció
llista_imatges(). Assegureu-vos que les paraules del
diccionari creat no contenen espais en blanc ni salts de
línia. Suposeu que no hi ha accents ni dièresis a les paraules del
fitxer.
- traduccio.creadiccat(nomfitxer)¶
Retorna un diccionari de traduccions a partir del fitxer de text
Per exemple:
>>> d = traduccio.creadiccat('cat.txt')
>>> assert d == dc1, "Els diccionaris següents haurien de ser iguals:\n{}\n{}".format(d, dc1)
Solució
Disposeu d’una solució al fitxer traduccio.py. Us encoratgem a resoldre el problema abans de
mirar la solució. Useu-la per comparar-la amb la vostra.