{"id":7634,"date":"2019-02-16T07:27:31","date_gmt":"2019-02-16T12:27:31","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/ccpg1001\/?p=7634"},"modified":"2026-08-14T15:15:02","modified_gmt":"2026-08-14T20:15:02","slug":"s3eva2018tii_t2-jugadores-sudamericano-sub-20","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva20\/s3eva2018tii_t2-jugadores-sudamericano-sub-20\/","title":{"rendered":"s3Eva2018TII_T2 Jugadores Sudamericano Sub-20"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva20\/3eva2018tii_t2-jugadores-sudamericano-sub-20\/\" data-type=\"post\" data-id=\"7631\">3Eva2018TII_T2 Jugadores Sudamericano Sub-20<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">numeral 1<\/h2>\n\n\n\n<p>Recibe el nombre de un archivo con los datos del partido y actualiza el <em><strong>diccionario<\/strong> <\/em>de totales por jugador<\/p>\n\n\n\n<p>Propuesta de soluci\u00f3n en <strong>Python<\/strong>, se usa un archivo de prueba: <a href=\"https:\/\/drive.google.com\/open?id=1WUVocmzsXX2eyoMYal6F-w6SE1hMOkgn\">br-ur.csv<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Pais,Jugador,Tarjetas_Amarillas,Tarjetas_Rojas,Goles,Minutos,KM_recorridos\nEcuador,Jose Cifuentes,1,0,0,75,6.3\nUruguay,Sebastian Caceres,2,1,0,90,7\nEcuador,Leonardo Campana,0,0,1,87,10<\/code><\/pre>\n\n\n\n<p>El resultado esperado del algoritmo ser\u00e1:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pais,porcentaje,goleskm,nominado\n&#091;&#091;'Ecuador', 1.0, 0.1, 1], &#091;'Uruguay', 1.0, 0.0, 0]]\njugadores atletas\n&#091;&#091;'Leonardo Campana', 'Ecuador'], &#091;'Sebastian Caceres', 'Uruguay']]\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# numeral 1\ndef actualizaDiccionario(nomArchivo,dic):\n    \n    paises  = list(dic.keys())\n\n    archivo = open(nomArchivo,'r')\n    encabezado = archivo.readline()\n    linea   = archivo.readline()\n\n    while not(linea==''): # procesa una linea de texto\n        linea   = linea.strip('\\n')\n        partes  = linea.split(',')\n        pais    = partes&#x5B;0]\n        jugador = partes&#x5B;1]\n        \n        if not(pais in paises): # nuevo registro\n            dic&#x5B;pais]={jugador:{'TA':int(partes&#x5B;2]),\n                                'TR':int(partes&#x5B;3]),\n                                'Goles':int(partes&#x5B;4]),\n                                'Minutos':int(partes&#x5B;5]),\n                                'KM':float(partes&#x5B;6])\n                                  }\n                       }\n        else: # actualiza registro\n            jugadores = list(dic&#x5B;pais].keys())\n            if not(jugador in jugadores): # nuevo registro\n                dic&#x5B;pais]&#x5B;jugador] = {'TA':int(partes&#x5B;2]),\n                                      'TR':int(partes&#x5B;3]),\n                                      'Goles':int(partes&#x5B;4]),\n                                      'Minutos':int(partes&#x5B;5]),\n                                      'KM':float(partes&#x5B;6])\n                                      }\n            else: # actualiza registro\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'TA']    = dic&#x5B;pais]&#x5B;jugador]&#x5B;'TA'] + int(partes&#x5B;2])\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'TR']    = dic&#x5B;pais]&#x5B;jugador]&#x5B;'TR'] + int(partes&#x5B;3])\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'Goles'] = dic&#x5B;pais]&#x5B;jugador]&#x5B;'Goles'] + int(partes&#x5B;4])\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'Minutos'] = dic&#x5B;pais]&#x5B;jugador]&#x5B;'Minutos'] + int(partes&#x5B;5]),\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'KM']    = dic&#x5B;pais]&#x5B;jugador]&#x5B;'KM'] + float(partes&#x5B;5])\n\n        linea = archivo.readline()\n\n    archivo.close()\n    \n    return(dic)\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">numeral 2<\/h2>\n\n\n\n<p>Que recibe el nombre de un jugador y el <em><strong>diccionario<\/strong> <\/em>de totales y determina si ese jugador puede ser catalogado como un \"buen deportista\"; la funci\u00f3n retorna \"True\" o \"False\" . <\/p>\n\n\n\n<p>Un jugador se considera \"buen deportista\"si ha recibido menos de dos tarjetas por cada 270 minutos de juego.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# numeral 2\ndef buenDeportista(jugador,dic):\n    cumple = 0\n    paises = list(dic.keys())\n    for pais in paises:\n        jugadores = list(dic&#x5B;pais].keys())\n        if jugador in jugadores:\n            tarjetas = dic&#x5B;pais]&#x5B;jugador]&#x5B;'TA'] + dic&#x5B;pais]&#x5B;jugador]&#x5B;'TR']\n            transcurrido = dic&#x5B;pais]&#x5B;jugador]&#x5B;'Minutos']\n            registro = tarjetas\/transcurrido\n            if registro&lt;(2\/270):\n                cumple=1\n    return(cumple)\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Algoritmo en Python<\/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_IIT2018_T2 Jugadores Sudamericano Sub-20\n\n# numeral 1\ndef actualizaDiccionario(nomArchivo,dic):\n    \n    paises  = list(dic.keys())\n\n    archivo = open(nomArchivo,'r')\n    encabezado = archivo.readline()\n    linea   = archivo.readline()\n\n    while not(linea==''): # procesa una linea de texto\n        linea   = linea.strip('\\n')\n        partes  = linea.split(',')\n        pais    = partes&#x5B;0]\n        jugador = partes&#x5B;1]\n        \n        if not(pais in paises): # nuevo registro\n            dic&#x5B;pais]={jugador:{'TA':int(partes&#x5B;2]),\n                                'TR':int(partes&#x5B;3]),\n                                'Goles':int(partes&#x5B;4]),\n                                'Minutos':int(partes&#x5B;5]),\n                                'KM':float(partes&#x5B;6])\n                                  }\n                       }\n        else: # actualiza registro\n            jugadores = list(dic&#x5B;pais].keys())\n            if not(jugador in jugadores): # nuevo registro\n                dic&#x5B;pais]&#x5B;jugador] = {'TA':int(partes&#x5B;2]),\n                                      'TR':int(partes&#x5B;3]),\n                                      'Goles':int(partes&#x5B;4]),\n                                      'Minutos':int(partes&#x5B;5]),\n                                      'KM':float(partes&#x5B;6])\n                                      }\n            else: # actualiza registro\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'TA']    = dic&#x5B;pais]&#x5B;jugador]&#x5B;'TA'] + int(partes&#x5B;2])\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'TR']    = dic&#x5B;pais]&#x5B;jugador]&#x5B;'TR'] + int(partes&#x5B;3])\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'Goles'] = dic&#x5B;pais]&#x5B;jugador]&#x5B;'Goles'] + int(partes&#x5B;4])\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'Minutos'] = dic&#x5B;pais]&#x5B;jugador]&#x5B;'Minutos'] + int(partes&#x5B;5]),\n                dic&#x5B;pais]&#x5B;jugador]&#x5B;'KM']    = dic&#x5B;pais]&#x5B;jugador]&#x5B;'KM'] + float(partes&#x5B;5])\n\n        linea = archivo.readline()\n\n    archivo.close()\n    \n    return(dic)\n\n# numeral 2\ndef buenDeportista(jugador,dic):\n    cumple = 0\n    paises = list(dic.keys())\n    for pais in paises:\n        jugadores = list(dic&#x5B;pais].keys())\n        if jugador in jugadores:\n            tarjetas = dic&#x5B;pais]&#x5B;jugador]&#x5B;'TA'] + dic&#x5B;pais]&#x5B;jugador]&#x5B;'TR']\n            transcurrido = dic&#x5B;pais]&#x5B;jugador]&#x5B;'Minutos']\n            registro = tarjetas\/transcurrido\n            if registro&lt;(2\/270):\n                cumple=1\n    return(cumple)\n\n# numeral 3\ndef jugadorAtleta(jugador,dic):\n    cumple = 0\n    paises = list(dic.keys())\n    for pais in paises:\n        jugadores = list(dic&#x5B;pais].keys())\n        total = 0\n        for jugador in jugadores:\n            total = total + dic&#x5B;pais]&#x5B;jugador]&#x5B;'KM']\n        promedio = total\/len(jugadores)\n        if jugador in jugadores:\n            if dic&#x5B;pais]&#x5B;jugador]&#x5B;'KM']&gt;=promedio and dic&#x5B;pais]&#x5B;jugador]&#x5B;'Goles']&gt;=1:\n                cumple = 1\n    return(cumple)\n\n# numeral 4\ndef paisBuenasPraticas(pais,dic):\n    cumple = 0\n    paises = list(dic.keys())\n    if pais in paises:\n        jugadores = list(dic&#x5B;pais].keys())\n        k = len(jugadores)\n        cuenta = 0\n        for jugador in jugadores:\n            cuenta = cuenta + buenDeportista(jugador, dic)\n        if (k==cuenta):\n            cumple = 1\n    return(cumple)\n\n# numeral 5\n# PROGRAMA -----------------------\n# INGRESO\nL = &#x5B;'br-ur.csv'] #,'ec-vn.csv']\n\n# PROCEDIMIENTO\ndic = {}\nn = len(L)\ni = 0\nwhile not(i&gt;=n):\n    nomArchivo = L&#x5B;i]\n    actualizaDiccionario(nomArchivo,dic)\n    i = i + 1\n\npaises = list(dic.keys())\nresultados = &#x5B;]\njugadoresatletas = &#x5B;]\nfor pais in paises:\n    jugadores = list(dic&#x5B;pais].keys())\n    k = len(jugadores)\n    cuenta = 0\n    goles = 0\n    recorrido = 0\n    \n    for jugador in jugadores:\n        cuenta = cuenta + jugadorAtleta(jugador,dic)\n        goles = goles + dic&#x5B;pais]&#x5B;jugador]&#x5B;'Goles']\n        recorrido = recorrido + dic&#x5B;pais]&#x5B;jugador]&#x5B;'KM']\n        goleskm = goles\/recorrido\n\n        if jugadorAtleta(jugador,dic)==1:\n            jugadoresatletas.append(&#x5B;jugador,pais])\n\n    porcentaje = cuenta\/k\n    nominado = paisBuenasPraticas(pais,dic)\n    resultados.append(&#x5B;pais,porcentaje,goleskm,nominado])\n\n# SALIDA\nprint('pais,porcentaje,goleskm,nominado')\nprint(resultados)\nprint('jugadores atletas')\nprint(jugadoresatletas)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2018TII_T2 Jugadores Sudamericano Sub-20 numeral 1 Recibe el nombre de un archivo con los datos del partido y actualiza el diccionario de totales por jugador Propuesta de soluci\u00f3n en Python, se usa un archivo de prueba: br-ur.csv El resultado esperado del algoritmo ser\u00e1: numeral 2 Que recibe el nombre de un jugador y el [&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-7634","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\/7634","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=7634"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/7634\/revisions"}],"predecessor-version":[{"id":25429,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/7634\/revisions\/25429"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=7634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=7634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=7634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}