Ejercicio: 3Eva_IIT2017_T1 Mantenimiento vehículos
Propuesta de solución en Python:
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL # 3Eva_IIT2017_T1 Mantenimiento vehículos # Tarea: Analizar el número de días def mantenimientos(strPlaca, dictHistorial, dictMantenimiento): resultado = [] # Estado del vehículo analizado estado = dictHistorial[strPlaca]['registro'] n = len(estado) # grupos por tipo mantenimiento preven = [] repara = [] nada = [] prev = dictMantenimiento['preventivo'] corr = dictMantenimiento['correctivo'] m = len(prev) q = len(corr) # Analiza cada parte del vehículo for i in range(0,n,1): parte = estado[i][0] dias = estado[i][1] usoKm = estado[i][2] # Analiza correctivos for j in range(0,q,1): c_parte = corr[j][0] c_dias = corr[j][1] c_usoKm = corr[j][2] if (parte == c_parte): if (usoKm >= c_usoKm): repara.append(parte) # Analiza preventivos for k in range(0,m,1): p_parte = prev[k][0] p_dias = prev[k][1] p_usoKm = prev[k][2] if (parte == p_parte): if (usoKm >= p_usoKm and not(parte in repara)): preven.append(parte) # Revisa si lo añade a "nada" if not(parte in repara) and not(parte in preven): nada.append(parte) # Convierte a tuplas como se requiere m = len(preven) q = len(repara) p = len(nada) for k in range(0,m,1): resultado.append((preven[k],'preventivo')) for j in range(0,q,1): resultado.append((repara[j],'correctivo')) for j in range(0,p,1): resultado.append((nada[j],'nada')) return(resultado) def semaforo(strPlaca, dictHistorial, dictMantenimiento): resultado = {'amarillo':[], 'rojo':[], 'verde':[]} diagnostico = mantenimientos(strPlaca, dictHistorial, dictMantenimiento) n = len(diagnostico) for i in range(0,n,1): if (diagnostico[i][1]== 'preventivo'): resultado['amarillo'].append(diagnostico[i][0]) if (diagnostico[i][1]== 'correctivo'): resultado['rojo'].append(diagnostico[i][0]) if (diagnostico[i][1]== 'nada'): resultado['verde'].append(diagnostico[i][0]) return(resultado) def recomendar(strparte, strtipoMantenimiento, dictHistorial, dictMantenimiento): darservicio = [] for cliente in dictHistorial: colores = semaforo(cliente, dictHistorial, dictMantenimiento) if (strtipoMantenimiento=='preventivo'): partes = colores['amarillo'] if (strparte in partes): darservicio.append(cliente) if (strtipoMantenimiento=='correctivo'): partes = colores['rojo'] if (strparte in partes): darservicio.append(cliente) return(darservicio) # INGRESO dictMantenimiento = { 'preventivo': [('llantas', 60, 4500), ('bujias', 45, 3000)], 'correctivo': [('llantas', 90, 6000), ('zapatas', 120, 10000)] } dictHistorial = { 'GEC-2411': { 'propietario': 'Eduardo Cueva', 'registro': [('llantas', 12, 32500), ('zapatas', 180, 500)] }, 'GAA-0321': { 'propietario': 'Andrea Martinez', 'registro': [('bujias', 40, 500), ('zapatas', 120, 100)] } } strPlaca = 'GEC-2411' strparte = 'llantas' strtipoMantenimiento = 'correctivo' # PROCESAMIENTO diagnostico = mantenimientos(strPlaca, dictHistorial, dictMantenimiento) colores = semaforo(strPlaca, dictHistorial, dictMantenimiento) darservicio = recomendar(strparte, strtipoMantenimiento, dictHistorial, dictMantenimiento) # SALIDA print('El diagnóstico de la placa : ', strPlaca) print(diagnostico) print('El equivalente en semaforo : ', strPlaca) print(colores) print('clientes por dar servicio '+ strtipoMantenimiento + ' de ' + strparte) print(darservicio)