Lección 7 de 48 · Decisiones y bucles

Combina condiciones con and, or y not

Combinar preguntas booleanas para expresar una regla completa.

Ruta esencialAvanza a tu ritmo
Índice · Lección 7/48
Al terminar podrás…

combinar preguntas booleanas para expresar una regla completa.

Entiende la idea

A veces una sola pregunta no describe la regla. Para entrar en una actividad puedes necesitar tener una entrada y llegar a tiempo. Cada condición produce True o False; los operadores lógicos combinan esas respuestas.

and pide que se cumplan las dos condiciones. or permite que se cumpla una o ambas. not invierte una respuesta: not True es False. En esta lección las condiciones son booleanos para poder seguir la regla sin añadir otros casos.

Traduce primero la regla en voz alta. «Entrada y puntualidad» pide and; «entrada o invitación» pide or. Si además hay una prohibición, expresa que no esté activa mediante not.

Los paréntesis hacen que una parte se lea como una sola pregunta. En (tiene_entrada or tiene_invitacion) and not esta_bloqueado, primero preguntas si existe alguna forma de acceso; después exiges que no haya bloqueo. Ese requisito se aplica tanto a la entrada como a la invitación.

Sigue una regla compuesta

Programa completo
tiene_entrada = False
tiene_invitacion = True
esta_bloqueado = False

puede_entrar = (tiene_entrada or tiene_invitacion) and not esta_bloqueado
print(puede_entrar)
Salida del programa
True

Primero pregunta por entrada o invitación: False or True produce True. Después not False produce True porque no está bloqueado. Finalmente True and True permite entrar.

Si esta_bloqueado cambiara a True, not esta_bloqueado sería False y la regla completa daría False aunque tenga invitación. Esa condición se aplica a las dos alternativas gracias a los paréntesis.

No leas or como «solo una». Con entrada e invitación verdaderas también permite entrar. La pregunta es si hay al menos una forma de acceso.

Practica con ayuda

Construye ahora la regla para descansar. Decide qué dos situaciones ofrecen una alternativa y qué requisito deben compartir. Conserva los tres datos iniciales: las pruebas explorarán otras combinaciones.

Construye la regla de descanso

Completa la expresión de puede_descansar. Se puede descansar si es fin de semana o hay vacaciones, pero no cuando queda una tarea pendiente. Conserva las tres declaraciones iniciales: el corrector cambiará sus valores para probar la misma regla con otros casos.

Salida esperada
True
Qué se comprueba
  • fin de semana no, vacaciones no, tarea sin pendiente
  • fin de semana no, vacaciones no, tarea pendiente
  • fin de semana no, vacaciones sí, tarea sin pendiente
  • fin de semana no, vacaciones sí, tarea pendiente
  • fin de semana sí, vacaciones no, tarea sin pendiente
  • fin de semana sí, vacaciones no, tarea pendiente
  • fin de semana sí, vacaciones sí, tarea sin pendiente
  • fin de semana sí, vacaciones sí, tarea pendiente

Al ejecutar verás los casos que necesitan revisión. No hay requisitos adicionales fuera del enunciado.

condiciones_logicas.py

Usa 4 espacios de sangría al empezar una línea dentro de un bloque. Ctrl + Intro (⌘ + Intro en Mac) ejecuta. Tab pasa al siguiente control. Tu borrador se guarda en este navegador; Restablecer recupera el código inicial.

La salida aparecerá aquí.

    Pista 1 · dónde mirar

    Agrupa primero las dos formas de tener tiempo libre: fin de semana o vacaciones.

    Pista 2 · qué idea usar

    Después exige que tarea_pendiente sea falsa; para invertirla usa not.

    Pista 3 · un paso posible

    Un paso de la solución: puede_descansar = (es_fin_de_semana or tiene_vacaciones) and not tarea_pendiente. Usa la explicación para colocarlo donde corresponde.

    Ver una solución razonada

    Los paréntesis agrupan las dos formas de tener tiempo libre. or permite cualquiera de ellas. not tarea_pendiente es verdadero solo cuando no queda tarea, y and exige que también se cumpla esa segunda parte.

    es_fin_de_semana = False
    tiene_vacaciones = True
    tarea_pendiente = False
    
    puede_descansar = (es_fin_de_semana or tiene_vacaciones) and not tarea_pendiente
    print(puede_descansar)

    Inténtalo tú

    Una persona tiene entrada e invitación, y no está bloqueada. ¿La regla del ejemplo devuelve True o False?

    Comprobar y entender el porqué

    True. or admite que ambas condiciones sean verdaderas. La ausencia de bloqueo cumple el requisito común. Después cambia solo el bloqueo y predice qué sucede.

    Qué debes recordar

    • and exige ambas condiciones.
    • or admite una o ambas.
    • not invierte una respuesta booleana.
    • Los paréntesis muestran qué preguntas van juntas.