🟡 Pack Intermedio
Nivel medio: Estos problemas requieren combinar varias técnicas.
Si no sale en 15 minutos, mira la pista antes de la solución.
Ejercicio 1: Palíndromo (5 pts)
Determina si una frase es palíndromo (ignorando espacios, mayúsculas y puntuación).
Entrada: Anita lava la tina
Salida: SI
💡 Pista
Filtra solo letras, convierte a minúsculas, compara con su reverso.
👁️ Ver solución
texto = input().lower()
limpio = "".join(c for c in texto if c.isalpha())
print("SI" if limpio == limpio[::-1] else "NO")
Ejercicio 2: Letra más frecuente (6 pts)
Encuentra la letra que más se repite en un texto.
Entrada: banana
Salida: a 3
👁️ Ver solución
texto = input().lower()
freq = {}
for c in texto:
if c.isalpha():
freq[c] = freq.get(c, 0) + 1
mas = max(freq, key=freq.get)
print(mas, freq[mas])
Ejercicio 3: Segundo mayor (5 pts)
Encuentra el segundo número más grande de una lista.
Entrada: 5 2 8 8 1 9
Salida: 8
👁️ Ver solución
nums = list(map(int, input().split()))
unicos = sorted(set(nums), reverse=True)
print(unicos[1])
Ejercicio 4: Cifrado César (7 pts)
Cifra un texto desplazando cada letra N posiciones.
Entrada: abc
3
Salida: def
👁️ Ver solución
texto = input()
n = int(input())
resultado = ""
for c in texto:
if c.isalpha():
base = ord('A') if c.isupper() else ord('a')
resultado += chr((ord(c) - base + n) % 26 + base)
else:
resultado += c
print(resultado)
Ejercicio 5: Números primos (6 pts)
Lista todos los primos entre A y B.
Entrada: 10 20
Salida: 11 13 17 19
👁️ Ver solución
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
a, b = map(int, input().split())
primos = [n for n in range(a, b + 1) if es_primo(n)]
print(" ".join(map(str, primos)))
Ejercicio 6: Ranking (8 pts)
N alumnos con nombre y nota. Ordena por nota desc, empates por nombre asc.
Entrada:
3
Ana 85
Luis 92
Eva 85
Salida:
Luis 92
Ana 85
Eva 85
👁️ Ver solución
n = int(input())
alumnos = []
for _ in range(n):
partes = input().split()
alumnos.append((partes[0], int(partes[1])))
for nombre, nota in sorted(alumnos, key=lambda x: (-x[1], x[0])):
print(nombre, nota)
Ejercicio 7: Anagramas (7 pts)
Determina si dos palabras son anagramas (mismas letras).
Entrada: roma amor
Salida: SI
👁️ Ver solución
a, b = input().lower().split()
print("SI" if sorted(a) == sorted(b) else "NO")
Ejercicio 8: Triángulo centrado (6 pts)
Dibuja un triángulo de asteriscos centrado.
Entrada: 4
Salida:
*
***
*****
*******
👁️ Ver solución
n = int(input())
for i in range(1, n + 1):
print(" " * (n - i) + "*" * (2 * i - 1))
Ejercicio 9: Suma de dígitos (5 pts)
Suma los dígitos de un número.
Entrada: 12345
Salida: 15
👁️ Ver solución
n = input()
print(sum(int(d) for d in n))
Ejercicio 10: Eliminar duplicados (6 pts)
Elimina elementos duplicados manteniendo el orden.
Entrada: 1 2 2 3 1 4 3
Salida: 1 2 3 4
👁️ Ver solución
nums = input().split()
vistos = []
for n in nums:
if n not in vistos:
vistos.append(n)
print(" ".join(vistos))