Profesor Miguel Cantillana
INS240 – Lenguajes de Programación
Ingeniería en Computación e Informática
Semestre 2017-1
Generadores y decoradores
Son una clase especial de funciones que no generan una lista, sino una secuencia de valores sobre el que iterar
Pueden ser:
def gen_basico():
yield "uno"
yield "dos"
yield "tres"def pares():
index = 1
# En este caso definimos un bucle infinito
while True:
# Devolvemos un valor
yield index*2
index = index + 1def multiplos_de(n):
index = 1
while True:
yield index*n
index = index + 1
def generador_ips(cantidad):
for i in range(cantidad):
a = random.randint(0,255)
b = random.randint(0,255)
c = random.randint(0,255)
d = random.randint(0,255)
yield str(a) + '.' + str(b) + '.' + str(c) + '.' + str(d) Ejercicio 1
Implementa un generador sucesos (probabilidad) que produce una secuencia infinita de valores booleanos pseudoaletoreos con probabilidad de que sean True. es decir, retornar true si el valor aleatorio es menor a 0.5 y false en caso contrario.
Hint: Utiliza la función random.random () para generar un número pseudo-aleatoreo entre 0.0 y 1.0.
Ejercicio 2
Implementa un generador de números primos que funcione de la siguiente forma:
for primo in generador_primos(10):
print primo
Ejercicio 3
Implementa un generador fibonacci que produce los diferentes de la secuencia de Fibonacci, que tiene la forma:
0, 1, 1, 2, 3, 5, 8, 13, ...
Cuyos dos primeros valores son 0 y 1 por definición y el resto se calculan sumando los dos últimos valores de la sucesión.
def mi_decorador(funcion):
def nueva(*args):
print "Llamada a la funcion", funcion.__name__
retorno = funcion(*args)
return retorno
return nueva
@mi_decorador
def mi_fn():
print " Hola Mundo "