== y !=
== pregunta si son iguales; != si son
distintos.
⚠️ Dos iguales, no uno. Un solo = asigna,
no compara.
Hasta ahora tus programas hacían siempre lo mismo. Con if
el programa compara y decide qué hacer según el resultado. Es lo
que convierte un cálculo en una regla de negocio.
compra = 150000
if compra > 100000:
print("Aplica envio gratis")
print("Gracias por su compra")Aplica envio gratis Gracias por su compra
Los espacios del principio NO son decoración: son la
sintaxis. En Python, lo que está indentado (corrido a la derecha)
pertenece al if; lo que vuelve al margen se ejecuta siempre. Otros
lenguajes usan llaves { }; Python usa la sangría, y si te equivocas
responde IndentationError.
Se usan 4 espacios por nivel. El editor lo hace solo al pulsar Tab tras los dos puntos.
compra = 50000
# Version A: el mensaje esta DENTRO del if
if compra > 100000:
print("Envio gratis")
print("Le llega en 24 horas")
# Version B: el segundo mensaje esta FUERA
if compra > 100000:
print("Envio gratis")
print("Le llega en 24 horas")Le llega en 24 horas
Con una compra de 50.000 la condición es falsa. En la versión A no se
imprime nada; en la B se imprime "Le llega en 24 horas" igual, porque esa línea
quedó fuera del if. Un espacio de diferencia y el programa
miente al cliente.
== pregunta si son iguales; != si son
distintos.
⚠️ Dos iguales, no uno. Un solo = asigna,
no compara.
Mayor, menor, mayor o igual, menor o igual. Igual que en matemáticas.
if edad >= 18:
Combinan condiciones. and exige que se cumplan
todas; or, que se cumpla al menos una.
if compra > 100000 and cliente_activo:
Pregunta si algo está contenido dentro de otra cosa.
if "@" in correo:
Cuando hay más de dos posibilidades se encadenan con elif
(abreviatura de "else if"). Python las evalúa en orden y se queda con la
primera que se cumpla: las demás ni las mira.
compra = float(input("Valor de la compra: "))
if compra >= 1000000:
descuento = 0.15
elif compra >= 500000:
descuento = 0.10
elif compra >= 100000:
descuento = 0.05
else:
descuento = 0
valor_descuento = compra * descuento
total = compra - valor_descuento
print("Descuento aplicado:", descuento * 100, "%")
print("Total a pagar:", total)Valor de la compra: 650000 Descuento aplicado: 10.0 % Total a pagar: 585000.0
El orden importa, y al revés no funciona. Si pusieras
compra >= 100000 de primero, una compra de un millón entraría por ahí
y se llevaría solo el 5%: nunca llegaría a la línea del 15%. Las
condiciones se ordenan de la más exigente a la menos exigente.
"Si la compra pasa de un millón, 15%; si pasa de quinientos mil, 10%; si no, nada." Traducir una frase clara es fácil; traducir una idea confusa produce código confuso.
Es el error más común y no da ningún mensaje: el programa funciona, solo que mal. Y en un descuento, "mal" significa dinero.
Cubre el caso que no pensaste. Sin él, si ninguna condición se
cumple, descuento nunca se crea y la línea siguiente falla
con NameError.
Con 650.000 cualquier versión funciona. Prueba exactamente
100.000, 500.000 y
999.999: ahí es donde aparecen los errores de
> contra >=.
Piensa la respuesta y haz clic para comprobarla.
Los que quieras. Pero si pasas de cinco o seis, normalmente hay una forma mejor de resolverlo -con un diccionario, que verás en la lección 7- y el código queda mucho más corto.
Sí, se llama anidar y se hace añadiendo otro nivel de sangría.
Úsalo poco: tres niveles ya son difíciles de seguir. Casi siempre se puede
aplanar combinando condiciones con and.
Además de True: cualquier número distinto de cero y
cualquier texto o lista que no esté vacío. Por eso if nombre:
se lee como "si nombre tiene algo escrito".
Con los descuentos del ejemplo, ¿qué pasa si pones compra >= 100000 como primera condición?
¿Qué significa la sangría en Python?
¿Cuál es la comparación correcta?
Tu programa ya decide, pero atiende una compra. En la siguiente lección vas a procesar cientos de registros con las mismas líneas: los ciclos.
Siguiente: Ciclos: repetir sin copiar y pegar
Continuar ← Operadores y entrada del usuario