Ejercicio: 3Eva2017TII_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)