In [ ]:
    
"""
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) Sebastian Flores.
"""
# 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())
    
In [ ]:
    
from math import exp, cos, pi, sin
from random import randrange, choice
from turtle import * # Evitar
print exp(5.5)
print cos(pi / 2)
print randrange(10)
print choice(['Lunes', 'Martes', 'Viernes'])
    
In [ ]:
    
import math
import random
print math.exp(5.5)
print math.cos(math.pi / 2)
print random.randrange(10)
print random.choice(['Lunes', 'Martes', 'Viernes'])
    
Cree un módulo que calcule el área de figuras geométricas. Utilizando el módulo realice los siguientes programas:
(Ver archivos adjuntos)
In [ ]:
    
def convertir_segundos(segundos):
    horas = segundos / (60 * 60)
    minutos = (segundos / 60) % 60
    segundos = segundos % 60
    return horas, minutos, segundos
h, m, s  = convertir_segundos(9814)
print s
    
In [ ]:
    
def minmax():
    N = int(raw_input("Cuantos números: "))
    j = 1
    # FIX ME
    while j<=N:
        x = float(raw_input("Numero "+str(j)+": "))
        # FIX ME
        j += 1
    return mmin, mmax
# FIX ME
print "Minimo:", mimin
print "Maximo:", mimax
    
In [ ]:
    
def minmax():
    N = int(raw_input("Cuantos números: "))
    j = 1
    mi_min = +float("inf")
    mi_max = -float("inf")
    while j<=N:
        x = float(raw_input("Numero "+str(j)+": "))
        mi_min = min(x,mi_min)
        mi_max = max(x,mi_max)
        j += 1
    return mi_min, mi_max
mmin, mmax = minmax()
print "Minimo:", mmin
print "Maximo:", mmax
    
In [ ]:
    
def imprimir_datos(nombre, apellido, rol, dia, mes, anno):
    print ''
    print 'Nombre completo:', nombre, apellido
    print 'Rol:', rol
    print 'Fecha de nacimiento:',
    print dia, '/', mes, '/', anno    
    
imprimir_datos('Perico', 'Los Palotes', '201101001-1', 3, 1, 1993)
imprimir_datos('Yayita', 'Vinagre', '201101002-2', 10, 9, 1992)
imprimir_datos('Fulano', 'De Tal', '201101003-3', 14, 5, 1990)
    
Crear una función codigo_palabra(codigo) que reciba un código encriptado de sólo letras e imprima el mensaje desencriptado. La regla de desencriptación es la siguiente: la palabra desencriptada se obtiene recorriendo desde el final de la palabra hasta el comienzo, considerando solo las letras en ubicaciones impares. Empezando desde la ultima letra.
codigo_palabra('aczaarltp')
plaza
codigo_palabra('axruatgrrreov')
vergara
In [ ]:
    
def codigo_palabra(palabra):
    codigo=''
    # FIX ME
    while i<=len(palabra):
        # FIX ME
        print codigo
codigo_palabra('aczaarltp')
codigo_palabra('axruatgrrreov')
    
In [ ]:
    
def codigo_palabra(palabra):
    n = len(palabra)-1
    codigo = ""
    while n>=0:
        codigo += palabra[n]
        n -= 2
    print codigo
codigo_palabra('aczaarltp')
codigo_palabra('axruatgrrreov')
    
In [ ]:
    
def codigo_palabra(palabra):
    j = 1
    codigo = ""
    while j<=len(palabra):
        codigo += palabra[-j]
        j += 2
    print codigo
codigo_palabra('aczaarltp')
codigo_palabra('axruatgrrreov')
    
In [ ]:
    
def f(a, b=2, c="toma b"):
    if c=="toma b":
        c = b
    return a + b*c
print f(10, b=1, c="toma b") # Probar f(10), f(10,2), f(10,15), etc.
    
Cree una función que regresa el perimetro de un polígono en función del radio $r$ y el número de lados $n$: $$P = 2 \ n \ r \tan\Big(\frac{\pi}{n}\Big)$$
In [ ]:
    
# Import library
# Definir funcion
# Casos a utilizar
print perimetro(0.5, 2)
print perimetro(0.5, 3)
print perimetro(0.5, 4)
print perimetro(0.5, 10)
print perimetro(0.5, 20)
print perimetro(0.5, 1000)
print perimetro(0.5)
    
In [ ]:
    
# Importar modulos necesarios
import math
# Definir funcion
def perimetro(r, n="c"):
    if n=="c":
        return 2*math.pi*r
    elif n<=2:
        print "Numero incorrecto de lados"
    else:
        return 2*r*n*math.tan(math.pi/n)
# Casos a utilizar
print perimetro(0.5, 2)
print perimetro(0.5, 3)
print perimetro(0.5, 4)
print perimetro(0.5, 10)
print perimetro(0.5, 20)
print perimetro(0.5, 1000)
print perimetro(0.5)
    
In [ ]:
    
def sumar(n, f):
    s = 0
    i = 0
    while i<=n:
        s = s + f(i)
        i += 1
    return s
def identidad(x):
    return x
def cuadrado(x):
    return x ** 2
def cubo(x):
    return x ** 3
print sumar(1000, identidad)
print sumar(1000, cuadrado)
print sumar(1000, cubo)
    
In [ ]:
    
def aplicar_funcion(a, b, c, funcion):
    # FIX ME
    # FIX ME
    return
    
def suma(x,y):
    return x+y
def multiplicar(x,y):
    return x*y
    
print aplicar_funcion(1, 2, 3, suma)
print aplicar_funcion(1, 2, 3, multiplicar)
print aplicar_funcion("a", "b", "c", suma)
print aplicar_funcion("a", 2, 3, multiplicar)
    
In [ ]:
    
def aplicar_funcion(a, b, c, funcion):
    ab = funcion(a,b)
    abc = funcion(ab, c)
    return abc
    
def suma(x,y):
    return x+y
def multiplicar(x,y):
    return x*y
    
print aplicar_funcion(1, 2, 3, suma)
print aplicar_funcion(1, 2, 3, multiplicar)
print aplicar_funcion("a", "b", "c", suma)
print aplicar_funcion("a", 2, 3, multiplicar)
    
In [ ]:
    
def factorial(n):
    if n <= 0:
        return 1
    else:
        return factorial(n - 1) * n
    
print factorial(2)
print factorial(10)
    
In [ ]:
    
def suma_digitos(n):
    n_str = str(n)
    if len(n_str)==1:
        # FIX ME
    else:
        # FIX ME
    
print suma_digitos(234)
    
In [ ]:
    
def suma_digitos(n):
    n_str = str(n)
    if len(n_str)==1:
        return n
    else:
        primer_digito = n_str[0]
        otros_digitos = n_str[1:]
        return int(primer_digito) + suma_digitos(int(otros_digitos))
    
print suma_digitos(234)
    
Realizar al menos 1 ejercicio de Diseño De Algoritmos
Realizar al menos 1 ejercicio de Funciones y Módulos
Enviar por correo, indicando: