operadores en Python ejercicios

Operadores en Python — ejercicios reales con solución y chuletario

Los operadores en Python ejercicios con contexto real son la mejor forma de afianzar lo que vimos en teoría y práctia. En este artículo encontrarás cinco ejercicios en tres niveles de dificultad: básico, intermedio y desafío final, con especial foco en % y // que son los operadores que más confunden.

Como siempre: intenta resolverlo, usa la pista si llevas más de 10 minutos atascado, y compara con la solución comentada al final, dispones de pythontutor.com para profundizar el aprendizaje

Cómo usar este artículo

Lee el enunciado → intenta resolverlo en VS Code → si no avanzas, lee la pista → compara tu solución con la del final. No saltes a las soluciones directamente, aprendes el doble resolviéndolo tú.

Estos operadores en Python ejercicios están ordenados de menos a más difícil para que puedas ir a tu ritmo.

Operadores en Python Ejercicios — Nivel básico

Ejercicio 1 — Factura del gimnasio

Un gimnasio cobra una cuota mensual base de 29.99€. Si el socio lleva más de 12 meses, tiene un descuento del 10%. Escribe un programa que pida los meses que lleva el socio y calcule cuánto paga ese mes, cuánto ha pagado en total y cuánto se ha ahorrado si tiene descuento.

La salida debe ser:

Meses como socio: 15

--- Factura del gimnasio ---
Cuota base:          29.99 €
Descuento (10%):     -3.0 €
Cuota este mes:      26.99 €
Total pagado:        434.85 €
Ahorro acumulado:    9.0 €

💡 Pista: Usa * para calcular el descuento y el total pagado. El total pagado son los primeros 12 meses a precio completo más los meses restantes con descuento. Usa // y % para separar los meses en dos tramos.


Ejercicio 2 — Conversor de tiempo

Escribe un programa que pida un número de segundos y lo convierta a horas, minutos y segundos. Por ejemplo 3723 segundos son 1 hora, 2 minutos y 3 segundos.

La salida debe ser:

Segundos: 3723

3723 segundos son:
→ 1 hora/s
→ 2 minuto/s
→ 3 segundo/s

💡 Pista: Este ejercicio es puro // y %. Las horas son segundos // 3600. Los minutos restantes son (segundos % 3600) // 60. Los segundos restantes son segundos % 60.


Operadores en Python Ejercicios — Nivel intermedio

Ejercicio 3 — Análisis de una nota

Escribe un programa que pida una nota del 0 al 100 y calcule la nota sobre 10, el porcentaje que representa, si está aprobado (≥50 sobre 100), cuántos puntos le faltan para el siguiente nivel (notable ≥70, sobresaliente ≥90) y cuántos puntos le sobran respecto al aprobado.

Nota (0-100): 73

--- Análisis de nota ---
Nota sobre 10:       7.3
Porcentaje:          73.0%
¿Aprobado?:          True
Siguiente nivel:     Sobresaliente (faltan 17 puntos)
Puntos sobre el aprobado: 23

💡 Pista: La nota sobre 10 es nota / 10. El porcentaje es nota * 100 / 100 — es decir, la nota directamente. Para los puntos que faltan necesitas comparar con 70 y 90 usando > y -. Usa % para calcular cuántos puntos sobran respecto al siguiente múltiplo de 10.


Ejercicio 4 — Extractor de dígitos

Escribe un programa que pida un número entero de exactamente 4 cifras y extraiga cada dígito por separado usando solo // y %. Sin usar strings, sin convertir a texto — solo operadores matemáticos.

Número de 4 cifras: 2847

--- Dígitos de 2847 ---
Millares:  2
Centenas:  8
Decenas:   4
Unidades:  7
Suma de dígitos: 21
¿Es divisible por 3?: True  (porque la suma de dígitos es divisible por 3)

💡 Pista: Unidades = n % 10. Decenas = (n // 10) % 10. Centenas = (n // 100) % 10. Millares = n // 1000. La divisibilidad por 3 se comprueba con suma % 3 == 0.


Operadores en Python Ejercicios — Desafío Final

Ejercicio 5 — Gestor de caja registradora

Este ejercicio mezcla todos los operadores. Escribe un programa que simule una caja registradora básica. Pide el importe total de la compra y el dinero entregado por el cliente, y calcula el cambio desglosado en billetes y monedas (de mayor a menor: 50€, 20€, 10€, 5€, 2€, 1€, 0.50€, 0.20€, 0.10€, 0.05€, 0.02€, 0.01€).

Importe de la compra (€): 37.43
Dinero entregado (€): 50

--- Caja registradora ---
Importe:     37.43 €
Entregado:   50.0 €
Cambio:      12.57 €

--- Desglose del cambio ---
1 billete de 10 €
1 billete de 2 €
1 moneda de 0.5 €
0 monedas de 0.05 €
1 moneda de 0.02 €

💡 Pistas:

  • Convierte el cambio a céntimos multiplicando por 100 y redondeando con int(round(...)), evita errores de decimales flotantes
  • Para cada denominación: cantidad = cambio_centimos // denominacion_centimos y luego cambio_centimos = cambio_centimos % denominacion_centimos
  • Las denominaciones en céntimos son: 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1
  • Solo muestra las denominaciones donde la cantidad sea mayor que 0

Soluciones Comentadas

Solución Ejercicio 1:

# Factura del gimnasio
CUOTA_BASE = 29.99
DESCUENTO = 0.10
MESES_MINIMOS = 12

meses = int(input("Meses como socio: "))

if meses > MESES_MINIMOS:
    descuento_euros = round(CUOTA_BASE * DESCUENTO, 2)
    cuota_mes = round(CUOTA_BASE - descuento_euros, 2)
    meses_con_descuento = meses - MESES_MINIMOS
    total = round(CUOTA_BASE * MESES_MINIMOS + cuota_mes * meses_con_descuento, 2)
    ahorro = round(descuento_euros * meses_con_descuento, 2)
else:
    descuento_euros = 0
    cuota_mes = CUOTA_BASE
    total = round(CUOTA_BASE * meses, 2)
    ahorro = 0

print(f"\n--- Factura del gimnasio ---")
print(f"Cuota base:          {CUOTA_BASE} €")
print(f"Descuento (10%):     -{descuento_euros} €")
print(f"Cuota este mes:      {cuota_mes} €")
print(f"Total pagado:        {total} €")
print(f"Ahorro acumulado:    {ahorro} €")

Solución Ejercicio 2:

# Conversor de tiempo
segundos = int(input("Segundos: "))

horas = segundos // 3600
minutos_restantes = (segundos % 3600) // 60
segs_restantes = segundos % 60

print(f"\n{segundos} segundos son:")
print(f"→ {horas} hora/s")
print(f"→ {minutos_restantes} minuto/s")
print(f"→ {segs_restantes} segundo/s")

Solución Ejercicio 3:

# Análisis de nota
nota = float(input("Nota (0-100): "))

nota_sobre_10 = round(nota / 10, 1)
porcentaje = nota
aprobado = nota >= 50

if nota < 70:
    siguiente = "Notable"
    faltan = round(70 - nota, 1)
elif nota < 90:
    siguiente = "Sobresaliente"
    faltan = round(90 - nota, 1)
else:
    siguiente = "Ya tienes sobresaliente"
    faltan = 0

puntos_sobre_aprobado = round(nota - 50, 1) if nota >= 50 else 0

print(f"\n--- Análisis de nota ---")
print(f"Nota sobre 10:       {nota_sobre_10}")
print(f"Porcentaje:          {porcentaje}%")
print(f"¿Aprobado?:          {aprobado}")
if faltan > 0:
    print(f"Siguiente nivel:     {siguiente} (faltan {faltan} puntos)")
else:
    print(f"Nivel:               {siguiente}")
print(f"Puntos sobre el aprobado: {puntos_sobre_aprobado}")

Solución Ejercicio 4:

# Extractor de dígitos
n = int(input("Número de 4 cifras: "))

unidades = n % 10
decenas  = (n // 10) % 10
centenas = (n // 100) % 10
millares = n // 1000

suma = unidades + decenas + centenas + millares
divisible_3 = suma % 3 == 0

print(f"\n--- Dígitos de {n} ---")
print(f"Millares:  {millares}")
print(f"Centenas:  {centenas}")
print(f"Decenas:   {decenas}")
print(f"Unidades:  {unidades}")
print(f"Suma de dígitos: {suma}")
print(f"¿Es divisible por 3?: {divisible_3}  (porque la suma de dígitos es divisible por 3)")

Solución Ejercicio 5:

# Caja registradora
importe = float(input("Importe de la compra (€): "))
entregado = float(input("Dinero entregado (€): "))

cambio = round(entregado - importe, 2)
cambio_centimos = int(round(cambio * 100))

denominaciones = [5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1]
nombres = ["50 €", "20 €", "10 €", "5 €", "2 €", "1 €",
           "0.50 €", "0.20 €", "0.10 €", "0.05 €", "0.02 €", "0.01 €"]

print(f"\n--- Caja registradora ---")
print(f"Importe:     {importe} €")
print(f"Entregado:   {entregado} €")
print(f"Cambio:      {cambio} €")
print(f"\n--- Desglose del cambio ---")

for i in range(len(denominaciones)):
    cantidad = cambio_centimos // denominaciones[i]
    cambio_centimos = cambio_centimos % denominaciones[i]
    if cantidad > 0:
        print(f"{cantidad} {'billete' if denominaciones[i] >= 500 else 'moneda'} de {nombres[i]}")

Chuletario — Operadores en Python Ejercicios

# ============================================
# CHULETARIO — Operadores en Python
# Sergio Learns · sergiolearns.com
# ============================================

# OPERADORES ARITMÉTICOS
5 + 3     # suma        → 8
5 - 3     # resta       → 2
5 * 3     # multiplicar → 15
5 / 2     # dividir     → 2.5  (siempre float)
5 // 2    # div entera  → 2    (redondea abajo)
5 % 2     # módulo      → 1    (resto)
5 ** 2    # potencia    → 25

# TRAMPAS COMUNES
10 / 2    # → 5.0  NO es 5 (es float)
10 // 2   # → 5   esto sí es entero
"%" NO es porcentaje — es el RESTO de la división

# OPERADORES DE COMPARACIÓN (devuelven bool)
5 > 3     # → True
5 < 3     # → False
5 >= 5    # → True
5 <= 4    # → False
5 == 5    # → True   (igual — DOBLE ==)
5 != 3    # → True   (distinto)

# OJO: = asigna, == compara
x = 5         # asignación
x == 5        # comparación → True

# OPERADORES LÓGICOS
True and True   # → True  (ambos deben ser True)
True or False   # → True  (al menos uno True)
not True        # → False (invierte)

# ASIGNACIÓN COMPUESTA
x += 5    # x = x + 5
x -= 3    # x = x - 3
x *= 2    # x = x * 2
x /= 4    # x = x / 4
x //= 2   # x = x // 2
x %= 3    # x = x % 3
x **= 2   # x = x ** 2

# PRECEDENCIA (de mayor a menor)
# 1. ( )   paréntesis
# 2. **    potencia
# 3. * / // %
# 4. + -
# 5. > < >= <= == !=
# 6. not
# 7. and
# 8. or

# USOS CLÁSICOS DEL MÓDULO %
n % 2 == 0        # par o impar
n % x == 0        # divisible por x
n % 10            # último dígito
(n // 10) % 10    # penúltimo dígito
n // 1000         # primer dígito de número de 4 cifras

# CONVERSIÓN DE TIEMPO CON // Y %
horas   = segundos // 3600
minutos = (segundos % 3600) // 60
segs    = segundos % 60

Python operators exercises — 5 solved with solutions and cheat sheet

Python operators exercises with real context are the best way to cement what you learned in theory and practice. Five exercises across three levels: basic, intermediate and final challenge, with special focus on % and //.

The method: try it → use the hint if stuck → compare with the solution.


Basic Level

Exercise 1 — Gym invoice

A gym charges 29.99€/month. Members with more than 12 months get 10% off. Ask for months as a member and calculate this month’s fee, total paid, and total savings.

💡 Hint: Use * for discount and total. Use // and % to split months into two periods.

Exercise 2 — Time converter

Ask for a number of seconds and convert to hours, minutes and seconds. Example: 3723 seconds = 1h 2m 3s.

💡 Hint: Hours = seconds // 3600. Minutes = (seconds % 3600) // 60. Seconds = seconds % 60.


Intermediate Level

Exercise 3 — Grade analyser

Ask for a grade 0-100. Calculate grade out of 10, percentage, pass/fail (≥50), points to next level (notable ≥70, outstanding ≥90), and points above pass mark.

💡 Hint: Grade out of 10 = grade / 10. Compare with 70 and 90 using > and -.

Exercise 4 — Digit extractor

Ask for a 4-digit integer and extract each digit using only // and %. No strings, no conversion — pure maths. Also check if the sum of digits is divisible by 3.

💡 Hint: Units = n % 10. Tens = (n // 10) % 10. Hundreds = (n // 100) % 10. Thousands = n // 1000.


Final Challenge

Exercise 5 — Cash register

Simulate a basic cash register. Ask for purchase amount and money given. Calculate change and break it down into bills and coins (50€, 20€, 10€, 5€, 2€, 1€, 0.50€, 0.20€, 0.10€, 0.05€, 0.02€, 0.01€).

💡 Hints:

  • Convert change to cents with int(round(change * 100)) to avoid float errors
  • For each denomination: quantity = cents // denomination, then cents = cents % denomination
  • Denominations in cents: 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1
  • Only show denominations where quantity > 0

(Solutions same as Spanish version above)

Cheat sheet — Python operators

# ============================================
# CHEAT SHEET — Python Operators
# Sergio Learns · sergiolearns.com
# ============================================

# ARITHMETIC
5 + 3     # → 8
5 / 2     # → 2.5  always float
5 // 2    # → 2    integer division
5 % 2     # → 1    remainder (NOT percentage)
5 ** 2    # → 25   power

# COMPARISON (return bool)
5 == 5    # → True   double == for comparison
5 != 3    # → True
x = 5     # assignment (single =)
x == 5    # comparison (double ==)

# LOGICAL
True and True   # → True
True or False   # → True
not True        # → False

# COMPOUND ASSIGNMENT
x += 5    # x = x + 5
x -= 3    # x = x - 3
x *= 2    # x = x * 2

# PRECEDENCE (high to low)
# ( ) ** * / // % + - comparisons not and or

# CLASSIC % USES
n % 2 == 0          # even check
n % x == 0          # divisible by x
n % 10              # last digit
(n // 10) % 10      # second to last digit

# TIME CONVERSION
hours   = seconds // 3600
minutes = (seconds % 3600) // 60
secs    = seconds % 60

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *