{"id":6764,"date":"2018-09-14T23:54:12","date_gmt":"2018-09-15T04:54:12","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/ccpg1001\/?p=6764"},"modified":"2026-04-05T18:33:45","modified_gmt":"2026-04-05T23:33:45","slug":"s3eva2018ti_t1-choferes-y-rutas-trailers","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva20\/s3eva2018ti_t1-choferes-y-rutas-trailers\/","title":{"rendered":"s3Eva2018TI_T1 Choferes y Rutas Trailers"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva20\/3eva2018ti_t1-choferes-y-rutas-trailers\/\" data-type=\"post\" data-id=\"6766\">3Eva2018TI_T1 Choferes y Rutas Trailers<\/a><\/p>\n\n\n\n<p>Propuesta en <strong>Python<\/strong>, se incluye la funci\u00f3n <strong><em>calcularFecha<\/em><\/strong>() se presenta para poder probar las funciones en el programa de prueba.<\/p>\n\n\n\n<p>El archivo con datos de prueba usado es: <a href=\"https:\/\/www.dropbox.com\/s\/4ynugjcofspox16\/rutasManejadas2018.txt?dl=0\">rutasManejadas2018.txt<\/a><\/p>\n\n\n\n<p>La propuesta considera el uso de listas, por ser parte de los ejercicios del proyecto para 3ra Evaluaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\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_IT2018_T1 Choferes y Rutas Trailers\n\n# literal a\ndef cargarDatos(narchivo):\n    loschoferes = &#x5B;]\n    tabla = {}\n    \n    archivo  = open(narchivo,'r')\n    cabecera = archivo.readline()\n    linea = archivo.readline()\n    while not(linea==''):\n        linea  = linea.strip('\\n')\n        partes = linea.split(',')\n        ruta   = partes&#x5B;0]\n        chofer = partes&#x5B;1]\n        fecha  = partes&#x5B;2]\n        \n        if not(chofer in loschoferes):\n            loschoferes.append(chofer)\n\n        if not(fecha in tabla):\n            tabla&#x5B;fecha] = {ruta:&#x5B;chofer]}\n        else:\n            if not(ruta in tabla&#x5B;fecha]):\n                tabla&#x5B;fecha]&#x5B;ruta] = &#x5B;chofer]\n            else:\n                tabla&#x5B;fecha]&#x5B;ruta].append(chofer)\n                \n        linea = archivo.readline()\n        \n    archivo.close()\n\n    return((loschoferes,tabla))\n\n# funci\u00f3n para pruebas, no requerida en la evaluaci\u00f3n\nimport datetime as dtt\n\ndef calcularFecha(unafecha,n):\n    formato = '%d-%m-%Y'\n    fecha   = dtt.datetime.strptime(unafecha,formato)\n    pasada  = fecha - dtt.timedelta(days=n)\n    pasadatxt = dtt.datetime.strftime(pasada,formato)\n    return(pasadatxt)\n\n# literal b\ndef encontrarChoferes(tabla,loschoferes,unafecha,unaruta,n):\n    simanejaron = &#x5B;]\n    fechas = list(tabla.keys())\n    for i in range(1,n+1,1):\n        pasada = calcularFecha(unafecha,i)\n        if (pasada in fechas):\n            trabajaron = tabla&#x5B;pasada]&#x5B;unaruta]\n            for unchofer in trabajaron:\n                if not(unchofer in simanejaron):\n                    simanejaron.append(unchofer)\n    nomanejaron = &#x5B;]\n    for unchofer in loschoferes:\n        if not(unchofer in simanejaron):\n            nomanejaron.append(unchofer)\n    return(nomanejaron)\n\n# literal c\ndef grabarArchivo(tabla,loschoferes,unafecha,n):  \n    narchivograba = unaruta+'_'+unafecha+'_'+str(n)+'.txt'\n    \n    archivo = open(narchivograba,'w')\n    \n    cabecera = 'Para la ruta '+unaruta+'\\n'\n    cabecera = cabecera + 'los choferes disponibles para la fecha '+unafecha+'\\n'\n    cabecera = cabecera + 'que no hayan manejado '+str(n)+' dias anteriores son: \\n'\n    archivo.write(cabecera)\n    \n    nomanejaron = encontrarChoferes(tabla,loschoferes,unafecha,unaruta,n)\n\n    for cadachofer in nomanejaron:\n        archivo.write(cadachofer+'\\n')\n    archivo.close()\n    \n    return(narchivograba)\n<\/pre><\/div>\n\n\n<p>programa de prueba, como trabajo extra, no requerido para el examen:<\/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# PROGRAMA PRUEBA -------\n# INGRESO\nnarchivo = 'rutasManejadas2018.txt'\nunafecha = '19-05-2018'\nunaruta = 'Guayaquil-Cuenca'\nn = 2\n\n# PROCEDIMIENTO\ndatos = cargarDatos(narchivo)\nloschoferes = datos&#x5B;0]\ntabla = datos&#x5B;1]\nnomanejaron = encontrarChoferes(tabla,loschoferes,unafecha,unaruta,n)\nelarchivo = grabarArchivo(tabla,loschoferes,unafecha,n)\n\n# SALIDA\nprint('a) los choferes registrados son: ')\nprint(loschoferes)\nprint('   la tabla de trabajos es: ')\nprint(tabla)\nprint('b) los choferes que no manejaron en ')\nprint('  '+unaruta+', '+str(n)+' dias antes del '+unafecha+': ')\nprint(nomanejaron)\nprint('c) resultados en el archivo: ', elarchivo)\n<\/pre><\/div>\n\n\n<p>Se muestra el resultado en pantalla del programa usando los datos de prueba del archivo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a) los choferes registrados son: \n&#091;'SMS', 'AGB', 'SMZ', 'EVN', 'AAQ']\n   la tabla de trabajos es: \n{'17-05-2018': {'Guayaquil-Cuenca': &#091;'SMS', 'SMZ'], 'Guayaquil-Daule': &#091;'EVN']}, '18-05-2018': {'Guayaquil-Cuenca': &#091;'AGB'], 'Guayaquil-Daule': &#091;'AAQ']}}\n\nb) los choferes que no manejaron en \n  Guayaquil-Cuenca, 2 dias antes del 19-05-2018: \n&#091;'EVN', 'AAQ']\n\nc) resultados en el archivo:  Guayaquil-Cuenca_19-05-2018_2.txt\n&gt;&gt;&gt; <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2018TI_T1 Choferes y Rutas Trailers Propuesta en Python, se incluye la funci\u00f3n calcularFecha() se presenta para poder probar las funciones en el programa de prueba. El archivo con datos de prueba usado es: rutasManejadas2018.txt La propuesta considera el uso de listas, por ser parte de los ejercicios del proyecto para 3ra Evaluaci\u00f3n. Algoritmo en [&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-6764","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\/6764","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=6764"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/6764\/revisions"}],"predecessor-version":[{"id":23758,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/6764\/revisions\/23758"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=6764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=6764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=6764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}