{"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-08-13T00:23:37","modified_gmt":"2026-08-13T05:23:37","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<figure class=\"wp-block-image alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"252\" height=\"215\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2018\/02\/mant_vehiculo01.png\" alt=\"mantenimiento veh\u00edculo revisi\u00f3n\" class=\"wp-image-16998\" \/><\/figure>\n\n\n\n<p>Se requiere observar los mantenimientos como:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\ndictMantenimiento = {\n    'preventivo': &#x5B;('llantas',  60,  4500),\n                   ('bujias',   45,  3000)],\n    'correctivo': &#x5B;('llantas',  90,  6000),\n                   ('zapatas', 120, 10000)]\n    }\n<\/pre><\/div>\n\n\n<p>y un historial de veh\u00edculos de ejemplo:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\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    }\n<\/pre><\/div>\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>Se desarrolla la funci\u00f3n <code>mantenimiento<\/code>(), seleccionando el registro desde el historial:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; highlight: [2]; title: ; notranslate\" title=\"\">\n    # Registro de veh\u00edculo\n    registro = dictHistorial&#x5B;strPlaca]&#x5B;'registro']\n    n = len(registro)\n<\/pre><\/div>\n\n\n<p>tomando como referencia los datos del diccionario <code>Mantenimiento<\/code>. para los tipos preventivo y correctivo<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\n    es_prev = dictMantenimiento&#x5B;'preventivo']\n    es_corr = dictMantenimiento&#x5B;'correctivo']\n<\/pre><\/div>\n\n\n<p>Luego se revisa si la <code><strong>parte<\/strong><\/code> del registro se encuentra en el listado de <code>preventivo<\/code>, <code>correctivo <\/code>o no requiere <code>nada<\/code> de mantenimiento.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\n    for i in range(0,n,1): # parte del veh\u00edculo \n        parte = registro&#x5B;i]&#x5B;0]\n        dias  = registro&#x5B;i]&#x5B;1]\n        usoKm = registro&#x5B;i]&#x5B;2]\n<\/pre><\/div>\n\n\n<p>primero se revisa si la <code>parte<\/code> es de <code><strong>repara<\/strong><\/code>r,<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; highlight: [2,5,6]; title: ; notranslate\" title=\"\">\n    for j in range(0,q,1): # correctivos\n        if (parte == es_corr&#x5B;j]&#x5B;0]):\n            c_dias  = es_corr&#x5B;j]&#x5B;1]\n            c_usoKm = es_corr&#x5B;j]&#x5B;2]\n            if (usoKm &gt;= c_usoKm):\n                repara.append(parte)\n<\/pre><\/div>\n\n\n<p>de la misma forma si es de prevenir, o no pasa nada.<\/p>\n\n\n\n<p>Al final de la funci\u00f3n se convierte cada parte del resultado en tuplas como pide el enunciado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>El an\u00e1lisis se realiza sobre los resultados de la funci\u00f3n anterior como punto de partida:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\n    diagnostico = mantenimientos(strPlaca,\n                                 dictHistorial,\n                                 dictMantenimiento)\n<\/pre><\/div>\n\n\n<p>Si el resultado de la <code>parte<\/code> es para mantenimiento preventivo, se a\u00f1ade a color <code>amarillo<\/code>, procediendo de forma semejante con los otros colores<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\n    if (diagnostico&#x5B;i]&#x5B;1]== 'preventivo'):\n           resultado&#x5B;'amarillo'].append(diagnostico&#x5B;i]&#x5B;0])\n<\/pre><\/div>\n\n\n<p><strong>Tarea<\/strong>: Analizar considerando tambi\u00e9n el n\u00famero de d\u00edas. Completar los otros literales usando las respuestas anteriores.<\/p>\n\n\n\n<p>el resultado del algoritmo, usando los datos de ejemplo es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>El diagn\u00f3stico de la placa :  GEC-2411\n&#091;('llantas', 'correctivo'), ('zapatas', 'nada')]\nEl equivalente en semaforo :  GEC-2411\n{'amarillo': &#091;], 'rojo': &#091;'llantas'], 'verde': &#091;'zapatas']}\nclientes por dar servicio correctivo de llantas\n&#091;'GEC-2411']<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python con todos los literales<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><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\n# literal a\ndef mantenimientos(strPlaca, dictHistorial, dictMantenimiento):\n    resultado = &#x5B;]\n    \n    # Registro de veh\u00edculo\n    registro = dictHistorial&#x5B;strPlaca]&#x5B;'registro']\n    n = len(registro)\n\n    # grupos por tipo mantenimiento\n    preven = &#x5B;]\n    repara = &#x5B;]\n    nada = &#x5B;]\n    es_prev = dictMantenimiento&#x5B;'preventivo']\n    es_corr = dictMantenimiento&#x5B;'correctivo']\n    m = len(es_prev)\n    q = len(es_corr)\n   \n    for i in range(0,n,1): # parte del veh\u00edculo \n        parte = registro&#x5B;i]&#x5B;0]\n        dias  = registro&#x5B;i]&#x5B;1]\n        usoKm = registro&#x5B;i]&#x5B;2]\n\n        for j in range(0,q,1): # correctivos\n            if (parte == es_corr&#x5B;j]&#x5B;0]):\n                c_dias  = es_corr&#x5B;j]&#x5B;1]\n                c_usoKm = es_corr&#x5B;j]&#x5B;2]\n                if (usoKm &gt;= c_usoKm):\n                    repara.append(parte)\n        \n        for k in range(0,m,1): # preventivos\n            if (parte == es_prev&#x5B;k]&#x5B;0]):\n                p_dias  = es_prev&#x5B;k]&#x5B;1]\n                p_usoKm = es_prev&#x5B;k]&#x5B;2]\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\n    for k in range(0,len(preven),1):\n        resultado.append((preven&#x5B;k],'preventivo'))\n    for j in range(0,len(repara),1):\n        resultado.append((repara&#x5B;j],'correctivo'))\n    for j in range(0,len(nada),1):\n        resultado.append((nada&#x5B;j],'nada'))\n    return(resultado)\n\n# literal b\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\n# literal c\ndef recomendar(strparte, strtipoMantenimiento,\n               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    }\n# un veh\u00edculo\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',\n      strtipoMantenimiento + ' de ' + strparte)\nprint(darservicio)\n\n<\/pre><\/div>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2017TII_T1 Mantenimiento veh\u00edculos Se requiere observar los mantenimientos como: y un historial de veh\u00edculos de ejemplo: Propuesta de soluci\u00f3n en Python: literal a Se desarrolla la funci\u00f3n mantenimiento(), seleccionando el registro desde el historial: tomando como referencia los datos del diccionario Mantenimiento. para los tipos preventivo y correctivo Luego se revisa si la parte [&hellip;]<\/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":11,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5183\/revisions"}],"predecessor-version":[{"id":25378,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5183\/revisions\/25378"}],"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}]}}