sábado, 20 de marzo de 2021

Condicionales en Python



Los condicionales son sentencias de código que solo se ejecutarán si se cumple la condición establecida (operadores lógicos).

Por ejemplo, si tenemos un número almacenado en la variable x, podemos hacer el siguiente condicional:

1 x = 30

2 if  x < 20:

3     print(f"{x} es menor que 20")

4 elif x < 25:

    print(f'{x} es mayor que 20 pero menor que 25')

6 else:

    print(f"{x} es mayor que 25")


En este ejemplo el valor almacenado en la variable x es 30. El programa lee la instrucción de la línea 2 if (si) que se podría traducir como si x es menor que 20 entonces ejecuta el código que está indentado en la linea 3. Como esto no es verdad, no se ejecuta el código y se pasa a la siguiente línea, a la instrucción elif.

La palabra clave elif (de lo contrario Si) es la forma que tiene Python de decir "Si las condiciones anteriores no son verdaderas entonces prueba esta condición". En el ejemplo como x no es menor que 25 la condición es falsa, no se ejecuta el código identado y se pasa a la siguiente instrucción.

La instrucción final es else (de lo contrario), que captura cualquier cosa que no sea detectada por las condiciones anteriores, es decir que si todo lo anterior no se cumple (else = Si no) se ejecute el código identado en la línea 7.


Cuando utilizamos un condicional sin más (if Expresión:) sin poner ninguna condición, lo que se quiere decir en realidad es que si algo es True se ejecute el código de la condición. Por ejemplo:

>>> x = 30
>>> if x:
>>>     print("x es True")
True        

La expresión de la sentencia if se evalúa a False cuando en la expresión a evaluar se dan alguna de las siguientes circunstancias:

- Cualquier número igual a cero.

- Cualquier contenedor que este vacío. (lista, tupla, conjunto, diccionario)

- La expresión False o None.


Otros operadores que podemos usar son:


Operadores de identidad en Python.

Se usan para comparar los objetos, no si son iguales,  sino si en realidad son el mismo objeto, con la misma ubicación en memoria.

Operador is:

Significa una prueba de identidad, ambos lados de la expresión condicional deben ser el mismo objeto.

a = 1
b = 1
if a is b:
  print("a es idéntico que b")

SALIDA:
a es idéntico que b 

Operador is not:

Devuelve True si ambas variables no son el mismo objeto.

x = ["manzana", "plátano"]
y = ["manzana", "plátano"]
z = x

print(x is not z)

# devuelve False porque z es el mismo objeto que x

print(x is not y)

# devuelve True porque x no es el mismo objeto que y, aunque ambas tengan el mismo contenido.

print(x != y)

# para que veas la diferencia entre "is not" and "!=": Esta comparación devuelve False 
# porque x tiene el mismo contenido que y


Operadores de pertenencia en Python:

Operador in:

El operador in, significa, que para cualquier colección (lista, tupla etc) el elemento del lado izquierdo está en el lado derecho del operador.

b = [1,2,3]
if 2 in b:
   print("2 esta en la lista b")

SALIDA:
2 esta en la lista b

Operador not in:

Es el contrario del anterior, y devuelve True cuando el elemento no esta en una secuencia de datos.

b = [1,2,3]
if 5 not in b:
  print("5 no esta en la lista b")
else: 
  print("5 está en la lista b")

SALIDA:
5 no esta en la lista b


El operador not (lo contrario) devuelve True si las declaraciones no son verdaderas y False si lo son.

x = 5

print(not(x > 3 and x < 10))

SALIDA:
False
# devuelve False porque not se utiliza para dar la vuelta al resultado.


También se pueden unir varias condiciones usando los operadores lógicos:


and  (Traducido como "y")

a = 200
b = 33
c = 500
if a > b and c > a:
  print("Todas las condiciones son verdaderas")

Salida:
Todas las condiciones son verdaderas


Or (Traducido como "o")

a = 200
b = 33
c = 500
if a > b or a > c:
  print("Al menos una de las condiciones es verdadera")

Salida:
Al menos una de las condiciones es verdadera


Podemos asignar un valor a una variable de forma abreviada usando una condición es lo que se conoce como Ternary Operator u Operador Ternario ( de 3 elementos: variable, valor True y valor False). Si la condición es cierta se le asignará un valor a la variable y si es Falsa otro distinto. 

a = 7
b = 5 if a > 6 else 2
print(b)

Salida:
5
# La variable valdría 2 si la variable a no fuera mayor que 6


Los operadores de comparación que se pueden utilizar tanto en condicionales como en bucles son:

Igual: a==b
No igual: a!=b
Menor que: a < b
Menor que o igual que: a <= b
Más grande que: a > b
Más grande o igual que: a >= b


Puedes encontrar más información sobre operadores de Python en esta página de w3schools.


Uso de la declaración Switch de otros lenguajes en Python.


Hasta la versión 3.10, Python nunca tuvo una función que implementara lo que hace la instrucción switch en otros lenguajes de programación.

Entonces, si querías ejecutar varias declaraciones condicionales, tendrías que usar la palabra clave elif de esta manera:

edad = 120

if edad > 90:
    print("Ya tienes una edad considerable.")
elif edad < 0:
    print("Aun no has ni nacido")
elif edad >= 18:
    print("¿Ya puedes ir de fiesta?")
else: 
    print("Aun te queda mucho por delante.")

# Salida: Ya tienes una edad considerable.

Desde la versión 3.10 en adelante, Python ha implementado esta característica con las palabras clave "match" y "case

Para escribir declaraciones de este tipo se puede seguir la siguiente estructura:

match término:
    case patrón-1:
         acción-1
    case patrón-2:
         acción-2
    case patron-3:
         acción-3
    case _:
        acción_por_defecto

Ten en cuenta que el símbolo de subrayado es lo que se usa para definir un caso por defecto en Python.

A continuación vamos a ver un ejemplo con esta nueva funcionalidad.

vocal = input("Introduzca una vocal: ")

match vocal:
    case 'a':
        print("la vocal es la a")
    case 'e':
        print("la vocal es la e")
    case 'i':
        print("la vocal es la i")
    case 'o':
        print("la vocal es la o")
    case _:
        print("la vocal es la u u otra cosa")



No hay comentarios:

Publicar un comentario