
























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
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
1 / 32
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!

























Ejercicio 5: Generador de Tablas de Multiplicar
Ejercicio 6: An´alisis de Texto
Ejercicio 7: B´usqueda en Matriz
Ejercicio 8: Simulador de Cajero Autom´atico
Ejercicio 9: N´umeros Perfectos
Ejercicio 10: Ordenamiento Personalizado
Ejercicio 11: Conversor de Bases Num´ericas
Ejercicio 19: B´usqueda Binaria Personalizada
Ejercicio 20: Simulador de Dados
Ejercicio 21: Eliminaci´on de Duplicados en Lista
Ejercicio 22: Verificador de Pal´ındromos
Ejercicio 23: Generador de Secuencias Collatz
Ejercicio 24: Calculadora de Notas
Ejercicio 25: Contador de N´umeros Pares e Impares
Ejercicio 26: Conversor de Temperaturas
Ejercicio 27: Generador de Matriz Identidad
Ejercicio 28: Encontrar el M´ınimo y M´aximo
Ejercicio 29: Suma de N´umeros en un Rango
Ejercicio 30: Juego de Piedra, Papel o Tijera
Ejercicio 31: C´alculo de Factorial con Validaci´on
Ejercicio 32: Generador de N´umeros Aleatorios ´Unicos
Ejercicio 33: Ordenamiento por Inserci´on
Ejercicio 34: Calculadora de ´Areas Geom´etricas
Ejercicio 43: Generador de Tabla de Multiplicar Inversa
Ejercicio 44: Calculadora de IMC
2
Ejercicio 45: Generador de N´umeros Perfectos
Ejercicio 46: Validaci´on de Correo Electr´onico
Ejercicio 47: Generador de Secuencia de N´umeros Primos
Ejercicio 48: Juego de Memoria
Ejercicio 49: Generador de Matriz Transpuesta
Ejercicio 50: C´alculo de Potencia sin Operador
Ejercicio 51: Generador de N´umeros Romanos
Ejercicio 52: Contador de D´ıgitos Repetidos
Ejercicio 53: Simulador de Lanzamiento de Moneda
Ejercicio 54: Generador de Tri´angulo de Pascal
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 )
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