Python básico

Operadores y entrada del usuario

Lección 4 de 8 · 14 min

Hacer cuentas

Ya sabes guardar datos. Ahora vas a operarlos. Los símbolos son casi los mismos de una calculadora, con dos que quizá no conozcas.

Los operadores aritméticos
print(10 + 3)   # suma
print(10 - 3)   # resta
print(10 * 3)   # multiplicacion
print(10 / 3)   # division (siempre da decimal)
print(10 // 3)  # division entera: descarta los decimales
print(10 % 3)   # residuo: lo que sobra de la division
print(10 ** 3)  # potencia: 10 elevado a 3
Resultado
13
7
30
3.3333333333333335
3
1
1000

Fíjate en 10 / 3: da 3.3333... aunque los dos números sean enteros. La división siempre devuelve decimal, y por eso 10 / 2 da 5.0 y no 5.

Los dos que sí sorprenden

// división entera

Se queda con la parte entera y tira los decimales. Sirve para "¿cuántas cajas completas de 12 unidades salen de 100?"

100 // 128

% residuo (módulo)

Devuelve lo que sobra. Continuando el ejemplo: "¿y cuántas unidades quedan sueltas?"

100 % 124

También es la forma de saber si un número es par: n % 2 == 0.

Pedirle datos a quien usa el programa

Hasta ahora los valores estaban escritos dentro del código. Con input() el programa pregunta y espera a que alguien escriba y pulse Enter.

Primer intento... que falla
precio = input("Escribe el precio: ")
print("El doble es:")
print(precio * 2)
Resultado
Escribe el precio: 5000
El doble es:
50005000

Ahí está la trampa que confunde a todo el mundo: input() SIEMPRE devuelve texto, aunque escribas números. Y multiplicar un texto por 2 lo repite dos veces, en vez de duplicar su valor. Por eso salió 50005000 y no 10000.

La solución: convertir el tipo

Hay que decirle a Python que ese texto es un número, envolviéndolo en int() si es entero o float() si lleva decimales.

Ahora sí
precio = float(input("Escribe el precio: "))
print("El doble es:")
print(precio * 2)
Resultado
Escribe el precio: 5000
El doble es:
10000.0

¿Qué imprime cada línea?

Piensa el resultado y haz clic para comprobarlo.

Tu primer programa útil: calculadora de IVA

Junta todo lo que llevas. Este programa pide un precio sin IVA y devuelve el total, con el IVA colombiano del 19%.

iva.py
# Calculadora de IVA - Colombia
IVA = 0.19

producto = input("Producto: ")
base = float(input("Precio sin IVA: "))

valor_iva = base * IVA
total = base + valor_iva

print("-" * 40)
print("Producto:  ", producto)
print("Base:      ", base)
print("IVA (19%): ", valor_iva)
print("TOTAL:     ", total)
Resultado
Producto: Teclado
Precio sin IVA: 189000
----------------------------------------
Producto:   Teclado
Base:       189000.0
IVA (19%):  35910.0
TOTAL:      224910.0

IVA va en mayúsculas por convención: así se marcan los valores que no cambian durante el programa. Python no lo impide si lo modificas, pero quien lea el código entiende la intención - y si mañana el IVA cambia, se toca una sola línea en vez de buscar 0.19 por todo el archivo.

Preguntas que siempre salen

¿Cómo muestro solo dos decimales?

Con round(): round(total, 2). También existen las f-strings, que permiten dar formato dentro del texto: print(f"Total: {total:,.2f}").

¿Y si el usuario escribe letras en vez de un número?

El programa se cae con ValueError: could not convert string to float. Controlar eso se hace con try / except, que es tema del curso intermedio. Por ahora, asume que escriben lo que se les pide.

¿Por qué usar float y no int para el precio?

Porque un precio puede llevar decimales. Con int(), escribir 1500.50 haría que el programa fallara.

Compruébalo tú mismo

Si escribes 20, ¿qué imprime print(input("n: ") * 2)?

¿Cuánto vale 17 % 5?

¿Por qué IVA se escribe en mayúsculas?

Lo que sigue

Tu calculadora hace siempre lo mismo. En la siguiente lección vas a hacer que el programa decida: aplicar un descuento solo si la compra pasa cierto monto, marcar un cliente en mora, avisar cuando el inventario esté bajo.

Siguiente: Condicionales: que el programa decida

Continuar ← Variables y tipos de datos