Saltar al contenido
Editor

Números en Python: enteros, decimales y cálculos que sí usarás

Principiante20 min6 ejercicios110 XP

Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción

0/6 ejercicios

Vas a dividir la cuenta del restaurante entre tú y tres amigos. El total es de $85. ¿Cuánto paga cada uno? Tú sacas la calculadora del teléfono, pero alguien que programa en Python escribe 85 / 4 y obtiene la respuesta al instante.

Las matemáticas son la columna vertebral de la programación. Los videojuegos las usan para la física. Las aplicaciones, para calcular precios. La ciencia de datos se apoya en ellas. ¿La buena noticia? Con Python, las matemáticas se sienten como una calculadora con superpoderes.

En este tutorial aprenderás cómo maneja Python los números, qué operadores tienes a tu disposición y cómo evitar los errores que confunden a los principiantes. Al terminar, harás cálculos del mundo real con total confianza.

¿Qué son los enteros y los decimales (floats)?

Python tiene dos tipos principales de números. Los enteros (int) son números sin punto decimal. Los números decimales (float) son números con punto decimal.

Piénsalo como si fuera dinero. "5 dólares" es un entero. "5.99 dólares" es un decimal. El punto decimal marca la diferencia.

Enteros y decimales
# Integers - whole numbers
students = 30
lives = 3
year = 2025
negative = -15
# Floats - decimal numbers
price = 9.99
temperature = 98.6
pi = 3.14159
tiny = 0.001
print(type(students)) # <class 'int'>
print(type(price)) # <class 'float'>
print(type(negative)) # <class 'int'>
print(type(temperature)) # <class 'float'>
Salida
<class 'int'>
<class 'float'>
<class 'int'>
<class 'float'>

¿Cuándo usar cada uno? Usa enteros para lo que cuentas: personas, artículos, puntos, vidas. Usa decimales para lo que mides: peso, temperatura, porcentajes, dinero.


Cómo hacer cálculos en Python

Python admite todas las operaciones matemáticas básicas que ya conoces. Los símbolos son casi idénticos a los que escribirías en papel.

Los cuatro operadores básicos
# Addition
print(10 + 3) # 13
# Subtraction
print(10 - 3) # 7
# Multiplication
print(10 * 3) # 30
# Division (always returns a float!)
print(10 / 3) # 3.3333333333333335
Salida
13
7
30
3.3333333333333335

La suma, la resta y la multiplicación funcionan exactamente como esperas. La división trae una sorpresa: siempre devuelve un float, incluso cuando el resultado es un número entero.

La división siempre devuelve un float
# Division ALWAYS gives a float
print(10 / 2) # 5.0 - not 5!
print(type(10 / 2)) # <class 'float'>
# Even when both numbers are integers
print(100 / 10) # 10.0
print(8 / 4) # 2.0
Salida
5.0
<class 'float'>
10.0
2.0

Puedes hacer cálculos con variables igual que con números sueltos. Aquí es donde la cosa se vuelve útil.

Cálculos con variables
# Real-world example: calculating a total
price = 12.50
quantity = 4
tax_rate = 0.08
subtotal = price * quantity
tax = subtotal * tax_rate
total = subtotal + tax
print(f"Subtotal: ${subtotal}")
print(f"Tax: ${tax}")
print(f"Total: ${total}")
Salida
Subtotal: $50.0
Tax: $4.0
Total: $54.0

¿Qué son la división entera (//) y el módulo (%)?

Python tiene dos operadores especiales que son uña y carne: la división entera (//) y el módulo (%). Responden a dos preguntas distintas sobre la misma división.

Imagina que tienes 17 galletas y 5 amigos. 17 // 5 te dice que a cada amigo le tocan 3 galletas. 17 % 5 te dice que sobran 2 galletas.

¿Cómo funciona la división entera (//)?

La división entera (//) divide y redondea hacia abajo al número entero más cercano. Descarta por completo la parte decimal.

División entera con //
# Regular division vs integer division
print(17 / 5) # 3.4 - regular division (float)
print(17 // 5) # 3 - integer division (rounds down)
print(10 / 3) # 3.3333333333333335
print(10 // 3) # 3
print(7 / 2) # 3.5
print(7 // 2) # 3
# Works with negative numbers too (rounds toward negative infinity)
print(-17 // 5) # -4 (not -3!)
Salida
3.4
3
3.3333333333333335
3
3.5
3
-4

¿Cómo funciona el operador módulo (%)?

El operador módulo (%) te da el resto de una división. Es increíblemente útil y aparece más a menudo de lo que imaginas.

Operador módulo (%)
# Modulo gives the remainder
print(17 % 5) # 2 (17 = 5*3 + 2)
print(10 % 3) # 1 (10 = 3*3 + 1)
print(20 % 4) # 0 (20 = 4*5 + 0, divides evenly)
print(7 % 2) # 1 (7 = 2*3 + 1)
# The classic use: check if a number is even or odd
number = 42
if number % 2 == 0:
print(f"{number} is even")
else:
print(f"{number} is odd")
Salida
2
1
0
1
42 is even

El uso más común del módulo es comprobar si una división es exacta. Si x % y == 0, entonces x es divisible entre y. Así se comprueba si un número es par o impar, si un año es bisiesto y mucho más.


Cómo usar potencias en Python

Python usa ** para la potenciación (elevar un número a una potencia). La mayoría de los lenguajes usan una función para esto, pero en Python es un operador. Sencillo y limpio.

Potencias con **
# Exponentiation with **
print(2 ** 3) # 8 (2 cubed: 2 * 2 * 2)
print(5 ** 2) # 25 (5 squared: 5 * 5)
print(10 ** 6) # 1000000 (10 to the 6th power)
# Works with floats too
print(9 ** 0.5) # 3.0 (square root of 9!)
print(27 ** (1/3)) # 3.0 (cube root of 27)
Salida
8
25
1000000
3.0
3.0

Un truco útil: elevar un número a 0.5 te da su raíz cuadrada. Y ** (1/3) da la raíz cúbica. No necesitas una función especial para las raíces básicas.

Interés compuesto con potencias
# Practical example: compound interest
# Formula: A = P * (1 + r) ** t
principal = 1000 # Starting amount
rate = 0.05 # 5% annual interest
years = 10 # Time period
amount = principal * (1 + rate) ** years
print(f"${principal} at {rate*100}% for {years} years = ${round(amount, 2)}")
Salida
$1000 at 5.0% for 10 years = $1628.89

¿Cuál es el orden de las operaciones en Python?

Python sigue el mismo orden de las operaciones que aprendiste en la clase de matemáticas. Quizá lo conozcas como jerarquía de operaciones: paréntesis, potencias, multiplicación y división, suma y resta.

Orden de las operaciones
# Without parentheses - follows PEMDAS
print(2 + 3 * 4) # 14 (not 20!) - multiplication first
print(10 - 2 ** 3) # 2 - exponent first: 2**3=8, then 10-8=2
print(10 + 6 / 2) # 13.0 - division first: 6/2=3, then 10+3
# With parentheses - you control the order
print((2 + 3) * 4) # 20 - parentheses force addition first
print((10 - 2) ** 3) # 512 - parentheses first: 8**3=512
print((10 + 6) / 2) # 8.0 - parentheses first: 16/2=8
Salida
14
2
13.0
20
512
8.0

Esta es la lista completa de prioridades, de mayor a menor:

  • (): paréntesis (siempre primero)
  • **: potenciación
  • *, /, //, %: multiplicación, división, división entera, módulo
  • +, -: suma y resta
  • Confuso: depende de la precedencia de operadores
    result = base + rate * hours - discount / 2
    print(result)
    Claro: los paréntesis muestran la intención
    result = base + (rate * hours) - (discount / 2)
    print(result)

    ¿Qué funciones matemáticas integradas tiene Python?

    Python trae varias funciones integradas para tareas matemáticas comunes. No hace falta importar nada: están disponibles en todas partes.

    Cómo usar abs(), round(), min() y max()

    abs() y round()
    # abs() - absolute value (distance from zero)
    print(abs(-10)) # 10
    print(abs(10)) # 10
    print(abs(-3.7)) # 3.7
    # round() - round to nearest value
    print(round(3.7)) # 4
    print(round(3.2)) # 3
    print(round(3.14159, 2)) # 3.14 (round to 2 decimal places)
    print(round(1234, -2)) # 1200 (round to nearest hundred!)
    Salida
    10
    10
    3.7
    4
    3
    3.14
    1200
    min() y max()
    # min() - smallest value
    print(min(5, 3, 8, 1)) # 1
    print(min(-10, -20, -5)) # -20
    # max() - largest value
    print(max(5, 3, 8, 1)) # 8
    print(max(-10, -20, -5)) # -5
    # Practical: clamp a value between bounds
    score = 150
    clamped = min(max(score, 0), 100) # Keep between 0 and 100
    print(f"Score {score} clamped to {clamped}") # Score 150 clamped to 100
    Salida
    1
    -20
    8
    -5
    Score 150 clamped to 100

    Cómo convertir entre enteros y decimales

    A veces necesitas pasar de un tipo de número a otro. Usa int() para convertir un float en entero, y float() para convertir un entero en float.

    Convertir entre tipos de números
    # float → int (truncates, does NOT round)
    print(int(3.9)) # 3 - chops off the decimal
    print(int(3.1)) # 3
    print(int(-2.7)) # -2 - truncates toward zero
    # int → float
    print(float(42)) # 42.0
    print(float(-7)) # -7.0
    # string → numbers
    print(int("25")) # 25
    print(float("3.14")) # 3.14
    Salida
    3
    3
    -2
    42.0
    -7.0
    25
    3.14

    Python también hace conversiones automáticas en algunas situaciones. Cuando mezclas un entero y un float en una operación, Python convierte automáticamente el entero en float.

    Promoción automática de tipos
    # Mixing int and float - Python "promotes" to float
    result = 5 + 2.0
    print(result) # 7.0 (float, not int)
    print(type(result)) # <class 'float'>
    # This happens with all operators
    print(10 * 1.5) # 15.0
    print(7 - 0.5) # 6.5
    print(type(3 + 0.0)) # <class 'float'>
    Salida
    7.0
    <class 'float'>
    15.0
    6.5
    <class 'float'>

    ¿Cuáles son los errores más comunes con números en Python?

    Veamos los errores en los que suelen caer los principiantes de Python. Conocerlos de antemano te ahorrará horas de depuración.

    Error 1: esperar que / devuelva un entero

    Error: esperar un entero de /
    total_items = 10
    people = 2
    each = total_items / people
    print(f"Each gets {each} items")  # "Each gets 5.0 items"
    Solución: usa // para obtener un entero
    total_items = 10
    people = 2
    each = total_items // people
    print(f"Each gets {each} items")  # "Each gets 5 items"

    Error 2: confundir / y //

    La diferencia entre / y //
    # / gives the full decimal answer
    print(7 / 2) # 3.5
    # // rounds DOWN to a whole number
    print(7 // 2) # 3
    # They give very different results!
    print(15 / 4) # 3.75
    print(15 // 4) # 3
    Salida
    3.5
    3
    3.75
    3

    Error 3: olvidar los paréntesis en las fórmulas

    Error: resultado incorrecto sin paréntesis
    # Converting Fahrenheit to Celsius
    fahrenheit = 212
    celsius = fahrenheit - 32 * 5 / 9
    print(celsius)  # 194.22... WRONG!
    Solución: los paréntesis imponen el orden correcto
    # Converting Fahrenheit to Celsius
    fahrenheit = 212
    celsius = (fahrenheit - 32) * 5 / 9
    print(celsius)  # 100.0 CORRECT!

    Ejercicios de práctica

    ¡Es hora de poner a trabajar lo que sabes de números! Estos ejercicios usan situaciones reales para que veas cómo se aplican las matemáticas de Python a problemas cotidianos.

    Intenta cada uno por tu cuenta antes de mirar las pistas. Equivocarse es parte de aprender.

    Ejercicio 1: calcula el total de la compra
    Escribe el código

    Estás comprando en una tienda. Calcula el total y muéstralo.

  • 3 cuadernos a $4.50 cada uno
  • 2 bolígrafos a $1.25 cada uno
  • Imprime el total exactamente en este formato:

    Total: $16.0
    # Item prices and quantities
    notebook_price = 4.50
    notebook_qty = 3
    pen_price = 1.25
    pen_qty = 2
    # Calculate the total cost
    # Print the result
    Ejercicio 2: ¿par o impar?
    Escribe el código

    Usa el operador módulo (%) para comprobar si un número es par o impar.

    Tienes una variable number con el valor 37. Imprime el resultado exactamente en este formato:

    37 is odd

    Si el número fuera par (como 42), la salida sería:

    42 is even

    En inglés, "odd" significa impar y "even", par.

    number = 37
    # Use modulo to check if number is even or odd
    # Print: "{number} is even" or "{number} is odd"
    Ejercicio 3: arregla la división equivocada
    Corrige el error

    Este código debería repartir 10 pizzas a partes iguales entre 3 grupos e indicar cuántas sobran. ¡Pero usa los operadores de división equivocados!

    Corrige el código para que la salida sea:

    Each group gets 3 pizzas
    Leftover pizzas: 1
    total_pizzas = 10
    groups = 3
    # Bug: using the wrong division operators
    pizzas_each = total_pizzas / groups
    leftover = total_pizzas / groups
    print(f"Each group gets {pizzas_each} pizzas")
    print(f"Leftover pizzas: {leftover}")
    Ejercicio 4: conversor de Fahrenheit a Celsius
    Escribe el código

    Convierte una temperatura de grados Fahrenheit a Celsius con esta fórmula:

    **Celsius = (Fahrenheit - 32) * 5 / 9**

    Tienes una variable fahrenheit con el valor 72. Calcula el valor en Celsius, redondéalo a 1 decimal e imprime:

    72F = 22.2C
    fahrenheit = 72
    # Convert to Celsius using the formula
    # Round to 1 decimal place
    # Print the result
    Ejercicio 5: predice la salida
    Predice la salida

    Sin ejecutar el código, predice qué imprimirá cada línea. Escribe tus predicciones como comentarios y luego ejecuta el código para comprobarlas.

    print(10 // 3) # Your prediction:
    print(10 % 3) # Your prediction:
    print(2 ** 4) # Your prediction:
    print(15 // 4) # Your prediction:
    print(15 % 4) # Your prediction:
    print(type(10 / 2)) # Your prediction:
    Ejercicio 6: calculadora de interés compuesto
    Escribe el código

    Calcula el interés compuesto con esta fórmula:

    **A = P * (1 + r) t

    Donde:

  • P = capital (cantidad inicial) = $1000
  • r = tasa de interés anual = 0.05 (5%)
  • t = número de años = 10
  • A = cantidad final
  • Calcula la cantidad final y los intereses ganados, y luego imprime:

    Final amount: $1628.89
    Interest earned: $628.89

    Redondea los dos valores a 2 decimales.

    principal = 1000
    rate = 0.05
    years = 10
    # Calculate the final amount using the formula
    # Calculate interest earned (final - principal)
    # Print the results

    Resumen: números y matemáticas en Python

    Esta es una referencia rápida de todos los operadores y funciones de este tutorial:

    OperadorNombreEjemploResultado
    +Suma5 + 38
    -Resta5 - 32
    *Multiplicación5 * 315
    /División5 / 31.666...
    //División entera5 // 31
    %Módulo (resto)5 % 32
    **Potenciación5 ** 3125

    Funciones integradas:

    FunciónPara qué sirveEjemplo
    abs(x)Valor absolutoabs(-5) → 5
    round(x, n)Redondear a n decimalesround(3.14, 1) → 3.1
    min(a, b, ...)El valor más pequeñomin(3, 1, 4) → 1
    max(a, b, ...)El valor más grandemax(3, 1, 4) → 4
    int(x)Convertir a enteroint(3.9) → 3
    float(x)Convertir a floatfloat(5) → 5.0

    ¿Qué sigue?

    En el próximo tutorial, [Cadenas de texto en Python](/python/python-strings), aprenderás a trabajar con texto en Python. Descubrirás el rebanado (slicing), los métodos de las cadenas y cómo combinar cadenas y números en una salida fácil de leer.

    Tutoriales relacionados

    ¿Te sirvió este tutorial?

    Sugerir una mejora