{"id":5835,"date":"2018-09-01T01:20:14","date_gmt":"2018-09-01T06:20:14","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/ccpg1001\/?p=5835"},"modified":"2026-04-05T18:03:48","modified_gmt":"2026-04-05T23:03:48","slug":"s2eva2018ti_t2-pago-nomina-mensual","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s2eva20\/s2eva2018ti_t2-pago-nomina-mensual\/","title":{"rendered":"s2Eva2018TI_T2 Pago nomina mensual"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-2eva20\/2eva2018ti_t2-pago-nomina-mensual\/\" data-type=\"post\" data-id=\"5833\">2Eva2018TI_T2 Pago nomina mensual<\/a><\/p>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/p>\n\n\n\n<p>archivo de prueba: <a href=\"https:\/\/drive.google.com\/open?id=1c0WClFDouAxPD7i5bbZLMqzIyqgHGJZB\">meshoratrabajada.txt<\/a><\/p>\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# 2Eva_IT2018_T2 Pago nomina mensual\n# Propuesta modo simple pero larga\n# Tarea: Proponer simplificaciones a los algoritmos\n\ndef calcularHoras(linea):\n    linea  = linea.strip('\\n')\n    partes = linea.split(',')\n    fecha  = partes&#x5B;0]\n    dia = int(partes&#x5B;1])\n    esferiado = partes&#x5B;2]\n    ID = partes &#x5B;3]\n    nombre   = partes&#x5B;4]\n    sucursal = partes&#x5B;5]\n    ciudad   = partes&#x5B;6]\n    horas    = int(partes&#x5B;7])\n\n    trabajado = &#x5B;ID,ciudad, 0,0,0,0]\n    if (esferiado=='Si'):\n        trabajado&#x5B;5] = horas\n    else:\n        if (dia&gt;=6):\n            trabajado&#x5B;4] = horas\n        else:\n            if (horas&lt;=8):\n                trabajado&#x5B;2] = horas\n            else:\n                trabajado&#x5B;2] = 8\n                trabajado&#x5B;3] = horas-8\n    return(trabajado)\n\ndef leerData(nomA):\n    \n    total = {}\n    archivo = open(nomA,'r')\n    # factores\n    linea = archivo.readline()\n    linea = linea.strip('\\n')\n    partes = linea.split(',')\n    VH = float(partes&#x5B;1])\n    \n    linea = archivo.readline()\n    linea = linea.strip('\\n')\n    partes = linea.split(',')\n    \n    HR = float(partes&#x5B;1])\n    linea = archivo.readline()\n    linea = linea.strip('\\n')\n    partes = linea.split(',')\n    \n    HER = float(partes&#x5B;1])\n    linea = archivo.readline()\n    linea = linea.strip('\\n')\n    partes = linea.split(',')\n    \n    HFDS = float(partes&#x5B;1])\n    linea = archivo.readline()\n    linea = linea.strip('\\n')\n    partes = linea.split(',')\n    HF = float(partes&#x5B;1])\n    \n    # encabezado\n    linea = archivo.readline()\n    \n    # datos    \n    linea = archivo.readline()\n    parafecha = linea.split(',')\n    parafecha = parafecha&#x5B;0].split('-')\n    mes = parafecha&#x5B;1]\n    anio = parafecha&#x5B;2]\n    \n    while not(linea==''):\n        trabajado = calcularHoras(linea)\n        ID = trabajado&#x5B;0]\n        ciudad = trabajado&#x5B;1]\n        normal = trabajado&#x5B;2]*VH*HR\n        extra = trabajado&#x5B;3]*VH*HER\n        finsem = trabajado&#x5B;4]*VH*HFDS\n        feriado = trabajado&#x5B;5]*VH*HF\n        \n        if not(ciudad in total):\n            total&#x5B;ciudad] = {ID:{'HR': normal,\n                                'HER': extra,\n                                'HFDS': finsem,\n                                'HF': feriado}}\n        else:\n            if not(ID in total&#x5B;ciudad]):\n                total&#x5B;ciudad]&#x5B;ID] = {'HR': normal,\n                                     'HER': extra,\n                                     'HFDS': finsem,\n                                     'HF': feriado}\n            else:\n                total&#x5B;ciudad]&#x5B;ID]&#x5B;'HR'] = total&#x5B;ciudad]&#x5B;ID]&#x5B;'HR'] + normal\n                total&#x5B;ciudad]&#x5B;ID]&#x5B;'HER'] = total&#x5B;ciudad]&#x5B;ID]&#x5B;'HER'] + extra\n                total&#x5B;ciudad]&#x5B;ID]&#x5B;'HFDS'] = total&#x5B;ciudad]&#x5B;ID]&#x5B;'HFDS'] + finsem\n                total&#x5B;ciudad]&#x5B;ID]&#x5B;'HF'] = total&#x5B;ciudad]&#x5B;ID]&#x5B;'HF'] + feriado\n        linea = archivo.readline()     \n    \n    archivo.close()\n    pagonomina = (total,mes,anio)\n    return(pagonomina)\n\ndef generareporte(nomA):\n    pagonomina = leerData(nomA)\n    total  = pagonomina&#x5B;0]\n    mes    = pagonomina&#x5B;1]\n    anio   = pagonomina&#x5B;2]\n    ciudad = list(total.keys())\n    \n    for lugar in ciudad:\n        narchivo = lugar+mes+'-'+anio+'.txt'\n        archivo  = open(narchivo,'w')\n        registro = total&#x5B;lugar]\n        # Tarea: Poner encabezado\n        \n        for empleado in registro:\n            linea = empleado +','+str(total&#x5B;lugar]&#x5B;empleado]&#x5B;'HR'])\n            extra = total&#x5B;lugar]&#x5B;empleado]&#x5B;'HER']+ total&#x5B;lugar]&#x5B;empleado]&#x5B;'HFDS'] +total&#x5B;lugar]&#x5B;empleado]&#x5B;'HF']\n            linea = linea+','+str(extra)+'\\n'\n            archivo.write(linea)\n            \n        archivo.close()\n    mensaje = 'archivo guardado'\n    return(mensaje)\n\n# PROGRAMA PRUEBA -------------------\n# INGRESO\nnomA = 'meshoratrabajada.txt'\n\n# PROCEDIMIENTO\nmensaje = generareporte(nomA)\n\n# SALIDA\nprint(mensaje)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 2Eva2018TI_T2 Pago nomina mensual Propuesta de soluci\u00f3n en Python: archivo de prueba: meshoratrabajada.txt<\/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":[136],"tags":[58,157],"class_list":["post-5835","post","type-post","status-publish","format-standard","hentry","category-fp-s2eva20","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5835","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=5835"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5835\/revisions"}],"predecessor-version":[{"id":23679,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5835\/revisions\/23679"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=5835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=5835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=5835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}