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 [ ]:
N = int(raw_input("Ingrese numero de datos:"))
# Calculo del promedio
print "Ingrese numeros (para calcular promedio)"
j = 1
mean = 0.0
while j<=N:
x_i = float(raw_input("Ingrese numero: "))
mean += x_i
j += 1
mean = mean / N
# Calculo de desviacion estandar
print "Ingrese los MISMOS numeros (para calcular desviacion estandar)"
j = 1
var = 0.0
while j<=N:
x_i = float(raw_input("Ingrese numero: "))
var += (x_i-mean)**2
j += 1
std = (var/N)**0.5
# Imprimir resultados
print "promedio", mean
print "desviacion estandar", std
El problema anterior resultaba engorroso para el usuario porque necesitabamos realizar 2 ciclos while en los datos:
Proceso sería más fácil si primero almacenáramos los datos, y luego realizáramos los cálculos necesarios sin molestar al usuario.
In [ ]:
posicion_alfil = (7, 6)
alumno = ('Fulano', 'De Tal', '201199001-1')
carta = (5, 'corazones')
fecha = (2011, 4, 12)
triangulo = ((5, 1), (2, 4), (-2, 0))
personaje = ('Arturo Prat', (1848, 4.0, 3), (1879, 5, 21))
In [ ]:
print personaje[0][0:5]
In [ ]:
punto = (6.6, -2.4, 3.7)
x, y, z = punto
print x
In [ ]:
personaje = ("Bernardo O'Higgins", (1778, 8, 20), (1842, 10, 24))
nombre, nacimiento, _ = personaje
an, mn, dn = nacimiento
ad, md, dd = defuncion
print ad - an
print personaje
In [ ]:
a = (1,2)
b = (-1,-2)
c1 = a + b
print c1
c2 = (a[0] + b[0], a[1] + b[1])
print c2
print type(a[1])
In [ ]:
def rectangulo(a,b):
peri = 2*(a+b)
area = a*b
return peri, area
s = rectangulo(1,2)
print type(s)
print s
p, a = rectangulo(2,3) # Esto de clase anterior era una desempaquetado!
print type(p)
print p
print type(s)
print s
In [ ]:
s_mixto = (1, 1.0, True, "1")
print len(s_mixto)
#print sum(s_mixto)
print sum(s_mixto[:3])
s = (1, 1.0, 2., 2, 3.)
print len(s)
print s[1:-1]
print sum(s)
print sum(s[1:-1])
In [ ]:
mi_tupla = ("sebastian", "carlos", "jose")
print "sebastian" in mi_tupla
print "seba" in mi_tupla
print "carlos" in mi_tupla
print "pepe" in mi_tupla
In [ ]:
# Posicion original
punto = (0, 0, 0)
print punto
# Acceso a valores
v = (1,2,3)
dt = 2.0
print punto[0] + v[0]*dt
print punto[1] + v[1]*dt
print punto[2] + v[2]*dt
# Actualización de valores
#punto[0] = 1
s = (1, 1.0, 2., 2, 3.)
print s[1:-1]
print len(s)
print sum(s)
print sum(s[1:-1])
In [ ]:
n = int(raw_input("Ingrese n: "))
j = 1
a, b = 0, 1
while j<=n:
print b,
a, b = b, a+b # Mira Ma, sin variables auxiliares
j+= 1
In [ ]:
mi_lista_1 = [1, 1., "1", True]
mi_lista_2 = [1, 2, 4, 10, 55]
print mi_lista_1
print mi_lista_2
# Convertir de tupla a lista
mi_tupla = tuple(mi_lista_1)
print mi_tupla, type(mi_tupla)
mi_nueva_lista = list(mi_tupla)
print mi_nueva_lista, type(mi_nueva_lista)
In [ ]:
valores = []
print valores
valores.append(5)
print valores
valores.append(1)
print valores
valores.append(6)
print valores
valores.append(-4)
print valores
In [ ]:
# Terminamos de pedir datos cuando se ingresa "fin".
mi_lista = [] # Lista vacia
while True:
mi_dato = raw_input("Ingrese dato: ")
if mi_dato=="fin":
break
else:
if mi_dato in ("True", "False"):
mi_lista.append(bool(mi_dato))
else:
mi_lista.append(mi_dato)
# Imprimamos la lista
print mi_lista
print bool("True")
print bool("False")
print bool("")
In [ ]:
a = [0, 10, 20, 30]
print a[0]
print a[-1]
print a
a.append(2)
a.append(-3)
print a[0]
print a[-1]
print a
In [ ]:
x = [1,3,5,7,9,0,2,4,6,8]
print len(x)
print sum(x)
x.reverse() # Revierte orden de la lista (y no regresa nada)
print x
x.sort() # Ordena la lista (y no regresa nada)
print x
x.reverse() # Revierte orden de la lista (y no regresa nada)
print x
xi = x.pop()
print xi
print x
In [ ]:
mi_lista = ["sebastian", "carlos", "jose"]
print "sebastian" in mi_lista
print "seba" in mi_lista
print "carlos" in mi_lista
print "pepe" in mi_lista
In [ ]:
print range(5)
print range(10)
print range(2, 5)
print range(2, 10)
print range(2, 5, 3)
print range(2, 11, 3)
In [ ]:
n = 10
l = []
j = 1
while j<=n:
l.append(1./j)
j+= 1
print sum(l)
In [ ]:
a = [5, 1, 4]
b = list(a) # a
b.append(10)
# Modifiquemos b
b[0] = 1000
print b
print a
# la lista a tambien se vio modificada
Para evitar este comportamiento, debemos utilizar
b = list(a)
In [ ]:
###################################################################
# Cambiar para utilizar listas
###################################################################
N = int(raw_input("Ingrese numero de datos:"))
# Calculo del promedio
print "Ingrese numeros (para calcular promedio)"
j = 1
mean = 0.0
while j<=N:
x_i = float(raw_input("Ingrese numero: "))
mean += x_i
j += 1
mean = mean / N
# Calculo de desviacion estandar
print "Ingrese los MISMOS numeros (para calcular desviacion estandar)"
j = 1
var = 0.0
while j<=N:
x_i = float(raw_input("Ingrese numero: "))
var += (x_i-mean)**2
j += 1
std = (var/N)**0.5
# Imprimir resultados
print "promedio", mean
print "desviacion estandar", std
In [ ]:
N = int(raw_input("Ingrese numero de datos:"))
lista_datos = []
# Crear la lista
j = 1
while j<=N:
x_i = float(raw_input("Ingrese numero: "))
lista_datos.append(x_i)
j += 1
# Calcular el promedio
i = 0
mean = 0.0
while i<N:
x_i = lista_datos[i]
mean += x_i
i += 1
mean = mean / N
# Calculo de desviacion estandar
k = 0
var = 0.0
while k<N:
x_k = lista_datos[k]
var += (x_k-mean)**2
k += 1
std = (var/N)**0.5
# Imprimir resultados
print "promedio", mean
print "desviacion estandar", std
In [ ]:
N = int(raw_input("Ingrese numero de datos:"))
lista_datos = []
# Crear la lista
j = 1
while j<=N:
x_i = float(raw_input("Ingrese numero: "))
lista_datos.append(x_i)
j += 1
# Calcular el promedio
mean = sum(lista_datos) / N
# Calculo de desviacion estandar
k = 0
var = 0.0
while k<N:
x_k = lista_datos[k]
var += (x_k-mean)**2
k += 1
std = (var/N)**0.5
# Imprimir resultados
print "promedio", mean
print "desviacion estandar", std
Cineton, una nueva cadena de cines creada por emprendedores de la USM, est ́a ingresando al mercado cinematogr ́afico. Por eso necesita de su ayuda para implementar ciertas funciones ́ de la cartelera en Phyton y con ellas manejar la cartelera. Para ello se cuenta con la informaci on de cine en una lista de tuplas como cartelera. A modo de ejemplo, en cartelera la pel ́ıcula ’Gloria’ (Chilena), creada en 2013, se exhibir ́a el mes de ’enero’ en las ’sala1’ y ’sala2’.
Cada elemento de la lista tiene la siguiente estructura:
(mes, pais, nombre_pelicula, año_filmacion, [sala1, sala2, ...])
In [ ]:
cartelera = [
('febrero', 'FRANCIA', 'El muelle', 1962, ['sala1', 'sala3']),
('febrero', 'FRANCIA', 'La dama de honor', 2004, ['sala1', 'sala4']),
('abril', 'RUSIA', 'Padre del soldado', 1964, ['sala3', 'sala2', 'sala4']),
('enero', 'CHILE', 'Gloria', 2013, ['sala1', 'sala2']),
('mayo', 'MEXICO', 'Cumbres', 2013, ['sala3', 'sala2']),
('julio', 'FRANCIA', 'Melo', 1986, ['sala3', 'sala1']),
('junio', 'BELGICA', 'Rondo', 2012, ['sala4', 'sala2']),
('marzo', 'ALEMANIA', 'Tiempo de Canibales', 2014, ['sala1', 'sala2']),
('marzo', 'ALEMANIA', 'Soul Kitchen', 2009, ['sala3', 'sala4']),
]
Desarrolle la función pelicula_por_pais(cartelera, pais) que recibe la lista de la cartelera y el nombre de un país, y que retorne la lista con las películas realizadas en dicho país. Cada elemento de esta lista resultante es una tupla con el nombre de la película y el año de filmación.
>>> pelicula_por_pais(cartelera, 'FRANCIA')
[('El muelle', 1962), ('La dama de honor', 2004), ('Melo', 1986)]
In [ ]:
# Solucion estudiantes
Desarrolle la función pelicula_por_pais(cartelera, pais) que recibe la lista de la cartelera y el nombre de un país, y que retorne la lista con las películas realizadas en dicho país. Cada elemento de esta lista resultante es una tupla con el nombre de la película y el año de filmación.
>>> pelicula_por_pais(cartelera, 'FRANCIA')
[('El muelle', 1962), ('La dama de honor', 2004), ('Melo', 1986)]
In [ ]:
# Solucion
def pelicula_por_pais(cartelera, pais):
n = len(cartelera)
j = 0
peliculas_pais = []
while j<n:
mes_j, pais_j, nombre_pelicula_j, anno_j, salas_j = cartelera[j]
if pais_j==pais:
peliculas_pais.append( (nombre_pelicula_j, anno_j) )
j += 1
return peliculas_pais
print pelicula_por_pais(cartelera, 'FRANCIA')