# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 2
#     language: python
#     name: python2
# ---

# + slideshow={"slide_type": "skip"}
"""
IPython Notebook v4.0 para python 2.7
Librerías adicionales: Ninguna.
Contenido bajo licencia CC-BY 4.0. Código bajo licencia MIT. (c) <NAME>.
"""

# Configuracion para recargar módulos y librerías 
# %reload_ext autoreload
# %autoreload 2

from IPython.core.display import HTML

HTML(open("style/iwi131.css", "r").read())


# + [markdown] slideshow={"slide_type": "slide"}
# <header class="w3-container w3-teal">
# <img src="images/utfsm.png" alt="" align="left"/>
# <img src="images/inf.png" alt="" align="right"/>
# </header>
# <br/><br/><br/><br/><br/>
# # IWI131
# ## Programación de Computadores
#
# ### <NAME>
#
# http://progra.usm.cl/ 
#
# https://www.github.com/usantamaria/iwi131
#

# + [markdown] slideshow={"slide_type": "slide"}
# ## Certamen 1
# 7 pm, C240.
# ## Formato
# 3 preguntas:
#
# 1. Ruteo y "adivine que hace".
# 2. Diagrama de flujo.
# 3. Hacer un programa en python.

# + [markdown] slideshow={"slide_type": "slide"}
# ## Consejos previos al certamen
# 3 factores cruciales
# * **Conocimiento**: Estudien con tiempo y a conciencia.
# * **Concentración**: Descancen lo suficiente.
# * **Energía**: Coman algo ligero antes del certamen.

# + [markdown] slideshow={"slide_type": "slide"}
# ## Consejos durante el certamen
# * No entren en pánico: respiren profundo y recuperen la concentración: ***si han venido a clases y estudiado, saben lo suficiente***.
# * No se apuren: lean bien el enunciado, subrayen palabras ***claves*** y anoten ideas o conceptos que son importantes para resolución.
# * Pregúntense: ¿Qué se está tratando de medir en este problema? ¿Qué es lo fácil/difícil?
# * Administren bien su tiempo: 
#  * 15 minutos para el ruteo 
#  * 30 minutos para el diagrama de flujo 
#  * 30 minutos para programa en python
#  * 5 minutos para "adivine que hace". 
#  * 10 minutos para revisar y corregir detalles.

# + [markdown] slideshow={"slide_type": "slide"}
# ## Consejos después del certamen
# * Es sólo un certamen: el ramo no acaba aquí.
# * ¿Que cosas podría haber mejorarado para que me fuera mejor?
# * ¿Qué cambios voy a hacer para que me vaya mejor en el próximo certamen?

# + [markdown] slideshow={"slide_type": "slide"}
# ## Preguntas de alumnos 1
#
# Escriba una función **ordenado(n)** que verifique si los dígitos de un número entero positivo están ordenados de mayor a menor.
#
#     ordenado(567) # False
#     ordenado(9876) # True
#     ordenado(98876) #True

# +
def ordenado(n):
    str_n=str(n)
    cont = 0
    while cont<len(str_n):
        if cont == len(str_n)-1:
            return True
        if str_n[cont]<str_n[cont+1]:#como compara strings??
            return False
        else:
            cont+=1
            
print ordenado(1) # True
print ordenado(567) # False
print ordenado(9876) # True
print ordenado(98876) #True

# + slideshow={"slide_type": "slide"}
print "a" < "b"
print "a" < "z"
print "0" < "1"
print "5" < "9"
print "A" < "a"
print "Z" < "a"
print "abcdaria" < "abcedario" # Comparacion letra a letra
print "python" < "pythonistico" # Si inicios son iguales, gana la mas breve.
print "abc" < "z"  # Si inicios son distintos, no depende de numero de letras


# + slideshow={"slide_type": "slide"}
def ordenado(n):
    str_n = str(n)
    j = 0
    while j<len(str_n):
        if j == len(str_n)-1:
            return True
        if int(str_n[j]) < int(str_n[j+1]):
            return False
        j += 1
            
print ordenado(1) # True
print ordenado(567) # False
print ordenado(9876) # True
print ordenado(98876) #True


# + [markdown] slideshow={"slide_type": "slide"}
# ## Preguntas de alumnos 1
#
# ¿Qué era importante saber en este ejemplo?
# * No existe sólo 1 forma correcta.
# * Saber convertir de string a int, y viceversa.
# * Saber recorrer un string, caracter a carácter.
# * Sintaxis de una función.
# * Regresar False si no se cumple alguna condición, y True sólo si se llega al final.

# + [markdown] slideshow={"slide_type": "slide"}
# <img src="images/python1.jpg" alt="" width="600px" align="middle"/>

# + [markdown] slideshow={"slide_type": "slide"}
# ## Preguntas de alumnos 2
#
# Desarrollar la función **convertir_eeuu(nota)** que recibe como parámetro una nota en escala 0 -100 y retorne la nota en formato EE.UU.
#
# * Si nota ≥ 90, se obtiene una nota convertida A.
# * Si nota ≥ 70 y < 90, se obtiene una nota convertida B.
# * Si nota ≥ 55 y < 70, se obtiene una nota convertida C.
# * Si nota < 55, se obtiene una nota convertida F.

# +
def convertir_eeuu(nota):
    if nota>=90:
        print "A"
    elif nota>=70 and nota<90:
        print "B"
    elif nota>=55 and nota<70:
        print "C"
    elif nota<55:
        print "F"
        
print convertir_eeuu(10)
print convertir_eeuu(30)
print convertir_eeuu(40)
print convertir_eeuu(55)
print convertir_eeuu(56)
print convertir_eeuu(80)
print convertir_eeuu(90)


# + slideshow={"slide_type": "slide"}
def convertir_eeuu(nota):
    if nota>=90:
        return "A"
    elif nota>=70:
        return "B"
    elif nota>=55:
        return "C"
    else:
        return "F"
        
print convertir_eeuu(10)
print convertir_eeuu(30)
print convertir_eeuu(40)
print convertir_eeuu(55)
print convertir_eeuu(56)
print convertir_eeuu(80)
print convertir_eeuu(90)

# + [markdown] slideshow={"slide_type": "slide"}
# ## Preguntas de alumnos 2
#
# ¿Qué era importante saber en este ejemplo?
# * Dominar if-elif-else
# * usar return, no print, cuando se necesita regresar un valor.

# + [markdown] slideshow={"slide_type": "slide"}
# <img src="images/python2.jpg" alt="" width="600px" align="middle"/>

# + [markdown] slideshow={"slide_type": "slide"}
# ## Preguntas de profesor : C1, 1S 2014.
# El profesor de programación <NAME> ha comenzado a producir metanfetamina, una poderosa droga alucinógena.
# Para dar un mejor producto a sus compradores, el profesor produce distintas variantes de la droga. Estas
# pueden o no producir el efecto alucinógeno deseado, por lo que se realizan pruebas y analiza la efectividad en distintos adictos. A tal fin, ***los adictos se encuentra divididos en 3 grupos, leves (L), medios (M) y terminales (T)***, en los cuales se hacen las pruebas.
#
# Cree un programa que ***pida la cantidad de variantes a probar***, por cada una ***pida los casos exitosos
# en un string de L, M y T***, donde cada letra es un caso de éxito en el grupo que identifica. Finalmente
# ***indicar la mejor variante de metanfetamina para cada adicto***, es decir, la variante que más casos
# de éxito producen a cada grupo.
#
# Nota: ***Si dos variantes tienen la misma cantidad de éxitos indicar cualquiera de las dos.***
#
#     Numero de variantes: 3
#     Variante 1: LLMTTLMMMM
#     Variante 2: MMMMTTTMMTTTTT
#     Variante 3: TTTTLLLTLLLLL
#     Mejores variantes:
#     Adictos leves: 3
#     Adictos medios: 2
#     Adictos terminales: 2
#     
#     
#     Numero de variantes: 4
#     Variante 1: LLLLLMT
#     Variante 2: TTMMMMMT
#     Variante 3: TTLLLMMLMTT
#     Variante 4: TTTTMMLMTTT
#     Mejores variantes:
#     Adictos leves: 1
#     Adictos medios: 2
#     Adictos terminales: 4

# + [markdown] slideshow={"slide_type": "slide"}
# ## Preguntas de profesor : C1, 1S 2014.
# ¿Que necesitamos?

# + [markdown] slideshow={"slide_type": "fragment"}
# * Leer el número de variantes
# * Leer cada variante
# * Actualizar los máximos para cada variante
# * Imprimir los resultados

# + [markdown] slideshow={"slide_type": "slide"}
#     Numero de variantes: 4
#     Variante 1: LLLLLMT
#     Variante 2: TTMMMMMT
#     Variante 3: TTLLLMMLMTT
#     Variante 4: TTTTMMLMTTT
#     Mejores variantes:
#     Adictos leves: 1
#     Adictos medios: 2
#     Adictos terminales: 4

# + slideshow={"slide_type": "-"}
N = int(raw_input("Numero de variantes: "))
num_variante_actual = 1
max_L = 0
mejor_variante_L = 0
max_M = 0 
mejor_variante_M = 0
max_T = 0
mejor_variante_T = 0
while num_variante_actual <= N:
    variante_actual = raw_input("Variante " + str(num_variante_actual) + ":")
    # Actualizar para leve
    num_L = variante_actual.count("L")
    if num_L  > max_L:
        max_L = num_L
        mejor_variante_L = num_variante_actual
    # Actualizar para Medio
    num_M = variante_actual.count("M")
    if num_M  > max_M:
        max_M = num_M
        mejor_variante_M = num_variante_actual
    # Actualizar para Terminal
    num_T = variante_actual.count("T")
    if num_T  > max_T:
        max_T = num_T
        mejor_variante_T = num_variante_actual
    # Actualizar variante
    num_variante_actual += 1
    
# Outputs
print "Mejores variantes:"
print "Adictos leves:", mejor_variante_L
print "Adictos medios:", mejor_variante_M
print "Adictos terminales:", mejor_variante_T


# + [markdown] slideshow={"slide_type": "slide"}
# <img src="images/code.jpg" alt="" width="600px" align="middle"/>

# + [markdown] slideshow={"slide_type": "slide"}
# ## ¿Preguntas?

# + [markdown] slideshow={"slide_type": "slide"}
# ## Buena suerte

StarcoderdataJupyterScriptsDedupFiltered