SIN · Sintaxis 3 · Operadores y expresiones

14.Operadores lógicos

Y, O y NO: los operadores que combinan condiciones para tomar decisiones más completas.

¿Qué es?

Los operadores lógicos combinan condiciones. Con ellos se pueden hacer preguntas compuestas: «¿tiene 18 años y credencial?», «¿es sábado o domingo?», «¿no ha pagado?».

Operador PSeInt Python Es verdadero cuando…
Y Y and Las dos condiciones son verdaderas
O O or Al menos una es verdadera
NO NO not La condición es falsa (la invierte)

Tablas de verdad

A B A and B A or B
V V V V
V F F V
F V F V
F F F F
A not A
V F
F V

Sintaxis (pseudocódigo / Python)

¿Puede entrar al concierto? Debe tener 18 años o más y boleto.

PSeInt

Algoritmo Concierto
	Definir edad Como Entero
	Definir respuesta Como Caracter
	Definir tieneBoleto Como Logico
	Escribir "Edad:"
	Leer edad
	Escribir "¿Tiene boleto? (s/n)"
	Leer respuesta
	tieneBoleto <- respuesta = "s"
	Si edad >= 18 Y tieneBoleto Entonces
		Escribir "Puede entrar"
	SiNo
		Escribir "No puede entrar"
	FinSi
FinAlgoritmo

Python

edad = int(input("Edad: "))
tiene_boleto = input("¿Tiene boleto? (s/n): ") == "s"
if edad >= 18 and tiene_boleto:
    print("Puede entrar")
else:
    print("No puede entrar")

Más ejemplos

dia = "sábado"
es_fin_de_semana = dia == "sábado" or dia == "domingo"
print(es_fin_de_semana)   # True

pagado = False
if not pagado:
    print("Tiene un adeudo")

Ejemplo guiado

Problema: un alumno tiene derecho a beca si su promedio es de 9 o más y no tiene materias reprobadas, o si su promedio es de 8 o más y su ingreso familiar es bajo.

1. Traducir las condiciones

  • Condición A: promedio >= 9 and reprobadas == 0
  • Condición B: promedio >= 8 and ingreso_bajo
  • Beca si: A or B

2. Código

promedio = float(input("Promedio: "))
reprobadas = int(input("Materias reprobadas: "))
ingreso_bajo = input("¿Ingreso familiar bajo? (s/n): ") == "s"

condicion_a = promedio >= 9 and reprobadas == 0
condicion_b = promedio >= 8 and ingreso_bajo

if condicion_a or condicion_b:
    print("Tiene derecho a beca")
else:
    print("No tiene derecho a beca")

Salida esperada (con 8.5, 0, s): Tiene derecho a beca (cumple B).

Errores comunes

# ✗ Error lógico: siempre es verdadero
dia = "lunes"
if dia == "sábado" or "domingo":
    print("Fin de semana")   # se imprime aunque sea lunes

Buenas prácticas

  • Divide condiciones largas en variables con nombre (condicion_a, es_valida).
  • Usa paréntesis para dejar claro el orden: (a and b) or c.
  • Aprovecha el cortocircuito: en x != 0 and 10 / x > 2, si x es 0 ya no se evalúa la división.
  • Prefiere in para varias opciones: color in ("rojo", "azul").

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

© solutions_ · Fundamentos de programación · 14 Operadores lógicos