{"id":4453,"date":"2017-03-09T05:00:52","date_gmt":"2017-03-09T10:00:52","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=4453"},"modified":"2026-09-21T17:00:54","modified_gmt":"2026-09-21T22:00:54","slug":"s3eva2016tii_t1-facturar-llamadas-telefonicas","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva20\/s3eva2016tii_t1-facturar-llamadas-telefonicas\/","title":{"rendered":"s3Eva2016TII_T1 Facturar llamadas telef\u00f3nicas"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva20\/3eva2016tii_t1-facturar-llamadas-telefonicas\/\" data-type=\"post\" data-id=\"4285\">3Eva2016TII_T1 Facturar llamadas telef\u00f3nicas<\/a><\/p>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>, El ejercicio tiene tarea por completar.<\/p>\n\n\n\n<p>Para las pruebas, requiere el archivo <a href=\"https:\/\/drive.google.com\/open?id=1spFGF2aAkHztcQdWSn6S10eBpzgI9nJf\">clientes01.csv<\/a> en el mismo directorio del archivo.py<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>Crear una <em>funci\u00f3n<\/em> llamada <em><strong>obtenerClientes<\/strong><\/em>(<strong><em>nombreArchivo<\/em><\/strong>) la cual recibe como par\u00e1metro el nombre del archivo con los clientes de la empresa, y devuelve un diccionario con la siguiente estructura:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>{\n'1174253723': \n{'04-324426':{'sector':'Norte','nac':0,'estado':'Cortado','inter':9},\n'04-430419':{'sector':'Oeste','nac':30,'estado':'Cortado','inter':30}\n'04-283497':{'sector':'Norte','nac':15,'estado':'Activo','inter':27}},\n'1302511926': \n{'04-325363':{'sector':'Este','nac':90,'estado':'Activo','inter':12}},\n'1278112648':\n{'04-443288':{'sector':'Norte','nac':12,'estado':'Activo','inter':30},\n'04-383056':{'sector':'Sur','nac':50,'estado':'Activo','inter':15}},\n'1729478396':\n{'04-437289'{'sector':'Centro','nac':4,'estado':'Activo','inter':2}},\n'2061722895':\n{'04-356539':{'sector':'Norte','nac':17,'estado':'Cortado','inter':40}}\n}<\/code><\/pre>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 23; title: ; notranslate\" title=\"\">\n        if not(ced in facturar):\n            facturar&#x5B;ced] = {num:{\n                             'sector': sec,\n                             'nacional': nac,\n                             'internac': ext,\n                             'estado': est }}\n        else: \n            facturar&#x5B;ced]&#x5B;num] = {\n                             'sector': sec,\n                             'nacional': nac,\n                             'internac': ext,\n                             'estado': est }\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Crear una <em>funci\u00f3n<\/em> llamada <em><strong>generarFactura<\/strong><\/em>(<em><strong>dclientes<\/strong><\/em>) la cual recibe como par\u00e1metro el diccionario de clientes generado en el literal anterior, y genera un archivo por cada cliente, cuyo nombre es la c\u00e9dula del cliente, y el contenido corresponde a\u00a0los valores a pagar por cada cliente. La estructura del archivo es la siguiente:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 44; highlight: [55,71,72,73,74]; title: ; notranslate\" title=\"\">\n    cedulas = tabla.keys()\n    cedulas = list(cedulas)\n    n = len(cedulas)\n \n    # Mostrar cada cliente\n    i = 0\n    while not(i&gt;=n):\n        # Para pantalla\n        # print(cedulas&#x5B;i])\n         \n        # Cada archivo\n        narchivo = cedulas&#x5B;i] + '.txt'\n        archivo = open(narchivo, 'w')\n        archivo.write('Empresa Telefonica de Guayaquil \\n')\n        archivo.write('cliente: ' + cedulas&#x5B;i] + '\\n')\n        archivo.write('Detalle Deuda: \\n')\n \n        tablanumeros = tabla&#x5B;cedulas&#x5B;i]]\n        # print(tablanumeros)\n         \n        numeros = tablanumeros.keys()\n        numeros = list(numeros)\n        # print(numeros)\n \n        m = len(numeros)\n        j = 0\n        while not(j&gt;=m):\n            datos = tablanumeros&#x5B;numeros&#x5B;j]]\n            nac = tablanumeros&#x5B;numeros&#x5B;j]]&#x5B;'nacional']\n            costonac = nac * 0.03\n            archivo.write(numeros&#x5B;j] + ' nac: '+str(costonac)+ '\\n')\n            j = j + 1\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>Crear una funci\u00f3n llamada <em><strong>estadisticaSector<\/strong><\/em>(<strong><em>dclientes<\/em><\/strong>,<em><strong>sector<\/strong><\/em>) que recibe como par\u00e1metro el diccionario de clientes&nbsp;generado en el literal 1 y el sector, y devuelve un diccionario con el promedio de minutos de llamadas nacionales e&nbsp;internacionales que han realizado los n\u00fameros telef\u00f3nicos del sector en estado 'Activo'.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Por ejemplo:\n&gt;&gt;&gt; estadisticaSector(dclientes,\u201dNorte\u201d)\n\nRespuesta:\n{'Nacionales': 13.50, 'Internacionales': 28.50}<\/code><\/pre>\n\n\n\n<p>Queda como tarea<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\n\n\n\n<p>Integrando las partes anteriores en un solo algoritmo.py:<\/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# 3Eva_IIT2016_T1 Facturar llamadas telef\u00f3nicas\n# se incluye la estructura de diccionarios.\n# Tarea: Completar facturaci\u00f3n y estad\u00edsticas\n\n# literal a\ndef obtenerClientes(nombreArchivo):\n    facturar = {}\n\n    archivo = open(nombreArchivo,'r')\n    linea   = archivo.readline()\n    while not(linea==''):\n        linea  =linea.strip('\\n')\n        partes = linea.split(',')\n        ced = partes&#x5B;0]\n        num = partes&#x5B;1]\n        sec = partes&#x5B;2]\n        parm = partes&#x5B;3].split('|')\n        nac = float(parm&#x5B;0])\n        ext = float(parm&#x5B;1])\n        est = partes&#x5B;4]\n\n        if not(ced in facturar):\n            facturar&#x5B;ced] = {num:{\n                             'sector': sec,\n                             'nacional': nac,\n                             'internac': ext,\n                             'estado': est }}\n        else: \n            facturar&#x5B;ced]&#x5B;num] = {\n                             'sector': sec,\n                             'nacional': nac,\n                             'internac': ext,\n                             'estado': est }\n        \n        linea = archivo.readline()\n    archivo.close()\n    \n    return(facturar)\n\n# literal b\ndef generarFactura(tabla):\n    # Lista de clientes\n    cedulas = tabla.keys()\n    cedulas = list(cedulas)\n    n = len(cedulas)\n\n    # Mostrar cada cliente\n    i = 0\n    while not(i&gt;=n):\n        # Para pantalla\n        # print(cedulas&#x5B;i])\n        \n        # Cada archivo\n        narchivo = cedulas&#x5B;i] + '.txt'\n        archivo = open(narchivo, 'w')\n        archivo.write('Empresa Telefonica de Guayaquil \\n')\n        archivo.write('cliente: ' + cedulas&#x5B;i] + '\\n')\n        archivo.write('Detalle Deuda: \\n')\n\n        tablanumeros = tabla&#x5B;cedulas&#x5B;i]]\n        # print(tablanumeros)\n        \n        numeros = tablanumeros.keys()\n        numeros = list(numeros)\n        # print(numeros)\n\n        m = len(numeros)\n        j = 0\n        while not(j&gt;=m):\n            datos = tablanumeros&#x5B;numeros&#x5B;j]]\n            nac = tablanumeros&#x5B;numeros&#x5B;j]]&#x5B;'nacional']\n            costonac = nac * 0.03\n            archivo.write(numeros&#x5B;j] + ' nac: '+str(costonac)+ '\\n')\n            j = j + 1\n        \n        archivo.close()\n        \n        i = i + 1\n    return()\n\n# literal c\n# PROGRAMA\n# INGRESO\nnarchivo = 'clientes.csv'\n\n# PROCEDIMIENTO\ntabla = obtenerClientes(narchivo)\n\n# SALIDA\ngenerarFactura(tabla)\n\n# -------\n# Usado para explicaci\u00f3n de uso de diccionarios\n### Lista de clientes\n##cedulas = tabla.keys()\n##cedulas = list(cedulas)\n##n = len(cedulas)\n##\n### Salida\n##print('los clientes son: ', cedulas)\n##print('los datos del cliente son:')\n##for i in range(0,n,1):\n##    print(cedulas&#x5B;i])\n##    numeroscedula = tabla&#x5B;cedulas&#x5B;i]].keys()\n##    print(numeroscedula)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2016TII_T1 Facturar llamadas telef\u00f3nicas Propuesta de soluci\u00f3n en Python, El ejercicio tiene tarea por completar. Para las pruebas, requiere el archivo clientes01.csv en el mismo directorio del archivo.py literal a Crear una funci\u00f3n llamada obtenerClientes(nombreArchivo) la cual recibe como par\u00e1metro el nombre del archivo con los clientes de la empresa, y devuelve un diccionario [&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-4453","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\/4453","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=4453"}],"version-history":[{"count":5,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/4453\/revisions"}],"predecessor-version":[{"id":25863,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/4453\/revisions\/25863"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=4453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=4453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=4453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}