2. Contrasenyes febles

Una empresa disposa d’informació sobre les contrasenyes dels seus usuaris de sistemes informàtics i necessita desenvolupar funcions per gestionar la seguretat d’aquestes contrassenyes.

Es considera que una contrasenya és feble si té menys de 6 caràcters o està formada només per caràcters alfabètics.

Dissenya la funció següent i desa-la al fitxer febles.py:

febles.hi_ha_feble(lcont)

Retorna la primera contrasenya feble de lcont.

Paràmetres:

usuari (list[str]) – Llista d’strings que representen parelles amb el codi d’un servei i la contrasenya de l’usuari per aquest servei separats per dos punts (:).

Tipus de retorn:

str

Retorna:

La primera contrasenya de la llista que és feble o un string buit si no n’hi ha cap.

Els següents doctests mostren exemples del que ha de fer la funció:

>>> lc1 = ['101:abc123', '205:123456', '312:password']
>>> hi_ha_feble(lc1)
'password'

>>> lc2 = ['315:superpass3', '209:123456', '101:abcd1234']
>>> hi_ha_feble(lc2)
''

Nota

Disposes de més tests al fitxer test-hiha-feble.txt

A més, es disposa d’una llista de llistes amb tots els usuaris on cada subllista conté el nom de l’usuari (string) i una llista (no buida) de serveis i contrasenyes d’aquest usuari. Per exemple:

>>> usuaris = [
...     ["anna23", ["101:abc123", "205:123456", "312:password"]],
...     ["joan_p", ["234:qwerty32", "102:1234", "307:qwerty", "209:joan2024"]],
...     ["marta_x", ["312:holamarta", "205:Marta123", "410:admin123"]],
...     ["carla_t", ["303:qwerty2", "208:12345", "209:contr", "407:adminadmin"]],
...     ["jordi_s", ["315:superpass3", "209:123456", "101:abcd1234"]],
...     ["laura_n", ["303:f2342ds", "315:pwewwu332"]]
... ]

Dissenya la funció següent i desa-la al fitxer febles.py:

febles.filtra_usuaris_dep(lusuaris, ldep)

Retorna els usuaris que tenen alguna contrasenya feble, juntament amb la primera contrasenya feble, que pertanyen al departament especificat per ldep.

Paràmetres:
  • lusuaris (list[str,list]) – Llista d’usuaris a on cada usuari està representat pel nom i la llista de serveis i contrasenyes.

  • ldep (list[str]) – Llista de noms d’usuari d’un departament.

Tipus de retorn:

list[tuple]

Retorna:

Una llista amb els usuaris que tenen alguna contrasenya feble formada per tuples amb el nom d’usuari i la primera contrasenya feble de la llista de serveis i contrasenyes d’aquest usuari. La llista estarà ordenada alfabèticament per nom d’usuari de forma descendent. Si no hi ha cap usuari del departament o cap usuari del departament té alguna contrasenya feble, retorna una llista buida.

Els següents doctests mostren exemples del que ha de fer la funció:

>>> usuaris = [
...     ["anna23", ["101:abc123", "205:123456", "312:password"]],
...     ["joan_p", ["234:qwerty32", "102:1234", "307:qwerty", "209:joan2024"]],
...     ["marta_x", ["312:holamarta", "205:Marta123", "410:admin123"]],
...     ["carla_t", ["303:qwerty2", "208:12345", "209:contr", "407:adminadmin"]],
...     ["jordi_s", ["315:superpass3", "209:123456", "101:abcd1234"]],
...     ["laura_n", ["303:f2342ds", "315:pwewwu332"]]
... ]

>>> ldep = ["anna23", "marta_x", "jordi_s", "carla_t"]
>>> filtra_usuaris_dep(usuaris, ldep)
[('marta_x', 'holamarta'), ('carla_t', '12345'), ('anna23', 'password')]

>>> ldep = ["toni_g", "laura_n"]
>>> filtra_usuaris_dep(usuaris, ldep)
[]

Nota

Disposes de més tests al fitxer test-filtra-usuaris.txt

Disposeu de solucions al fitxer febles.py