Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


EJERCICIOS DE PROGRAMACION EN PYTHON - ESTRUCTURAS DE CONTROL (PARTE 2), Exámenes de Programación Lineal

Este documento es un solucionario de ejercicios de programación en Python, enfocado en estructuras de control, elaborado por la Universidad de Atacama. Contiene 60 ejercicios resueltos, cada uno con su enunciado y solución detallada en código Python. Los ejercicios abarcan temas diversos como secuencias Fibonacci condicionales, validación de contraseñas, juegos de adivinanza, cálculos de impuestos, generación de patrones, validación de fechas, cifrado César, búsqueda en matrices, simuladores de cajeros automáticos, números perfectos, ordenamiento personalizado, conversión de bases numéricas, y más. Las soluciones incluyen funciones, bucles, condicionales, manejo de errores, y estructuras de datos como listas y diccionarios. El documento está organizado en páginas numeradas, con enunciados claros y código bien estructurado, ideal para estudiantes que buscan practicar y mejorar sus habilidades en Python.

Tipo: Exámenes

2024/2025

A la venta desde 16/05/2025

Apuntes-UDA
Apuntes-UDA 🇨🇱

5

(2)

392 documentos

1 / 32

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
EJERCICIOS DE PROGRAMACION EN PYTHON -
ESTRUCTURAS DE CONTROL (PARTE 2)
Universidad de Atacama - Facultad de Ingenieria
12 de Mayo de 2025
Ejercicio 1: Secuencia Fibonacci Condicional
Escribe un programa que genere los primeros nerminos de la secuencia Fibonacci, pero solo
imprime los erminos que son umeros primos. Si nes menor que 3, imprime "La secuencia debe
tener al menos 3 erminos".
Ejercicio 2: Validaci´on de Contrase˜na
Crea un programa que valide una contrase˜na ingresada por el usuario. La contrase˜na debe cumplir
con:
Al menos 8 caracteres.
Al menos una letra may´uscula y una min´uscula.
Al menos un umero.
Al menos un car´acter especial (!@ # $%).
Si la contrase˜na es alida, imprime "V´alida"; de lo contrario, indica qu´e requisitos faltan.
Ejercicio 3: Juego de Adivinanza con Pistas
Implementa un juego donde el programa genera un umero aleatorio entre 1 y 100, y el usuario
debe adivinarlo. Despu´es de cada intento, el programa indica si el umero es mayor o menor, y si el
intento es par o impar. El juego termina cuando el usuario acierta o despu´es de 10 intentos.
Ejercicio 4: alculo de Impuestos Progresivos
Dado el ingreso anual de una persona, calcula el impuesto a pagar seg´un las siguientes reglas:
Hasta $10,000: 5 %.
$10,001-$50,000: 10 %.
$50,001-$100,000: 15 %.
as de $100,000: 20 %.
Muestra el impuesto total y el ingreso despu´es de impuestos.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20

Vista previa parcial del texto

¡Descarga EJERCICIOS DE PROGRAMACION EN PYTHON - ESTRUCTURAS DE CONTROL (PARTE 2) y más Exámenes en PDF de Programación Lineal solo en Docsity!

EJERCICIOS DE PROGRAMACION EN PYTHON -

ESTRUCTURAS DE CONTROL (PARTE 2)

Universidad de Atacama - Facultad de Ingenieria

12 de Mayo de 2025

Ejercicio 1: Secuencia Fibonacci Condicional

Escribe un programa que genere los primeros n t´erminos de la secuencia Fibonacci, pero solo

imprime los t´erminos que son n´umeros primos. Si n es menor que 3, imprime "La secuencia debe

tener al menos 3 t´erminos".

Ejercicio 2: Validaci´on de Contrase˜na

Crea un programa que valide una contrase˜na ingresada por el usuario. La contrase˜na debe cumplir

con:

Al menos 8 caracteres.

Al menos una letra may´uscula y una min´uscula.

Al menos un n´umero.

Al menos un car´acter especial (!@ # $ %).

Si la contrase˜na es v´alida, imprime "V´alida"; de lo contrario, indica qu´e requisitos faltan.

Ejercicio 3: Juego de Adivinanza con Pistas

Implementa un juego donde el programa genera un n´umero aleatorio entre 1 y 100, y el usuario

debe adivinarlo. Despu´es de cada intento, el programa indica si el n´umero es mayor o menor, y si el

intento es par o impar. El juego termina cuando el usuario acierta o despu´es de 10 intentos.

Ejercicio 4: C´alculo de Impuestos Progresivos

Dado el ingreso anual de una persona, calcula el impuesto a pagar seg´un las siguientes reglas:

Hasta $10,000: 5 %.

M´as de $100,000: 20 %.

Muestra el impuesto total y el ingreso despu´es de impuestos.

Ejercicio 5: Generador de Tablas de Multiplicar

Crea un programa que genere tablas de multiplicar desde el 1 hasta el n ingresado por el usuario.

Solo muestra las tablas de los n´umeros impares y omite las multiplicaciones que resulten en un

n´umero par.

Ejercicio 6: An´alisis de Texto

Dado un texto, cuenta:

N´umero de vocales.

N´umero de palabras que empiezan con may´uscula.

N´umero de oraciones (separadas por ".").

Usa un men´u para que el usuario elija qu´e an´alisis desea realizar.

Ejercicio 7: B´usqueda en Matriz

Crea una matriz de n × m con n´umeros aleatorios. Luego, busca un n´umero espec´ıfico ingresado

por el usuario. Si se encuentra, muestra sus coordenadas; si no, imprime "No encontrado". Usa

break para detener la b´usqueda al encontrar el n´umero.

Ejercicio 8: Simulador de Cajero Autom´atico

Implementa un cajero autom´atico que:

Permita depositar, retirar y consultar saldo.

Valide que el retiro no exceda el saldo.

Use un men´u con switch (diccionario en Python) para las opciones.

Ejercicio 9: N´umeros Perfectos

Un n´umero perfecto es igual a la suma de sus divisores propios (excluy´endose a s´ı mismo).

Encuentra todos los n´umeros perfectos entre 1 y n, donde n es ingresado por el usuario.

Ejercicio 10: Ordenamiento Personalizado

Dada una lista de n´umeros, ord´enala de forma ascendente, pero coloca todos los n´umeros primos

al principio. Imprime la lista resultante.

Ejercicio 11: Conversor de Bases Num´ericas

Crea un programa que convierta un n´umero entre las bases 2, 8, 10 y 16. El usuario debe ingresar

el n´umero, la base actual y la base a la que desea convertir. Valida que el n´umero sea correcto para

la base dada.

Ejercicio 19: B´usqueda Binaria Personalizada

Implementa la b´usqueda binaria en una lista ordenada, pero si el n´umero no est´a, devuelve la

posici´on donde deber´ıa insertarse para mantener el orden.

Ejercicio 20: Simulador de Dados

Simula el lanzamiento de dos dados 100 veces y cuenta cu´antas veces la suma de los dados es un

n´umero primo.

Ejercicio 21: Eliminaci´on de Duplicados en Lista

Dada una lista, elimina los elementos duplicados sin usar estructuras de datos adicionales

(como conjuntos). Mant´en el orden original de los elementos restantes.

Ejercicio 22: Verificador de Pal´ındromos

Escribe un programa que verifique si una palabra o frase es un pal´ındromo (se lee igual al derecho

y al rev´es), ignorando espacios, signos de puntuaci´on y diferencias entre may´usculas/min´usculas.

Ejemplo: .Anita lava la tina" es pal´ındromo.

Ejercicio 23: Generador de Secuencias Collatz

Para un n´umero n, genera la secuencia de Collatz (si n es par, div´ıdelo entre 2; si es impar,

multipl´ıcalo por 3 y s´umale 1). Det´en la secuencia cuando llegues a 1 y muestra la cantidad de pasos

requeridos.

Ejercicio 24: Calculadora de Notas

Dadas las notas de un estudiante en 5 asignaturas, calcula el promedio y determina si aprob´o

(nota ≥ 60) o reprob´o. Si hay al menos una nota menor a 40, el estudiante reprueba autom´aticamente.

Ejercicio 25: Contador de N´umeros Pares e Impares

Dada una lista de n´umeros, cuenta cu´antos son pares e impares. Luego, crea dos listas separadas

para pares e impares y mu´estralas en formato:

Pares: [2, 4, ...]

Impares: [1, 3, ...]

Ejercicio 26: Conversor de Temperaturas

Convierte entre Celsius, Fahrenheit y Kelvin. El usuario debe ingresar:

La temperatura.

La escala actual (C, F o K).

La escala a la que desea convertir.

Valida que las escalas ingresadas sean correctas.

Ejercicio 27: Generador de Matriz Identidad

Crea una matriz identidad de tama˜no n × n (1 en la diagonal, 0 en el resto). Luego, permite al

usuario multiplicarla por un escalar y mostrar el resultado. Usa bucles anidados para la implemen-

taci´on.

Ejercicio 28: Encontrar el M´ınimo y M´aximo

Dada una lista de n´umeros, encuentra el m´ınimo y el m´aximo sin usar las funciones min() o

max(). Utiliza solo bucles y condicionales.

Ejercicio 29: Suma de N´umeros en un Rango

Calcula la suma de todos los n´umeros en un rango [a, b] ingresado por el usuario, excluyendo

los n´umeros primos. Muestra tanto la suma como los n´umeros primos excluidos.

Ejercicio 30: Juego de Piedra, Papel o Tijera

Implementa el juego contra la computadora. El usuario elige una opci´on (piedra, papel o

tijera), y la computadora elige al azar. Muestra el resultado y lleva un contador de victorias en 3

rondas.

Ejercicio 31: C´alculo de Factorial con Validaci´on

Calcula el factorial de un n´umero ingresado por el usuario. Valida que:

El n´umero sea no negativo.

El n´umero sea menor que 20 (para evitar desbordamiento).

Usa un bucle for para el c´alculo.

Ejercicio 32: Generador de N´umeros Aleatorios ´Unicos

Genera n n´umeros aleatorios ´unicos en un rango [a, b] ingresado por el usuario. Aseg´urate de que

no haya repeticiones usando un bucle while y listas.

Ejercicio 33: Ordenamiento por Inserci´on

Implementa el algoritmo de ordenamiento por inserci´on para ordenar una lista de n´umeros ingre-

sada por el usuario. Muestra la lista despu´es de cada iteraci´on principal.

Ejercicio 34: Calculadora de ´Areas Geom´etricas

Calcula el ´area de figuras geom´etricas (c´ırculo, tri´angulo, cuadrado) seg´un la elecci´on del usuario.

Valida que las medidas ingresadas sean positivas. Usa un men´u con opciones num´ericas.

Ejercicio 43: Generador de Tabla de Multiplicar Inversa

Genera una tabla de multiplicar del 10 al 1 para un n´umero n ingresado por el usuario. Omite

las multiplicaciones que resulten en un n´umero impar. Ejemplo para n = 2:

10 × 2 = 20

8 × 2 = 16

2 × 2 = 4

Ejercicio 44: Calculadora de IMC

Calcula el ´Indice de Masa Corporal (IMC) con la f´ormula:

IMC =

peso (kg)

altura (m)

2

Clasifica el resultado en:

Bajo peso: IMC < 18 , 5

Normal: 18, 5 ≤ IMC < 25.

Sobrepeso: 25 ≤ IMC < 30

Obesidad: IMC ≥ 30

Ejercicio 45: Generador de N´umeros Perfectos

Un n´umero perfecto es igual a la suma de sus divisores propios (ej. 6 = 1 + 2 + 3). Encuentra

todos los n´umeros perfectos entre 1 y n. Optimiza el programa para evitar c´alculos redundantes.

Ejercicio 46: Validaci´on de Correo Electr´onico

Valida si una direcci´on de correo electr´onico cumple con el formato [email protected]´on.

Reglas:

Usuario: solo letras, n´umeros, puntos (.), guiones (-) o underscores ( ).

Dominio: letras, n´umeros y guiones.

Extensi´on: 2 a 4 letras.

Ejercicio 47: Generador de Secuencia de N´umeros Primos

Genera los primeros n n´umeros primos y almac´enalos en una lista. Luego, muestra:

La suma de todos los primos generados.

La diferencia entre el mayor y el menor primo.

Ejercicio 48: Juego de Memoria

Implementa un juego donde el programa muestra una secuencia aleatoria de n´umeros (ej. 3, 5,

2 ) durante 3 segundos. El usuario debe ingresar la secuencia correcta. Aumenta la longitud de la

secuencia en cada ronda y lleva un contador de aciertos.

Ejercicio 49: Generador de Matriz Transpuesta

Dada una matriz de n × m ingresada por el usuario (valores separados por espacios), genera su

matriz transpuesta. Ejemplo:

Original:

Transpuesta:

Ejercicio 50: C´alculo de Potencia sin Operador

Calcula baseexponente^ sin usar el operador ** o funciones externas. Usa un bucle for para multi-

plicaciones sucesivas. Maneja correctamente exponentes negativos (devuelve 1/base|exponente|).

Ejercicio 51: Generador de N´umeros Romanos

Convierte un n´umero entero (entre 1 y 3999) a su representaci´on en n´umeros romanos. Reglas:

Letras: I (1), V (5), X (10), L (50), C (100), D (500), M (1000).

Restas: IV (4), IX (9), XL (40), etc.

Ejercicio 52: Contador de D´ıgitos Repetidos

Dado un n´umero entero, cuenta cu´antas veces aparece cada d´ıgito (0-9). Muestra el resultado en

un diccionario. Ejemplo para 12204:

Ejercicio 53: Simulador de Lanzamiento de Moneda

Simula 1000 lanzamientos de una moneda y muestra:

Porcentaje de caras y sellos.

La racha m´as larga de caras consecutivas.

Ejercicio 54: Generador de Tri´angulo de Pascal

Genera las primeras n filas del Tri´angulo de Pascal. Cada n´umero es la suma de los dos directa-

mente arriba. Formato de salida para n = 4:

(SOLUCIONARIO) EJERCICIOS DE PROGRAMACION

EN PYTHON - ESTRUCTURAS DE CONTROL (PARTE

Universidad de Atacama Facultad de Ingenieria

12 de Mayo de 2025

Soluci´on Ejercicio 1: Secuencia Fibonacci Condicional

1 def es_primo ( n ) : 2 if n < 2: 3 return False 4 for i in range (2 , int ( n **0.5) + 1) : 5 if n % i == 0: 6 return False 7 return True 8 9 def fibonacci_primos ( n ) : 10 if n < 3: 11 print ( " La secuencia debe tener al menos 3 t r m i n o s " ) 12 return 13 14 a , b = 0 , 1 15 count = 0 16 while count < n : 17 if es_primo ( a ) : 18 print (a , end = ’ ’) 19 a , b = b , a + b 20 count += 1 21 22 n = int ( input ( " Ingrese n : " ) ) 23 fibonacci_primos ( n )

Soluci´on Ejercicio 2: Validaci´on de Contrase˜na

1 import re 2 3 def v a l i d a r _ c o n t r a s e a ( c o n t r a s e a ) : 4 errores = [] 5 if len ( c o n t r a s e a ) < 8: 6 errores. append ( " Al menos 8 caracteres " ) 7 if not re. search ( r ’[A - Z ] ’ , c o n t r a s e a ) : 8 errores. append ( " Al menos una m a y s c u l a " ) 9 if not re. search ( r ’[a - z ] ’ , c o n t r a s e a ) : 10 errores. append ( " Al menos una m i n s c u l a " ) 11 if not re. search ( r ’\ d ’ , c o n t r a s e a ) : 12 errores. append ( " Al menos un n m e r o " ) 13 if not re. search ( r ’ [! @ # $ %^&*] ’ , c o n t r a s e a ) : 14 errores. append ( " Al menos un c a r c t e r especial " )

15 16 if not errores : 17 return " V l i d a " 18 else : 19 return " Faltan : " + " , ". join ( errores ) 20 21 c o n t r a s e a = input ( " Ingrese c o n t r a s e a : " ) 22 print ( v a l i d a r _ c o n t r a s e a ( c o n t r a s e a ) )

Soluci´on Ejercicio 3: Juego de Adivinanza con Pistas

1 import random 2 3 def juego_adivinanza () : 4 numero = random. randint (1 , 100) 5 intentos = 0 6 7 while intentos < 10: 8 intento = int ( input ( " Adivina (1 -100) : " ) ) 9 intentos += 1 10 11 if intento == numero : 12 print ( f " Correcto! Lo lograste en { intentos } intentos. " ) 13 return 14 elif intento < numero : 15 print ( " Mayor " , end = ’ ’) 16 else : 17 print ( " Menor " , end = ’ ’) 18 19 print ( f " ( Intento { ’ par ’ if intento % 2 == 0 else ’ impar ’}) " ) 20 21 print ( f " Agotaste tus intentos! El n m e r o era { numero }. " ) 22 23 juego_adivinanza ()

Soluci´on Ejercicio 4: C´alculo de Impuestos Progresivos

1 def calcular_impuestos ( ingreso ) : 2 if ingreso <= 10000: 3 impuesto = ingreso * 0. 4 elif ingreso <= 50000: 5 impuesto = 100000.05 + ( ingreso -10000) 0. 6 elif ingreso <= 100000: 7 impuesto = 100000.05 + 400000.10 + ( ingreso -50000) 0. 8 else : 9 impuesto = 100000.05 + 400000.10 + 500000.15 + ( ingreso -100000) *0. 10 11 neto = ingreso - impuesto 12 return impuesto , neto 13 14 ingreso = float ( input ( " Ingreso anual : " ) ) 15 impuesto , neto = calcular_impuestos ( ingreso ) 16 print ( f " Impuesto : $ { impuesto :.2 f } , Neto : $ { neto :.2 f } " )

Soluci´on Ejercicio 5: Generador de Tablas de Multiplicar

Soluci´on Ejercicio 8: Simulador de Cajero Autom´atico

1 def cajero_automatico () : 2 saldo = 0 3 while True : 4 print ( " \ n1. Depositar " ) 5 print ( " 2. Retirar " ) 6 print ( " 3. Consultar saldo " ) 7 print ( " 4. Salir " ) 8 opcion = input ( " Elija o p c i n : " ) 9 10 if opcion == ’1 ’: 11 monto = float ( input ( " Monto a depositar : " ) ) 12 saldo += monto 13 elif opcion == ’2 ’: 14 monto = float ( input ( " Monto a retirar : " ) ) 15 if monto > saldo : 16 print ( " Saldo insuficiente " ) 17 else : 18 saldo -= monto 19 elif opcion == ’3 ’: 20 print ( f " Saldo actual : $ { saldo :.2 f } " ) 21 elif opcion == ’4 ’: 22 break 23 else : 24 print ( " O p c i n i n v l i d a " ) 25 26 cajero_automatico ()

Soluci´on Ejercicio 9: N´umeros Perfectos

1 def es_perfecto ( n ) : 2 if n <= 1: 3 return False 4 suma = 1 5 for i in range (2 , int ( n **0.5) + 1) : 6 if n % i == 0: 7 suma += i 8 if i != n // i : 9 suma += n // i 10 return suma == n 11 12 def encontrar_perfectos ( n ) : 13 return [ num for num in range (2 , n +1) if es_perfecto ( num ) ] 14 15 n = int ( input ( " Ingrese n : " ) ) 16 print ( f " N m e r o s perfectos hasta { n }: { encontrar_perfectos ( n ) } " )

Soluci´on Ejercicio 10: Ordenamiento Personalizado

1 def es_primo ( n ) : 2 if n < 2: 3 return False 4 for i in range (2 , int ( n **0.5) + 1) : 5 if n % i == 0: 6 return False 7 return True 8

9 def ordenar_con_primos ( lista ) : 10 primos = [ x for x in lista if es_primo ( x ) ] 11 no_primos = [ x for x in lista if not es_primo ( x ) ] 12 return sorted ( primos ) + sorted ( no_primos ) 13 14 numeros = list ( map ( int , input ( " Ingrese n m e r o s separados por espacio : " ). split () ) ) 15 print ( " Lista ordenada : " , ordenar_con_primos ( numeros ) )

Soluci´on Ejercicio 11: Conversor de Bases Num´ericas

1 def convertir_base ( numero , base_actual , base_destino ) : 2 # Validar que el n m e r o corresponde a la base 3 digitos_validos = { 4 2: ’ 01 ’ , 5 8: ’ 01234567 ’ , 6 10: ’ 0123456789 ’ , 7 16: ’ 0123456789 ABCDEF ’ 8 } 9 10 if base_actual not in digitos_validos or base_destino not in digitos_validos : 11 return " Bases no soportadas ( solo 2 , 8 , 10 , 16) " 12 13 digitos = digitos_validos [ base_actual ] 14 if not all ( c. upper () in digitos for c in str ( numero ) ) : 15 return f " N m e r o i n v l i d o para base { base_actual } " 16 17 # Convertir a base 10 primero 18 decimal = int ( str ( numero ) , base_actual ) 19 20 # Convertir a base destino 21 if base_destino == 10: 22 return str ( decimal ) 23 24 digitos_dest = digitos_validos [ base_destino ] 25 resultado = [] 26 n = decimal 27 while n > 0: 28 resultado. append ( digitos_dest [ n % base_destino ]) 29 n = n // base_destino 30 return ’ ’. join ( reversed ( resultado ) ) or ’0 ’ 31 32 numero = input ( " N m e r o : " ) 33 base_actual = int ( input ( " Base actual (2 ,8 ,10 ,16) : " ) ) 34 base_destino = int ( input ( " Base destino (2 ,8 ,10 ,16) : " ) ) 35 print ( f " Resultado : { convertir_base ( numero , base_actual , base_destino ) } " )

Soluci´on Ejercicio 12: Generador de Patrones

1 def generar_patron (n , tipo ) : 2 if tipo == 1: # T r i n g u l o 3 for i in range (1 , n +1) : 4 print ( ’* ’ * i ) 5 elif tipo == 2: # Cuadrado hueco 6 for i in range ( n ) : 7 if i == 0 or i == n -1: 8 print ( ’* ’ * n ) 9 else :

Soluci´on Ejercicio 15: Juego del Ahorcado

1 import random 2 3 def ahorcado () : 4 palabras = [ " python " , " programacion " , " algoritmo " , " computadora " , " desarrollo " ] 5 palabra = random. choice ( palabras ) 6 adivinadas = [ ’_ ’] * len ( palabra ) 7 intentos = 6 8 letras_usadas = [] 9 10 while intentos > 0 and ’_ ’ in adivinadas : 11 print ( " \ nPalabra : " , ’ ’. join ( adivinadas ) ) 12 print ( " Letras usadas : " , ’ ’. join ( letras_usadas ) ) 13 print ( " Intentos restantes : " , intentos ) 14 letra = input ( " Ingrese una letra : " ). lower () 15 16 if letra in letras_usadas : 17 print ( " Ya usaste esa letra " ) 18 continue 19 20 letras_usadas. append ( letra ) 21 22 if letra in palabra : 23 for i , c in enumerate ( palabra ) : 24 if c == letra : 25 adivinadas [ i ] = letra 26 else : 27 intentos -= 1 28 print ( " Letra incorrecta " ) 29 30 if ’_ ’ not in adivinadas : 31 print ( f " \ n G a n a s t e! La palabra era : { palabra } " ) 32 else : 33 print ( f " \ n P e r d i s t e! La palabra era : { palabra } " ) 34 35 ahorcado ()

Soluci´on Ejercicio 16: Cifrado C´esar

1 def cifrado_cesar ( texto , desplazamiento , modo ) : 2 resultado = [] 3 for c in texto : 4 if c. isalpha () : 5 mayus = c. isupper () 6 c = c. lower () 7 codigo = ord ( c ) - ord ( ’a ’) 8 if modo == ’ cifrar ’: 9 codigo = ( codigo + desplazamiento ) % 26 10 else : 11 codigo = ( codigo - desplazamiento ) % 26 12 c = chr ( codigo + ord ( ’a ’) ) 13 if mayus : 14 c = c. upper () 15 resultado. append ( c ) 16 return ’ ’. join ( resultado ) 17 18 texto = input ( " Texto : " ) 19 desplazamiento = int ( input ( " Desplazamiento : " ) )

20 modo = input ( " ’ cifrar ’ o ’ descifrar ’: " ). lower () 21 print ( " Resultado : " , cifrado_cesar ( texto , desplazamiento , modo ) )

Soluci´on Ejercicio 17: Suma de D´ıgitos Recursiva

1 def suma_digitos ( n ) : 2 suma = sum ( int ( d ) for d in str ( n ) ) 3 return suma if suma < 10 else suma_digitos ( suma ) 4 5 numero = int ( input ( " N m e r o : " ) ) 6 print ( " Suma recursiva : " , suma_digitos ( numero ) )

Soluci´on Ejercicio 18: Generador de Contrase˜nas Aleatorias

1 import random 2 import string 3 4 def g e n e r a r _ c o n t r a s e a ( longitud ) : 5 caracteres = string. ascii_letters + string. digits + "! @ # $ %^&* " 6 while True : 7 c o n t r a s e a = ’ ’. join ( random. choice ( caracteres ) for _ in range ( longitud ) ) 8 # Validar que cumple todos los requisitos 9 if ( any ( c. islower () for c in c o n t r a s e a ) and
10 ( any ( c. isupper () for c in c o n t r a s e a ) and
11 ( any ( c. isdigit () for c in c o n t r a s e a ) and
12 ( any ( c in "! @ # $ %^&* " for c in c o n t r a s e a ) : 13 return c o n t r a s e a 14 15 longitud = int ( input ( " Longitud ( m n i m o 8) : " ) ) 16 if longitud < 8: 17 print ( " La longitud debe ser al menos 8 " ) 18 else : 19 print ( " C o n t r a s e a generada : " , g e n e r a r _ c o n t r a s e a ( longitud ) )

Soluci´on Ejercicio 19: B´usqueda Binaria Personalizada

1 def busqueda_binaria ( lista , objetivo ) : 2 izquierda , derecha = 0 , len ( lista ) - 1 3 while izquierda <= derecha : 4 medio = ( izquierda + derecha ) // 2 5 if lista [ medio ] == objetivo : 6 return medio 7 elif lista [ medio ] < objetivo : 8 izquierda = medio + 1 9 else : 10 derecha = medio - 1 11 return izquierda # P o s i c i n donde d e b e r a insertarse 12 13 lista = sorted ([ int ( x ) for x in input ( " Lista ordenada ( separada por espacios ) : " )

. split () ]) 14 objetivo = int ( input ( " Elemento a buscar : " ) ) 15 posicion = busqueda_binaria ( lista , objetivo ) 16 17 if posicion < len ( lista ) and lista [ posicion ] == objetivo : 18 print ( f " Elemento encontrado en p o s i c i n { posicion } " ) 19 else : 20 print ( f " Elemento no encontrado. D e b e r a insertarse en p o s i c i n { posicion } " )

4 n = n // 2 if n % 2 == 0 else 3 * n + 1 5 secuencia. append ( n ) 6 return secuencia 7 8 numero = int ( input ( " Ingrese n m e r o inicial : " ) ) 9 secuencia = secuencia_collatz ( numero ) 10 print ( f " Secuencia ({ len ( secuencia ) } pasos ) : { secuencia } " )

Soluci´on Ejercicio 24: Calculadora de Notas

1 def calcular_estado ( notas ) : 2 if any ( nota < 40 for nota in notas ) : 3 return " Reprobado ( nota < 40 en alguna asignatura ) " 4 promedio = sum ( notas ) / len ( notas ) 5 return " Aprobado " if promedio >= 60 else " Reprobado " 6 7 notas = list ( map ( float , input ( " Ingrese 5 notas separadas por espacios : " ). split () ) ) 8 if len ( notas ) != 5: 9 print ( " Debe ingresar exactamente 5 notas " ) 10 else : 11 print ( f " Promedio : { sum ( notas ) /5:.2 f } - Estado : { calcular_estado ( notas ) } " )

Soluci´on Ejercicio 25: Contador de N´umeros Pares e Impares

1 def clasificar_numeros ( lista ) : 2 pares = [ x for x in lista if x % 2 == 0] 3 impares = [ x for x in lista if x % 2 != 0] 4 return pares , impares 5 6 numeros = list ( map ( int , input ( " Ingrese n m e r o s separados por espacios : " ). split () ) ) 7 pares , impares = clasificar_numeros ( numeros ) 8 print ( f " Pares ({ len ( pares ) }) : { pares } " ) 9 print ( f " Impares ({ len ( impares ) }) : { impares } " )

Soluci´on Ejercicio 26: Conversor de Temperaturas

1 def convertir_temperatura ( valor , escala_origen , escala_destino ) : 2 # Convertir a Celsius primero 3 if escala_origen == ’F ’: 4 celsius = ( valor - 32) * 5/ 5 elif escala_origen == ’K ’: 6 celsius = valor - 273. 7 else : 8 celsius = valor 9 10 # Convertir de Celsius a destino 11 if escala_destino == ’F ’: 12 return celsius * 9/5 + 32 13 elif escala_destino == ’K ’: 14 return celsius + 273. 15 else : 16 return celsius 17 18 valor = float ( input ( " Temperatura : " ) )

19 origen = input ( " Escala origen ( C / F / K ) : " ). upper () 20 destino = input ( " Escala destino ( C / F / K ) : " ). upper () 21 if origen not in [ ’C ’ , ’F ’ , ’K ’] or destino not in [ ’C ’ , ’F ’ , ’K ’ ]: 22 print ( " Escalas i n v l i d a s ( use C , F o K ) " ) 23 else : 24 resultado = convertir_temperatura ( valor , origen , destino ) 25 print ( f " { valor } { origen } = { resultado :.2 f } { destino } " )

Soluci´on Ejercicio 27: Generador de Matriz Identidad

1 def matriz_identidad ( n ) : 2 return [[1 if i == j else 0 for j in range ( n ) ] for i in range ( n ) ] 3 4 def multiplicar_escalar ( matriz , escalar ) : 5 return [[ valor * escalar for valor in fila ] for fila in matriz ] 6 7 n = int ( input ( " T a m a o de matriz ( n ) : " ) ) 8 matriz = matriz_identidad ( n ) 9 print ( " Matriz identidad : " ) 10 for fila in matriz : 11 print ( fila ) 12 13 escalar = float ( input ( " Escalar para multiplicar : " ) ) 14 matriz_resultado = multiplicar_escalar ( matriz , escalar ) 15 print ( " Matriz resultante : " ) 16 for fila in matriz_resultado : 17 print ( fila )

Soluci´on Ejercicio 28: Encontrar el M´ınimo y M´aximo

1 def encontrar_min_max ( lista ) : 2 if not lista : 3 return None , None 4 minimo = maximo = lista [0] 5 for num in lista [1:]: 6 if num < minimo : 7 minimo = num 8 if num > maximo : 9 maximo = num 10 return minimo , maximo 11 12 numeros = list ( map ( float , input ( " Ingrese n m e r o s separados por espacios : " ). split () ) ) 13 minimo , maximo = encontrar_min_max ( numeros ) 14 print ( f " M n i m o : { minimo } , M x i m o : { maximo } " )

Soluci´on Ejercicio 29: Suma de N´umeros en un Rango

1 def es_primo ( n ) : 2 if n < 2: 3 return False 4 for i in range (2 , int ( n **0.5) +1) : 5 if n % i == 0: 6 return False 7 return True 8