{"id":5144,"date":"2017-09-20T08:13:00","date_gmt":"2017-09-20T13:13:00","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=5144"},"modified":"2026-09-21T16:25:59","modified_gmt":"2026-09-21T21:25:59","slug":"s3eva2017ti_t1-archivos-de-notas-por-semestre","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva20\/s3eva2017ti_t1-archivos-de-notas-por-semestre\/","title":{"rendered":"s3Eva2017TI_T1 Archivos de notas por semestre"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva20\/3eva2017ti_t1-archivos-de-notas-por-semestre\/\" data-type=\"post\" data-id=\"4353\">3Eva2017TI_T1 Archivos de notas por semestre<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"503\" height=\"422\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/notasPorSemestreTablero01.jpg\" alt=\"notas Por Semestre Tablero 01\" class=\"wp-image-25844\" \/><\/figure>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>:<\/p>\n\n\n\n<p>Para la prueba del algoritmo, se requiere los archivos:<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/open?id=0B-o6TQEqtOmlRm1aZFpPVWdaSDg\"><em><strong>notas-2015-I.csv<\/strong><\/em><\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/open?id=0B-o6TQEqtOmlV1V1dXcyR3o0WDA\"><em><strong>notas-2013-II.csv<\/strong><\/em><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>Elabore la funci\u00f3n <strong>academico<\/strong>(<em><strong>narchivos<\/strong><\/em>) recibe los <em><strong>n<\/strong><\/em>ombres de los <em><strong>archivos<\/strong> <\/em>de <em><strong>notas <\/strong><\/em>(tupla) para cada <code>semestre<\/code> y retorna un diccionario de <em><strong>notas<\/strong> <\/em>con la estructura mostrada.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>narchivos = (notas-2013-II.csv, notas-2015-I.csv)\n\nnotas =\n{201321454: {'2013-II': &#091;('Qu\u00edmica', 45, 57, 73, 'AP'),\n                         ('Fundamentos de Programaci\u00f3n', \n                            11,9,9, 'RP')],\n             '2015-I': &#091;('Econom\u00eda', 12, 21, 33, 'RP'),\n                        ('Fundamentos de Programaci\u00f3n', \n                            45,76,89, 'AP')],\n             ...},\n 200901456: {'2013-II': &#091;('F\u00edsica I', 80, 91, 73, 'AP'),\n                         ...],\n             ...},\n ...}\n<\/code><\/pre>\n\n\n\n<p>lectura de archivos:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 8; highlight: [17]; title: ; notranslate\" title=\"\">\ndef academico(narchivos):\n    notas = {}\n    n = len(narchivos)\n    for i in range(0,n,1):\n        archivo = open(narchivos&#x5B;i],'r')\n\n        # semestre en el nombre\n        nombre = narchivos&#x5B;i]\n        partes = nombre.split('.')\n        semestre = partes&#x5B;0]&#x5B;6:]\n\n        # Datos del archivo\n        linea = archivo.readline()\n        while not(linea==''):\n            linea   = linea.strip('\\n')\n            partes  = linea.split(',')\n            quien   = int(partes&#x5B;0])\n            materia = partes&#x5B;1]\n            nota1   = int(partes&#x5B;2])\n            nota2   = int(partes&#x5B;3])\n            nota3   = int(partes&#x5B;4])\n            estado  = partes&#x5B;5]\n            califica = (materia,nota1,nota2,\n                        nota3,estado)\n\n            # Revisar estudiante creado\n            estudiantes = notas.keys()\n            if not(quien in estudiantes):\n                notas&#x5B;quien] = {semestre:&#x5B;califica]}\n            else:\n                cuando = notas&#x5B;quien].keys()\n                if (semestre in cuando):\n                    notas&#x5B;quien]&#x5B;semestre].append(califica)\n                else:\n                    notas&#x5B;quien]&#x5B;semestre] = &#x5B;califica]\n\n            linea = archivo.readline()\n        archivo.close()\n    return(notas)\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Implemente la funci\u00f3n <strong>semestres<\/strong>(<em><strong>notas<\/strong><\/em>, <strong><em>matricula<\/em><\/strong>) que recibe las <strong><em>notas<\/em><\/strong> (diccionario) y un n\u00famero de <strong><em>matr\u00edcula<\/em><\/strong>\u00a0 de un estudiante para entregar todos los semestres en que ha tomado materias (tupla) .<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; first-line: 49; highlight: [52,53]; title: ; notranslate\" title=\"\">\ndef semestres(notas,matricula):\n    estudiantes = notas.keys()\n    cuando = ()\n    if (matricula in estudiantes):\n        cuando = notas&#x5B;matricula].keys()\n    cuando = tuple(cuando)\n    return(cuando)\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>Realice la funci\u00f3n <strong>nota_academico<\/strong>(<strong><em>notas<\/em><\/strong>, <em><strong>matricula<\/strong><\/em>, <em><strong>materia<\/strong><\/em>) que recibe las <em><strong>notas<\/strong><\/em> (en diccionario), una <em><strong>matr\u00edcula<\/strong> <\/em>y el nombre de una <em><strong>materia<\/strong><\/em> y determina la <em><strong>nota total<\/strong><\/em> para esa <em><strong>materia<\/strong><\/em>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\ndef nota_academico(notas,matricula,materia):\n    califica = &#x5B;]\n    estudiantes = notas.keys()\n    # Desarrollar tarea\n        \n    return(nota_final)\n<\/pre><\/div>\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:<\/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_IT2017_T1 Archivos de notas por semestre\n# Tarea: una vez comprendido los pasos, \n#        simplificar de ser posible\nimport numpy as np\n\n# literal a\ndef academico(narchivos):\n    notas = {}\n    n = len(narchivos)\n    for i in range(0,n,1):\n        archivo = open(narchivos&#x5B;i],'r')\n\n        # semestre en el nombre\n        nombre = narchivos&#x5B;i]\n        partes = nombre.split('.')\n        semestre = partes&#x5B;0]&#x5B;6:]\n\n        # Datos del archivo\n        linea = archivo.readline()\n        while not(linea==''):\n            linea   = linea.strip('\\n')\n            partes  = linea.split(',')\n            quien   = int(partes&#x5B;0])\n            materia = partes&#x5B;1]\n            nota1   = int(partes&#x5B;2])\n            nota2   = int(partes&#x5B;3])\n            nota3   = int(partes&#x5B;4])\n            estado  = partes&#x5B;5]\n            califica = (materia,nota1,nota2,\n                        nota3,estado)\n\n            # Revisar estudiante creado\n            estudiantes = notas.keys()\n            if not(quien in estudiantes):\n                notas&#x5B;quien] = {semestre:&#x5B;califica]}\n            else:\n                cuando = notas&#x5B;quien].keys()\n                if (semestre in cuando):\n                    notas&#x5B;quien]&#x5B;semestre].append(califica)\n                else:\n                    notas&#x5B;quien]&#x5B;semestre] = &#x5B;califica]\n\n            linea = archivo.readline()\n        archivo.close()\n    return(notas)\n\n# literal b\ndef semestres(notas,matricula):\n    estudiantes = notas.keys()\n    cuando = ()\n    if (matricula in estudiantes):\n        cuando = notas&#x5B;matricula].keys()\n    cuando = tuple(cuando)\n    return(cuando)\n\n# literal c\ndef nota_academico(notas,matricula,materia):\n    califica = &#x5B;]\n    estudiantes = notas.keys()\n    # Desarrollar tarea\n        \n    return(nota_final)\n\n# literal d\ndef mas_aprobados(notas,semestre):\n    # Separa dictadas y aprobadas en el semestre\n    dictadas = &#x5B;]\n    estudiantes = notas.keys()\n    for quien in estudiantes:\n        cuando = notas&#x5B;quien].keys()\n        if (semestre in cuando):\n            registradas = notas&#x5B;quien]&#x5B;semestre]\n            n = len(registradas)\n            for i in range(0,n,1):\n                if (registradas&#x5B;i]&#x5B;4] == 'AP'):\n                    dictadas.append(registradas&#x5B;i]&#x5B;0])\n\n    # Cuenta las repetidas\n    m = len(dictadas)\n    lista = list(set(dictadas))\n    conteo = {}\n    for j in range(0,m,1):\n        una = dictadas&#x5B;j]\n        if (una in conteo):\n            conteo&#x5B;una] = conteo&#x5B;una]+1\n        else:\n            conteo&#x5B;una] = 1\n\n    # busca la mas aprobada\n    mejor = ''\n    if (len(conteo)&gt;0):\n        llaves  = list(conteo.keys())\n        valores = np.array(conteo.values())\n        mejor   = llaves&#x5B;np.argmax(valores)]\n    return(mejor)\n\n# PROGRAMA\n# INGRESO \/siguiendo ejemplo de examen\nnarchivos = &#x5B;'notas-2015-I.csv',\n           'notas-2013-II.csv']\nmatricula = 201321454\nmateria   = 'Fundamentos de Programaci\u00f3n'\nsemestre  = '2015-I'\n\n# PROCEDIMIENTO\nnotas = academico(narchivos)\nsemestres  = semestres(notas, matricula)\nnota_final = nota_academico(notas, matricula, materia)\nalto_AP = mas_aprobados(notas, semestre)\n\n# SALIDA\nprint('las notas son: ')\nprint(notas)\nprint('--- para '+str(matricula) + ': ')\nprint('semestres que estudi\u00f3: ',semestres)\nprint('notas final para '+materia+': ',nota_final)\nprint('--- En el semestre '+semestre + ': ' )\nprint('la materia con alto indice de aprobaci\u00f3n es: ',\n      alto_AP)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2017TI_T1 Archivos de notas por semestre Propuesta de soluci\u00f3n en Python: Para la prueba del algoritmo, se requiere los archivos: notas-2015-I.csv notas-2013-II.csv literal a Elabore la funci\u00f3n academico(narchivos) recibe los nombres de los archivos de notas (tupla) para cada semestre y retorna un diccionario de notas con la estructura mostrada. lectura de archivos: literal [&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-5144","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\/5144","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=5144"}],"version-history":[{"count":7,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5144\/revisions"}],"predecessor-version":[{"id":25850,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/5144\/revisions\/25850"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=5144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=5144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=5144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}