-
Notifications
You must be signed in to change notification settings - Fork 0
/
exercise11.py
37 lines (36 loc) · 2.52 KB
/
exercise11.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
"""
Escribir un programa que genere un diccionario con la información del directorio, donde cada elemento corresponda a un cliente y tenga
por clave su nif y por valor otro diccionario con el resto de la información del cliente. Los diccionarios con la información de cada cliente
tendrán como claves los nombres de los campos y como valores la información de cada cliente correspondientes a los campos
"""
texto = "nif;nombre;email;teléfono;descuento\n01234567L;Luis González;luisgonzalez@mail.com;656343576;12.5\n71476342J;Macarena Ramírez;macarena@mail.com;692839321;8\n63823376M;Juan José Martínez;juanjo@mail.com;664888233;5.2\n98376547F;Carmen Sánchez;carmen@mail.com;667677855;15.7"
# Dividimos la cadena por el caracter de cambio de línea \n y creamos una lista con las subcadenas
lista_clientes = texto.split('\n')
# Inicializamos el diccionario que va a contener el directorio de clientes a vacío.
directorio = {}
# Dividimos la cadena del primer elemento de la lista de clientes (que contienen los
# nombres de los campos) por el caracter ; y creamos una lista con los campos.
lista_campos = lista_clientes[0].split(';')
# Bucle iterativo para recorrer los elementos de la lista lista_clientes.
# la variable cliente recorre desde el segundo elemento hasta el último elemento de la lista
# (el primer elemento contiene los nombres de campo así que no corresponde a un cliente)
for i in lista_clientes[1:]:
# Inicializamos el diccionario que va a contener los datos del cliente actual a vacío.
cliente = {}
# Dividimos la cadena i por el caracter ; y creamos una lista con las subcadenas con la
# información del cliente
lista_info = i.split(';')
# Bucle iterativo para recorrer los campos y añadir los pares al diccionario del cliente.
# j toma valores de 1 al número de campos menos 1. El primer elemento (posición 0) corresponde
# al nif y no se añade al diccionario porque se utilizará después como clave en el diccionario
# principal
for j in range(1,len(lista_campos)):
# Condicional. Si el campo actual es descuento convertimos su valor en real
if lista_campos[j] == 'descuento':
lista_info[j] = float(lista_info[j])
cliente[lista_campos[j]] = lista_info[j]
# Añadirmos un par al diccionario del directorio con la clave el nif del cliente y valor
# el diccionario que acabamos de crear con el resto de sus datos.
directorio[lista_info[0]] = cliente
# Mostramos el diccionario por pantalla
print(directorio)