Python - Generadores de Números & Caracteres

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

Geogebra Python