{"id":5183,"date":"2018-02-24T04:43:15","date_gmt":"2018-02-24T09:43:15","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=5183"},"modified":"2026-04-05T18:34:14","modified_gmt":"2026-04-05T23:34:14","slug":"s3eva2017tii_t1-mantenimiento-vehiculos","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva20\/s3eva2017tii_t1-mantenimiento-vehiculos\/","title":{"rendered":"s3Eva2017TII_T1 Mantenimiento veh\u00edculos"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva20\/3eva2017tii_t1-mantenimiento-vehiculos\/\" data-type=\"post\" data-id=\"5190\">3Eva2017TII_T1 Mantenimiento veh\u00edculos<\/a><\/p>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# CCPG1001-Fundamentos de Programaci\u00f3n - FIEC-ESPOL\n# 3Eva_IIT2017_T1 Mantenimiento veh\u00edculos\n# Tarea: Analizar el n\u00famero de d\u00edas\n\ndef mantenimientos(strPlaca, dictHistorial, dictMantenimiento):\n    resultado = &#x5B;]\n    \n    # Estado del veh\u00edculo analizado\n    estado = dictHistorial&#x5B;strPlaca]&#x5B;'registro']\n    n = len(estado)\n\n    # grupos por tipo mantenimiento\n    preven = &#x5B;]\n    repara = &#x5B;]\n    nada = &#x5B;]\n    prev = dictMantenimiento&#x5B;'preventivo']\n    corr = dictMantenimiento&#x5B;'correctivo']\n    m = len(prev)\n    q = len(corr)\n\n    # Analiza cada parte del veh\u00edculo    \n    for i in range(0,n,1):\n        parte = estado&#x5B;i]&#x5B;0]\n        dias  = estado&#x5B;i]&#x5B;1]\n        usoKm = estado&#x5B;i]&#x5B;2]\n\n        # Analiza correctivos\n        for j in range(0,q,1):\n            c_parte = corr&#x5B;j]&#x5B;0]\n            c_dias  = corr&#x5B;j]&#x5B;1]\n            c_usoKm = corr&#x5B;j]&#x5B;2]\n            if (parte == c_parte):\n                if (usoKm &gt;= c_usoKm):\n                    repara.append(parte)\n\n        # Analiza preventivos\n        for k in range(0,m,1):\n            p_parte = prev&#x5B;k]&#x5B;0]\n            p_dias  = prev&#x5B;k]&#x5B;1]\n            p_usoKm = prev&#x5B;k]&#x5B;2]\n            if (parte == p_parte):\n                if (usoKm &gt;= p_usoKm and not(parte in repara)):\n                    preven.append(parte)\n\n        # Revisa si lo a\u00f1ade a &quot;nada&quot;\n        if not(parte in repara) and not(parte in preven):\n            nada.append(parte)\n\n    # Convierte a tuplas como se requiere\n    m = len(preven)\n    q = len(repara)\n    p = len(nada)\n    for k in range(0,m,1):\n        resultado.append((preven&#x5B;k],'preventivo'))\n    for j in range(0,q,1):\n        resultado.append((repara&#x5B;j],'correctivo'))\n    for j in range(0,p,1):\n        resultado.append((nada&#x5B;j],'nada'))\n    return(resultado)\n\ndef semaforo(strPlaca, dictHistorial, dictMantenimiento):\n    resultado = {'amarillo':&#x5B;],\n                 'rojo':&#x5B;],\n                 'verde':&#x5B;]}\n    \n    diagnostico = mantenimientos(strPlaca,\n                                 dictHistorial,\n                                 dictMantenimiento)\n    n = len(diagnostico)\n    \n    for i in range(0,n,1):\n        if (diagnostico&#x5B;i]&#x5B;1]== 'preventivo'):\n            resultado&#x5B;'amarillo'].append(diagnostico&#x5B;i]&#x5B;0])\n        if (diagnostico&#x5B;i]&#x5B;1]== 'correctivo'):\n            resultado&#x5B;'rojo'].append(diagnostico&#x5B;i]&#x5B;0])\n        if (diagnostico&#x5B;i]&#x5B;1]== 'nada'):\n            resultado&#x5B;'verde'].append(diagnostico&#x5B;i]&#x5B;0])\n    return(resultado)\n\ndef recomendar(strparte, strtipoMantenimiento, dictHistorial, dictMantenimiento):\n    darservicio = &#x5B;]\n    for cliente in dictHistorial:\n        colores = semaforo(cliente,\n                           dictHistorial,\n                           dictMantenimiento)\n        if (strtipoMantenimiento=='preventivo'):\n            partes = colores&#x5B;'amarillo']\n            if (strparte in partes):\n                darservicio.append(cliente)\n        if (strtipoMantenimiento=='correctivo'):\n            partes = colores&#x5B;'rojo']\n            if (strparte in partes):\n                darservicio.append(cliente)\n    return(darservicio)\n\n# INGRESO\ndictMantenimiento = {\n    'preventivo': &#x5B;('llantas',  60,  4500),\n                   ('bujias',   45,  3000)],\n    'correctivo': &#x5B;('llantas',  90,  6000),\n                   ('zapatas', 120, 10000)]\n    }\n\ndictHistorial = {\n    'GEC-2411': {\n        'propietario': 'Eduardo Cueva',\n        'registro': &#x5B;('llantas',  12, 32500),\n                     ('zapatas', 180, 500)]\n        },\n    'GAA-0321': {\n        'propietario': 'Andrea Martinez',\n        'registro': &#x5B;('bujias',   40, 500),\n                     ('zapatas', 120, 100)]\n        }\n    }\nstrPlaca = 'GEC-2411'\nstrparte = 'llantas'\nstrtipoMantenimiento = 'correctivo'\n\n# PROCESAMIENTO\ndiagnostico = mantenimientos(strPlaca,\n                             dictHistorial,\n                             dictMantenimiento)\n\ncolores = semaforo(strPlaca, dictHistorial,\n                   dictMantenimiento)\n\ndarservicio = recomendar(strparte,\n                         strtipoMantenimiento,\n                         dictHistorial,\n                         dictMantenimiento)\n\n# SALIDA\nprint('El diagn\u00f3stico de la placa : ', strPlaca)\nprint(diagnostico)\nprint('El equivalente en semaforo : ', strPlaca)\nprint(colores)\nprint('clientes por dar servicio '+ strtipoMantenimiento + ' de ' + strparte)\nprint(darservicio)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2017TII_T1 Mantenimiento veh\u00edculos Propuesta de soluci\u00f3n en Python:<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-ejemplos","format":"standard","meta":{"footnotes":""},"categories":[143],"tags":[58,157],"class_list":["post-5183","post","type-post","status-publish","format-standard","hentry","category-fp-s3eva20","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=5183"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5183\/revisions"}],"predecessor-version":[{"id":23760,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5183\/revisions\/23760"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=5183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=5183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=5183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}