Agenda bàsica

Dissenya les següents funcions en Python i desa-les al fitxer agenda.py:

agenda.crea_agenda(ldades)

Donada una llista de llistes ldades, on cada subllista conté dos strings que representen un nom i un telèfon, retorna un diccionari les claus del qual seran un string amb el nom, i els valors un string amb el número de telèfon. Suposa que no hi ha noms repetits a ldades. Per exemple,

>>> l = [["maria","931111111"], ["pep","912222222"], ["anna","93919391"]]
>>> d = crea_agenda(l)
>>> d == {"maria":"931111111", "pep":"912222222", "anna":"93919391"}
True

Nota

Podeu descarregar el fitxer amb tests test_crea_agenda.txt.

agenda.compta_prefixos(agenda, prefix)

Donat un diccionari agenda com el que retorna la funció anterior i un prefix telefònic (string), retorna quants números de telèfon del diccionari comencen amb aquest prefix. Per exemple,

>>> d = {"maria":"931111111", "pep":"912222222", "anna":"93119391"}
>>> compta_prefixos(d, '9311')
2
>>> compta_prefixos(d, '9')
3
>>> compta_prefixos(d, '67')
0

Nota

Podeu descarregar el fitxer amb tests test_compta_prefixos.txt.

agenda.conte_prefix(agenda, prefix)

Donat un diccionari com el descrit anteriorment i un prefix telefònic (string), retorni un booleà que indica si algun telèfon de l’agenda comença pel prefix indicat. Per exemple,

>>> d = {"maria":"931111111", "pep":"912222222", "anna":"93119391"}
>>> conte_prefix(d, '9311')
True
>>> conte_prefix(d, '93117')
False
>>> conte_prefix(d, '6')
False

Nota

Podeu descarregar el fitxer amb tests test_conte_prefix.txt.

agenda.noms_prefix(agenda, prefix)

Donat un diccionari com el descrit anteriorment i un prefix telefònic (string), retorna una llista amb els noms que tenen un telèfon amb aquest prefix, ordenada alfabèticament. Per exemple,

>>> d = {"maria":"931111111", "pep":"912222222", "anna":"93119391"}
>>> noms_prefix(d, '931')
['anna', 'maria']
>>> noms_prefix(d, '9')
['anna', 'maria', 'pep']
>>> noms_prefix(d, '6')
[]

Nota

Podeu descarregar el fitxer amb tests test_noms_prefix.txt.

agenda.crea_agenda_reps(ldades)

Fa el mateix que crea_agenda_reps però admet una llista amb noms repetits. Retorna un diccionari les claus del quals són els noms, i cada valor associat és una llista de strings amb tots els numeros de telèfon que corresponen al nom. L’ordre dels telèfons de cada nom serà el mateix en el que apareixen a la llista que se li passa com a paràmetre. Per exemple,

>>> l = [["maria","931111111"], ["pep","912222222"], ["anna","93919391"],
... ["pep","66477333"], ["maria","665322888"]]
>>> d = crea_agenda_reps(l)
>>> d == {"maria":["931111111","665322888"], "pep":["912222222","66477333"],
... "anna":["93919391"]}
True

Nota

Podeu descarregar el fitxer amb tests test_crea_agenda_reps.txt.

Solució

Disposeu d’una solució al fitxer agenda.py.