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
tiene_entrada = False tiene_invitacion = True esta_bloqueado = False puede_entrar = (tiene_entrada or tiene_invitacion) and not esta_bloqueado print(puede_entrar)
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.
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.
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.