PROGRAMACIÓN EN PYTHON – CLASE 05

(Creado por el analista de sistemas y docente Leonel Iván Saafigueroa)


CONDICIONALES

Operadores Lógicos. Estructuras: if, else, elif.


Decisiones

Los operadores relacionales, también conocidos como operadores de comparación, juegan un papel fundamental en Python al permitirte comparar valores de manera efectiva. El resultado de estas comparaciones es siempre un valor booleano, es decir, True (verdadero) o False (falso), dependiendo de si la condición evaluada se cumple o no. Esto es crucial, ya que estos operadores te permiten tomar decisiones informadas en tus programas, permitiéndote controlar el flujo de ejecución y tomar caminos diferentes según las condiciones específicas.


OperadorDescripción
==Igual a: compara si dos valores son iguales.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print(11 == 11)
print(5 == 15)
print(11 == 11) print(5 == 15)
print(11 == 11)
print(5 == 15)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
True
False
True False
True
False
OperadorDescripción
!=Diferente de: compara si dos valores no son iguales.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print(3 != 3)
print(4 != 13)
print(3 != 3) print(4 != 13)
print(3 != 3)
print(4 != 13)


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
False
True
False True
False
True
OperadorDescripción
<Menor que: verifica si el valor de la izquierda es menor que el de la derecha.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print(5 < 5)
print(8 < 12)
print(5 < 5) print(8 < 12)
print(5 < 5)
print(8 < 12)


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
False
True
False True
False
True
OperadorDescripción
>Mayor que: verifica si el valor de la izquierda es mayor que el de la
derecha.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print(18 > 15)
print(55 > 55)
print(18 > 15) print(55 > 55)
print(18 > 15)
print(55 > 55)



Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
True
False
True False
True
False
OperadorDescripción
<=Menor o igual que: verifica si el valor de la izquierda es menor o
igual al de la derecha.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print(9 <= 4) # False
print(7 <= 7) # True
print(9 <= 4) # False print(7 <= 7) # True
print(9 <= 4) # False
print(7 <= 7) # True




Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
False
True
False True
False
True
OperadorDescripción
>=Mayor o igual que: verifica si el valor de la izquierda es mayor o
igual al de la derecha.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print(7 >= 7) # True
print(3 >= 6) # False
print(7 >= 7) # True print(3 >= 6) # False
print(7 >= 7) # True
print(3 >= 6) # False





Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
True
False
True False
True
False


En Python, las comparaciones de cadenas de texto se realizan de manera secuencial, es decir, caracter por caracter, siguiendo el orden establecido por su codificación, ya sea ASCII o Unicode. Esto implica que el lenguaje recorre cada cadena de izquierda a derecha, deteniéndose en el primer punto donde encuentra una discrepancia o cuando una de las cadenas se agota.

Es importante destacar que Python distingue entre mayúsculas y minúsculas, y también considera la longitud de las cadenas. Esto resulta muy útil cuando se necesitan comparar nombres, palabras o cualquier tipo de texto en tus programas.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print("apple" < "banana") # True
print("apple" > "Apple") # True
print("apple" < "apples") # True
print("python" == "python") # True
print("Python" != "python") # True
print("A" < "a") # True
print("z" > "Z") # True
print("apple" < "banana") # True print("apple" > "Apple") # True print("apple" < "apples") # True print("python" == "python") # True print("Python" != "python") # True print("A" < "a") # True print("z" > "Z") # True
print("apple" < "banana")    # True
print("apple" > "Apple")     # True
print("apple" < "apples")    # True

print("python" == "python")  # True
print("Python" != "python")  # True

print("A" < "a")             # True
print("z" > "Z")             # True
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
True
True
True
True
True
True
True
True True True True True True True
True
True
True
True
True
True
True


En Python, los operadores lógicos permiten tomar decisiones en función de múltiples condiciones. Los operadores lógicos utilizados en Python son: and, or y not. Estos operadores permiten combinar condiciones booleanas para evaluar expresiones más complejas y tomar decisiones basadas en ellas en tus programas.

OperadorDescripción
andDevuelve True si ambos operandos son True.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
a and b
a and b
a and b
OperadorDescripción
orDevuelve True si alguno de los operandos es True.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
a or b
a or b
a or b
OperadorDescripción
notDevuelve True si el operando es False, y viceversa.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
not a
not a
not a

En Python, a y b son expresiones lógicas que pueden evaluarse como verdaderas o falsas. Es importante destacar que cuando a y/o b son valores numéricos, se consideran como True si son diferentes de cero, y como False si son iguales a cero. Esto permite utilizar valores numéricos en operaciones lógicas de manera efectiva en tus programas.



Las estructuras de control en Python son fundamentales, ya que permiten que tus programas trasciendan la ejecución lineal de instrucciones y se adapten a diferentes escenarios. Gracias a ellas, podés diseñar programas que tomen decisiones basadas en condiciones específicas, ejecuten bloques de código selectivamente o repitan acciones múltiples veces. Esto es lo que otorga dinamismo y capacidad de respuesta a tus programas, haciéndolos más interactivos y flexibles.


Las estructuras condicionales en Python tienen como propósito ejecutar un conjunto de instrucciones o un bloque de código alternativo en función de una condición que puede ser cierta o falsa. La palabra clave para implementar estas estructuras es if, la cual permite evaluar una condición y, según su resultado, ejecutar un bloque de código específico.


Si la condición es True, se ejecuta el bloque de código contenido dentro del if. Posteriormente, el programa continúa su ejecución de manera independiente del valor de verdad de la condición, es decir, sin importar si la condición era verdadera o falsa, el programa seguirá adelante con las instrucciones siguientes.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
nota = float(input("Nota: "))
if nota >= 7:
print("Aprobado.")
nota = float(input("Nota: ")) if nota >= 7: print("Aprobado.")
nota = float(input("Nota: "))

if nota >= 7:
  print("Aprobado.")

Esa pequeña sangría (espacio en blanco) al comienzo de la línea no es solo una cuestión de estilo, sino que tiene un propósito específico: indica a Python que las líneas de código subsecuentes forman parte del bloque de código asociado al if.

En este caso, estamos verificando si alguien tiene 18 años o más. Si la condición es True, Python va a imprimir “Sos mayor de edad“. Si no, simplemente va a seguir con el resto del programa, sin hacer nada especial con esa línea.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
edad = 18
if edad >= 18:
print("Sos mayor de edad.")
edad = 18 if edad >= 18: print("Sos mayor de edad.")
edad = 18

if edad >= 18:
  print("Sos mayor de edad.")

Ya exploramos cómo la estructura if permite a tu programa tomar decisiones cuando una condición es verdadera. Sin embargo, surge una pregunta natural:

¿Qué sucede cuando esa condición no se cumple?


Es en este punto donde entra en escena else. Mientras que if se encarga de ejecutar un bloque de código únicamente cuando algo es True, else toma el relevo cuando esa condición resulta ser False, permitiendo que el programa ejecute un bloque de código alternativo en ese caso.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if edad >= 18:
# Bloque de instrucciones que se
# ejecuta si la condición es verdadera
print("Puedes pasar.")
else:
# Bloque de instrucciones que se
# ejecuta si la condición es falsa
print("No admitido.")
if edad >= 18: # Bloque de instrucciones que se # ejecuta si la condición es verdadera print("Puedes pasar.") else: # Bloque de instrucciones que se # ejecuta si la condición es falsa print("No admitido.")
if edad >= 18:
  # Bloque de instrucciones que se
  # ejecuta si la condición es verdadera
  print("Puedes pasar.")
else:
  # Bloque de instrucciones que se
  # ejecuta si la condición es falsa
  print("No admitido.")

En este ejemplo, preguntamos si edad es mayor o igual que 18. Si es verdad, mostramos “Puedes pasar.” y el programa continúa sin ejecutar el bloque del else. Si es falso, mostramos “No admitido.” y obviamos el bloque del if.

En este otro ejemplo, se solicita al usuario que ingrese su edad y si tiene licencia de conducir (con una respuesta de “S” para sí y cualquier otra letra para no). Luego, se utiliza una condición if para verificar si la persona tiene al menos 18 años y si tiene licencia de conducir. Si ambas condiciones se cumplen, se imprime el mensaje “Podés conducir“. De lo contrario, se imprime “No podés conducir“. La estructura else proporciona un camino alternativo para cuando la condición no se cumple.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
edad = int(input("Ingresá tu edad: "))
tiene_licencia = input("¿Tenés licencia de conducir? (S/N): ")
# Verificamos si la persona puede conducir
if edad >= 18 and tiene_licencia == "S":
print("Podés conducir.")
else:
print("No podés conducir.")
edad = int(input("Ingresá tu edad: ")) tiene_licencia = input("¿Tenés licencia de conducir? (S/N): ") # Verificamos si la persona puede conducir if edad >= 18 and tiene_licencia == "S": print("Podés conducir.") else: print("No podés conducir.")
edad = int(input("Ingresá tu edad: "))
tiene_licencia = input("¿Tenés licencia de conducir? (S/N): ")

# Verificamos si la persona puede conducir
if edad >= 18 and tiene_licencia == "S":
   print("Podés conducir.")
else:
   print("No podés conducir.")

Hasta ahora, exploramos cómo if y else te permiten tomar decisiones en tu programa, pero surge una pregunta natural: ¿qué sucede cuando necesitás evaluar múltiples condiciones simultáneamente? Es en este punto donde entran en escena las estructuras condicionales anidadas, que te permiten evaluar varias condiciones de manera jerárquica, creando una cadena de decisiones que se ejecutan de manera secuencial.


Este concepto puede parecer inicialmente complejo, pero en realidad es bastante lógico: se trata de incrustar una condición dentro de otra. Esto te permite gestionar situaciones en las que la decisión que vas a tomar depende de una serie de condiciones que deben evaluarse en un orden específico, permitiéndote tomar decisiones más precisas y matizadas en función de múltiples criterios.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if variable condición valor:
print("")
if variable condición valor:
print("")
else:
if variable condición valor:
print("")
else:
print("")
else:
print("")
if variable condición valor: print("") if variable condición valor: print("") else: if variable condición valor: print("") else: print("") else: print("")
if variable condición valor:
   print("")
   if variable condición valor:
       print("")
   else:
       if variable condición valor:
           print("")
       else:
           print("")
else:
   print("")

Veamos un ejemplo práctico: creamos un programa que evalúa una calificación y decide qué mensaje imprimir en función del resultado. Primero, verificamos si la persona alcanzó la calificación mínima para aprobar. Si es así, luego evaluamos en qué rango de calificaciones se encuentra para proporcionar un feedback más detallado y específico, permitiéndonos ofrecer una retroalimentación más precisa y útil.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
nota = 87
if nota >= 60:
print("¡Aprobaste!")
if nota >= 90:
print("¡Excelente calificación!")
else:
if nota >= 75:
print("Muy buen trabajo.")
else:
print("Buen esfuerzo, pero hay margen de mejora.")
else:
print("No alcanzaste la calificación mínima para aprobar.")
nota = 87 if nota >= 60: print("¡Aprobaste!") if nota >= 90: print("¡Excelente calificación!") else: if nota >= 75: print("Muy buen trabajo.") else: print("Buen esfuerzo, pero hay margen de mejora.") else: print("No alcanzaste la calificación mínima para aprobar.")
nota = 87

if nota >= 60:
   print("¡Aprobaste!")
   if nota >= 90:
       print("¡Excelente calificación!")
   else:
       if nota >= 75:
           print("Muy buen trabajo.")
       else:
           print("Buen esfuerzo, pero hay margen de mejora.")
else:
   print("No alcanzaste la calificación mínima para aprobar.")

Este script es una versión mejorada del anterior, utilizando elif para lograr el mismo resultado de manera más organizada y fácil de entender. Pero, ¿qué es exactamente lo que hace elif? En esencia, elif es una forma de agregar más condiciones a una estructura if sin necesidad de anidar bloques de código uno dentro del otro, permitiendo evaluar múltiples condiciones de manera secuencial y elegante, sin la necesidad de estructuras anidadas.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
nota = 87
if nota >= 60:
print("¡Aprobaste!")
if nota >= 90:
print("¡Excelente calificación!")
elif nota >= 75:
print("Muy buen trabajo.")
else:
print("Buen esfuerzo, pero hay margen de mejora.")
else:
print("No alcanzaste la calificación mínima para aprobar.")
nota = 87 if nota >= 60: print("¡Aprobaste!") if nota >= 90: print("¡Excelente calificación!") elif nota >= 75: print("Muy buen trabajo.") else: print("Buen esfuerzo, pero hay margen de mejora.") else: print("No alcanzaste la calificación mínima para aprobar.")
nota = 87

if nota >= 60:
   print("¡Aprobaste!")
   if nota >= 90:
       print("¡Excelente calificación!")
   elif nota >= 75:
       print("Muy buen trabajo.")
   else:
       print("Buen esfuerzo, pero hay margen de mejora.")
else:
   print("No alcanzaste la calificación mínima para aprobar.")

TAREA PARA EL HOGAR

Imagina que estás colaborando con una tienda de videojuegos para gestionar su inventario.

El propietario te solicita que crees un programa que verifique si hay suficiente stock de un videojuego en particular y, si no es así, que emita una alerta para reponerlo. El programa debe solicitar al usuario que ingrese la cantidad actual en stock y, en función de ese valor, indicar si es necesario realizar un nuevo pedido o no.