{"id":5135,"date":"2018-02-11T09:40:09","date_gmt":"2018-02-11T14:40:09","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=5135"},"modified":"2026-08-17T11:35:22","modified_gmt":"2026-08-17T16:35:22","slug":"s3eva2016ti_t1-costo-de-mensaje","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva20\/s3eva2016ti_t1-costo-de-mensaje\/","title":{"rendered":"s3Eva2016TI_T1 Costo de mensaje SMS"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva20\/3eva2016ti_t1-costo-de-mensaje\/\" data-type=\"post\" data-id=\"3823\">3Eva2016TI_T1 Costo de mensaje<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image alignleft size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"768\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/03\/MensajeSmsTeclado.jpg\" alt=\"Mensaje Sms Teclado\" class=\"wp-image-25439\" style=\"width:400px\" \/><\/figure>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/p>\n\n\n\n<p>Se requiere los archivos y su contenido: <\/p>\n\n\n\n<figure class=\"wp-block-table alignwide\"><table><tbody><tr><td>costos.txt<\/td><td>10<br>0.2<br>0.5<br>0.3<\/td><\/tr><tr><td>mensaje01.txt<\/td><td>El cuerpo humano es el carruaje;<br>el yo, el hombre que lo conduce;<br>el pensamiento son las riendas,<br>y los sentimientos, los caballos.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">literal a.<\/h2>\n\n\n\n<p>Se procede a abrir el archivo<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; first-line: 7; title: ; notranslate\" title=\"\">\n    archivo  = open(nombreArchivo,'r')\n<\/pre><\/div>\n\n\n<p>Luego se lee el primer valor 'm' desde la primera l\u00ednea. Se elimina el salto de l\u00ednea y se convierte a n\u00famero entero<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; first-line: 8; title: ; notranslate\" title=\"\">\n    # leer M\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    m = int(unalinea)\n<\/pre><\/div>\n\n\n<p>continuar con la lectura de los costos en el orden indicado en el enunciado. Recuerde ajustar al tipo de dato num\u00e9rico real.<\/p>\n\n\n\n<p>Cerrar el archivo.<\/p>\n\n\n\n<p>Definir la funci\u00f3n con su nombre, argumentos y entregar las tarifas en un diccionario.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 5; title: ; notranslate\" title=\"\">\n# literal a\ndef cargarDatos(nombreArchivo):\n    archivo  = open(nombreArchivo,'r')\n    # leer M\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    m = int(unalinea)\n    # costo palabra corta\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    corta    = float(unalinea)\n    # costo palabra larga\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    larga    = float(unalinea)\n    # costo palabra infinitivo\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    infinitivo = float(unalinea) \n\n    archivo.close()\n\n    tarifas = {'m':m,\n               'corta':corta,\n               'larga':larga,\n               'infinitivo':infinitivo}\n    return(tarifas)\n<\/pre><\/div>\n\n\n<p>Se presenta otra opci\u00f3n de desarrollo usando una lista que se llena con las listas y luego se asignan los valores al diccionario.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Se lee el archivo del mensaje por cada l\u00ednea y se asigna a una lista para luego procesar.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 36; title: ; notranslate\" title=\"\">\n    # Carga en una lista lineas de archivo\n    lista = &#x5B;]\n    archivo  = open(nombreArchivo, 'r')\n    \n    unalinea = archivo.readline()\n    while not(unalinea==''):\n        unalinea = unalinea.strip('\\n')\n        lista.append(unalinea)\n        unalinea = archivo.readline()\n        \n    archivo.close()\n<\/pre><\/div>\n\n\n<p>Por cada l\u00ednea del mensaje se separa por palabras. Revisar si contiene puntuaciones. Comparar el tama\u00f1o de la palabra con tarifas['m'] para determinar si son palabras cortas o largas.<\/p>\n\n\n\n<p>Revisar si las \u00faltimas letras de la palabra corresponden al infinitivo.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 89; title: ; notranslate\" title=\"\">\n            # revisa infinitivo\n            ultimas = palabras&#x5B;j]&#x5B;k-2]+palabras&#x5B;j]&#x5B;k-1]\n            if (ultimas == 'ar' or ultimas=='er' or ultimas=='ir'):\n                valor = tarifas&#x5B;'infinitivo']\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Tarea: literal c<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Ejemplo de salida:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>El 0.2\ncuerpo 0.2\nhumano 0.2\nes 0.2\nel 0.2\ncarruaje 0.2\nel 0.2\nyo 0.2\nel 0.2\nhombre 0.2\nque 0.2\nlo 0.2\nconduce 0.2\nel 0.2\npensamiento 0.5\nson 0.2\nlas 0.2\nriendas 0.2\ny 0.2\nlos 0.2\nsentimientos 0.5\nlos 0.2\ncaballos 0.2\ntarifas: {'m': 10, 'corta': 0.2, 'larga': 0.5, 'infinitivo': 0.3}\ncosto: 5.200000000000001<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 3Eva_IT2016_T1 Costo de mensaje\n# Tarea: revisar si es necesario el uso de\n#  may\u00fasculas\/min\u00fasculas\n\n# literal a\ndef cargarDatos(nombreArchivo):\n    archivo  = open(nombreArchivo,'r')\n    # leer M\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    m = int(unalinea)\n    # costo palabra corta\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    corta    = float(unalinea)\n    # costo palabra larga\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    larga    = float(unalinea)\n    # costo palabra infinitivo\n    unalinea = archivo.readline()\n    unalinea = unalinea.strip('\\n')\n    infinitivo = float(unalinea) \n\n    archivo.close()\n\n    tarifas = {'m':m,\n               'corta':corta,\n               'larga':larga,\n               'infinitivo':infinitivo}\n    return(tarifas)\n\n# literal a, usando bucles\ndef cargarDatos2(nombreArchivo):\n    lista = &#x5B;]    \n    archivo  = open(nombreArchivo, 'r')\n\n    unalinea = archivo.readline()\n    while not(unalinea==''):\n        unalinea = unalinea.strip('\\n')\n        lista.append(unalinea)\n        unalinea = archivo.readline()\n    archivo.close()\n\n    tarifas = {'m':int(lista&#x5B;0]),\n               'corta':float(lista&#x5B;1]),\n               'larga':float(lista&#x5B;2]),\n               'infinitivo':float(lista&#x5B;3])}\n    return(tarifas)\n\n# literal b\ndef calcularCostos(tarifas, nombreArchivo):\n    costo = 0\n    # Carga en una lista lineas de archivo\n    lista = &#x5B;]\n    archivo  = open(nombreArchivo, 'r')\n    \n    unalinea = archivo.readline()\n    while not(unalinea==''):\n        unalinea = unalinea.strip('\\n')\n        lista.append(unalinea)\n        unalinea = archivo.readline()\n        \n    archivo.close()\n    \n    #Procesar las lineas\n    n = len(lista)\n    i = 0\n    while not(i&gt;=n):\n        # separa palabras\n        linea = lista&#x5B;i]\n        palabras = linea.split(' ')\n        m = len(palabras)\n        \n        j = 0 \n        while not(j&gt;=m):\n\n            # elimina puntuaciones\n            palabras&#x5B;j] = palabras&#x5B;j].strip(',')\n            palabras&#x5B;j] = palabras&#x5B;j].strip(';')\n            palabras&#x5B;j] = palabras&#x5B;j].strip('.')\n            tamano = len(palabras&#x5B;j])\n\n            valor  = tarifas&#x5B;'corta']\n            if (tamano&gt;=tarifas&#x5B;'m']):\n                valor = tarifas&#x5B;'larga']\n            k = len(palabras&#x5B;j])\n\n            # revisa infinitivo\n            ultimas = palabras&#x5B;j]&#x5B;k-2]+palabras&#x5B;j]&#x5B;k-1]\n            if (ultimas == 'ar' or ultimas=='er' or ultimas=='ir'):\n                valor = tarifas&#x5B;'infinitivo']\n                \n            # acumula valor de palabra\n            print(palabras&#x5B;j],valor)\n            costo = costo + valor\n            j = j + 1\n            \n        i = i + 1\n    return(costo)\n\n# PROGRAMA DE PRUEBA ---------------\n# INGRESO\ntarifas = cargarDatos('costos.txt')\n# PROCEDIMIENTO\ncosto = calcularCostos(tarifas, 'mensaje01.txt')\n# SALIDA\nprint('tarifas:',tarifas)\nprint('costo:',costo)\n\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2016TI_T1 Costo de mensaje Propuesta de soluci\u00f3n en Python: Se requiere los archivos y su contenido: costos.txt 100.20.50.3 mensaje01.txt El cuerpo humano es el carruaje;el yo, el hombre que lo conduce;el pensamiento son las riendas,y los sentimientos, los caballos. literal a. Se procede a abrir el archivo Luego se lee el primer valor 'm' [&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-5135","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\/5135","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=5135"}],"version-history":[{"count":7,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5135\/revisions"}],"predecessor-version":[{"id":25446,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5135\/revisions\/25446"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=5135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=5135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=5135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}