################################################################[br]#26 ejemplos de generadores en Python que devuelven números o caracteres.[br][br]#1. Generador que devuelve números pares:[br]def pares(n):[br] for i in range(n):[br] if i % 2 == 0:[br] yield i[br]for num in pares(10):[br] print(num)[br][br]#2. Generador que devuelve números impares:[br]def impares(n):[br] for i in range(n):[br] if i % 2 != 0:[br] yield i[br]for num in impares(10):[br] print(num)[br][br]#3. Generador que devuelve números primos:[br]def es_primo(n):[br] if n < 2:[br] return False[br] for i in range(2, int(n ** 0.5) + 1):[br] if n % i == 0:[br] return False[br] return True[br][br]def primos(n):[br] i = 2[br] while True:[br] if es_primo(i):[br] yield i[br] i += 1[br] if i > n:[br] break[br][br]for num in primos(20):[br] print(num)[br][br]#4. Genere una lista de números primos hasta un número dado:[br]def primes_up_to(n):[br] primes = [][br] for i in range(2, n+1):[br] if is_prime(i):[br] primes.append(i)[br] return primes[br][br]#5. Generador que devuelve números aleatorios:[br]import random[br]def aleatorios(n):[br] for i in range(n):[br] yield random.randint(1, 100)[br]for num in aleatorios(10):[br] print(num)[br][br]#6. Generador que devuelve números en orden inverso:[br]def inverso(n):[br] for i in range(n, 0, -1):[br] yield i[br]for num in inverso(10):[br] print(num)[br][br]#7. Generador que devuelve números de Fibonacci:[br]def fibonacci(n):[br] a, b = 0, 1[br] for i in range(n):[br] yield a[br] a, b = b, a + b[br]for num in fibonacci(10):[br] print(num)[br][br]#8. Generador que devuelve números triangulares:[br]def triangulares(n):[br] for i in range(1, n + 1):[br] yield i * (i + 1) // 2[br]for num in triangulares(10):[br] print(num)[br][br]#9. Generador que devuelve números cuadrados:[br]def cuadrados(n):[br] for i in range(1, n + 1):[br] yield i ** 2[br]for num in cuadrados(10):[br] print(num)[br][br]#10. Generador que devuelve números cúbicos:[br]def cubicos(n):[br] for i in range(1, n + 1):[br] yield i ** 3[br]for num in cubicos(10):[br] print(num)[br][br]#11. Generador que devuelve números hexadecimales:[br]def hexadecimales(n):[br] for i in range(n):[br] yield hex(i)[br]for num in hexadecimales(10):[br] print(num)[br][br]#12. Generador que devuelve números romanos:[br]def romanos(n):[br] romanos = {1: 'I', 4: 'IV', 5: 'V', 9: 'IX', 10: 'X', 40: 'XL', 50: 'L', 90: 'XC', 100: 'C', 400: 'CD', 500: 'D', 900: 'CM', 1000: 'M'}[br] for i in sorted(romanos.keys(), reverse=True):[br] while n >= i:[br] yield romanos[i][br] n -= i[br]for num in romanos(10):[br] print(num)[br][br]#13. Generador que devuelve letras del alfabeto:[br]def alfabeto(n):[br] for i in range(n):[br] yield chr(i + 65)[br]for letra in alfabeto(10):[br] print(letra)[br][br]#14. Generador que devuelve letras minúsculas del alfabeto:[br]def alfabeto_min(n):[br] for i in range(n):[br] yield chr(i + 97)[br]for letra in alfabeto_min(10):[br] print(letra)[br][br]#15. Generador que devuelve letras aleatorias:[br]import random[br]def letras_aleatorias(n):[br] for i in range(n):[br] yield chr(random.randint(65, 90))[br]for letra in letras_aleatorias(10):[br] print(letra)[br][br]#16. Generador que devuelve palabras aleatorias:[br]import random[br]def palabras_aleatorias(n):[br] palabras = ['hola', 'adios', 'bienvenido', 'chau', 'hasta luego', 'hasta pronto'][br] for in range(n):[br] yield random.choice(palabras)[br]for palabra in palabras_aleatorias(10):[br] print(palabra)[br][br]#17. Generador que devuelve nombres aleatorios:[br]import random[br]nombres = ['Juan', 'Pedro', 'María', 'Ana', 'Luis', 'Carlos', 'Lucía', 'Sofía', 'Miguel', 'Jorge'][br]def nombres_aleatorios(n):[br] for i in range(n):[br] yield random.choice(nombres)[br]for nombre in nombres_aleatorios(10):[br] print(nombre)[br][br]#18. Generador que devuelve apellidos aleatorios:[br]import random[br]apellidos = ['García', 'Martínez', 'López', 'González', 'Rodríguez', 'Pérez', 'Sánchez', 'Romero', 'Fernández', 'Ruiz'][br]def apellidos_aleatorios(n):[br] for i in range(n):[br] yield random.choice(apellidos)[br]for apellido in apellidos_aleatorios(10):[br] print(apellido)[br][br]#19. Generador que devuelve fechas aleatorias:[br]import random[br]import datetime[br]def fechas_aleatorias(n):[br] for i in range(n):[br] year = random.randint(1900, 2023)[br] month = random.randint(1, 12)[br] day = random.randint(1, 28)[br] fecha = datetime.date(year, month, day)[br] yield fecha.strftime('%d/%m/%Y')[br]for fecha in fechas_aleatorias(10):[br] print(fecha)[br][br]#20. Generador que devuelve horas aleatorias:[br]import random[br]import datetime[br]def horas_aleatorias(n):[br] for i in range(n):[br] hour = random.randint(0, 23)[br] minute = random.randint(0, 59)[br] second = random.randint(0, 59)[br] hora = datetime.time(hour, minute, second)[br] yield hora.strftime('%H:%M:%S')[br]for hora in horas_aleatorias(10):[br] print(hora)[br][br]#21. Generador que devuelve direcciones aleatorias:[br]import random[br]calles = ['Av. Siempreviva', 'Calle Falsa', 'Av. Corrientes', 'Av. Santa Fe', 'Calle Florida', 'Av. 9 de Julio'][br]numeros = [100, 200, 300, 400, 500, 600, 700, 800, 900][br]ciudades = ['Buenos Aires', 'Córdoba', 'Rosario', 'Mendoza', 'La Plata', 'Mar del Plata'][br]def direcciones_aleatorias(n):[br] for i in range(n):[br] calle = random.choice(calles)[br] numero = random.choice(numeros)[br] ciudad = random.choice(ciudades)[br] direccion = f'{calle} {numero}, {ciudad}'[br] yield direccion[br]for direccion in direcciones_aleatorias(10):[br] print(direccion)[br][br]#22. Generador que devuelve números de teléfono aleatorios:[br]import random[br]def telefonos_aleatorios(n):[br] for i in range(n):[br] telefono = f'({random.randint(11, 99)}) {random.randint(1000, 9999)}-{random.randint(1000, 9999)}'[br] yield telefono[br]for telefono in telefonos_aleatorios(10):[br] print(telefono)[br][br]#23. Generador que devuelve correos electrónicos aleatorios:[br]import random[br]nombres = ['juan', 'pedro', 'maria', 'ana', 'luis', 'carlos', 'lucia', 'sofia', 'miguel', 'jorge'][br]apellidos = ['garcia', 'martinez', 'lopez', 'gonzalez', 'rodriguez', 'perez', 'sanchez', 'romero', 'fernandez', 'ruiz'][br]dominios = ['gmail.com', 'hotmail.com', 'yahoo.com', 'outlook.com', 'live.com'][br]def correos_aleatorios(n):[br] for i in range(n):[br] nombre = random.choice(nombres)[br] apellido = random.choice(apellidos)[br] dominio = random.choice(dominios)[br] correo = f'{nombre}.{apellido}@{dominio}'[br] yield correo[br]for correo in correos_aleatorios(10):[br] print(correo)[br][br]#24. Generador que devuelve contrasenas aleatorias:[br]import random[br]import string[br]def contrasenas_aleatorias(n, longitud):[br] for i in range(n):[br] caracteres = string.ascii_letters + string.digits + string.punctuation[br] contrasena = ''.join(random.choice(caracteres) for i in range(longitud))[br] yield contrasena[br]for contraseña in contrasenas_aleatorias(10, 8):[br] print(contrasena)[br][br]#25. Generador Lineal[br]def generador(start=0, step=1, stop=10):[br] n = start[br] while n <= stop:[br] yield n[br] n += step[br][br]for x in generador(10, 2.5, 20):[br] print(x)[br] [br]#26. Generador Cuadrado[br]generador = (x ** 2 for x in range(4))[br]for x in generador:[br] print(x)