Bloque: if condición

flor

Es muy habitual que durante el desarrollo de un programa tengamos que
comprobar que se cumple una determinada condición, para que, si se cumple, se ejecuten una o varias instrucciones.

numero=False
while not numero:
    try:
        edad = int(input("¿Cuántos años tienes? "))
        numero=True
    except ValueError:
        print("Tiene que indicar un número entero.")
    if edad<18:
        print("Lo siento, todavía no puedes votar.")
        print(f"Solo tienes {edad} años.")
    if edad>=18:
        print("Puedes coger una papeleta y votar.")
        print(f"Tienes {edad} años.")
print("El programa ha finalizado.")

En este programa se ejecuta el bloque del primer if o el segundo, dependiendo de la edad.

Posible resultado:

¿Cuántos años tienes? 34
Puedes coger una papeleta y votar.
Tienes 34 años.
El programa ha finalizado.

Operadores de comparación. Disponemos de varios operadores de comparación:

* if a == b : (nos comprueba si a es igual a b)
recordar que son dos signos = seguidos

* if a > b : (comprueba si a es mayor que b)
* if a < b: (si a es menor que b)
* if a <= b: (si a es menor o igual que b)
* if a >=b: (si a es mayor o igual que b)
* if a != b: (si a no es igual a b)

A cualquiera de estos operadores, le podemos añadir una negación “not” que hace que el sentido de la comparación sea justo el contrario.

milista=[1, 5, 12, 7, 14, 23, 8]
veces=0
for numero in milista:
    if not numero<11:
        print(f"El número {numero} es mayor que 10")
        veces+=1
print(f"Hemos encontrado {veces} números mayores que 10")
Resultado:

El número 12 es mayor que 10
El número 14 es mayor que 10
El número 23 es mayor que 10
Hemos encontrado 3 números mayores que 10

La comparación de if sería: “Si número NO es menor que 11….”

No debemos olvidar los dos puntos al final de la sentencia if, ni tampoco se puede olvidar sangrar todas las líneas de código que queremos que se ejecuten
si el resultado de la comparación es «True». La primera línea de código que no esté sangrada será una nueva instrucción (fuera del bucle «if») que se ejecutará.

if condición_1 and condición_2 …. La sentencia if permite que se compruebe más de una condición al mismo tiempo. Por ejemplo, si añadimos la opción “and” obligamos a que se cumpla también la siguiente condición para que se ejecute el bucle condicional. Podemos añadir tantos “and” como deseemos.

alto=39
ancho=30
profundidad=20
if alto<=40 and ancho <=30 and profundidad <=20:
    print("La maleta puede viajar en cabina.")
    print("Gracias por viajar con nosotros.")
Se cumplen las tres condiciones. El resultado será:

La maleta puede viajar en cabina.
Gracias por viajar con nosotros.

if condicion_1 or condición_2…: La opción “or” nos permite comparar varias opciones, y el bucle condicional se ejecutará si se cumple una de las opciones propuestas.

alto=39
ancho=33
profundidad=20
if alto>40 or ancho>30 or profundidad>20:
    print("Lo siento. Su maleta excede de las medidas.")
    print("Debe de facturar su equipaje.")
El ancho excede de las medidas, por lo tanto, el resultado será:

Lo siento. Su maleta excede de las medidas.
Debe de facturar su equipaje.

if (condición_1) ^ (condición_2) Esta opción que está representada por el acento circunflejo es conocida en algunos lenguajes de programación como XOR. Consiste en comprobar que se cumple una condición y solo una de las propuestas.
El acento circunflejo se escribe como si fuésemos a acentuar con este acento una vocal, pero seguimos con la pulsación de un espacio en blanco, como si estuviésemos acentuando el espacio en blanco.
Debemos de escribir cada una de las condiciones entre paréntesis.

correcto=False
matematicas=False
literatura=True
geografia=False
if (matematicas) ^ (literatura) ^ (geografia):
    correcto=True
    print("Gracias por elegir una optativa.")
    print("Puede seguir rellenando la solicitud.")
if not correcto:
    print("Lo siento, no ha seguido las instrucciones.")
    print("Debe comenzar de nuevo.")
Como solo una condición es correcta, resultado:

Gracias por elegir una optativa.
Puede seguir rellenando la solicitud.

Cambiemos ahora el valor de geografía que está false, vamos a ponerlo como True. El resultado será:

Lo siento, no ha seguido las instrucciones.
Debe comenzar de nuevo.

En este caso el usuario habrá elegido dos optativas, cuando se le había indicado en las instrucciones que debía elegir solo una. Si no hubiese elegido ninguna (y las tres fuesen “False”), tampoco estaría correcto, ya que debe de elegir una. Debe de haber una condición (y solo una) que sea verdadera.

if elemento in lista // conjunto // diccionario. Con una sentencia “if” podemos comprobar si un elemento está incluido en una lista, en un conjunto o incluso en un diccionario (en este último caso, nos buscará si está incluido entre sus claves, pero no entre sus valores).

convocados=["Pedri", "Andre", "Gavi", "Fati", "Ferran Torres"]
portero="Andre"
if portero in convocados:
    print(f"{portero} está convocado.")
Resultado:
Andre está convocado.

Veamos a continuación un interesante uso de un bucle for combinado con if in lista…

jugadores=["Torres", "Fabiola", "Segura", "Javier", "Carlos", "Jesús"]
sancionados=["Fabiola", "Segura", "Carlos"]
for jugador in jugadores:
    if jugador in sancionados:
        print(f"{jugador} no puede jugar porque está sancionado.")
    else:
        print(f"{jugador} está convocado para este sábado.")
Resultado:

Torres está convocado para este sábado.
Fabiola no puede jugar porque está sancionado.
Segura no puede jugar porque está sancionado.
Javier está convocado para este sábado.
Carlos no puede jugar porque está sancionado.
Jesús está convocado para este sábado.

if elemento not in lista // conjunto // diccionario. De la misma manera, también podemos comprobar si un elemento no está en una lista.

convocados=["Pedri", "Andre", "Gavi", "Fati", "Ferran Torres"]
delantero="Xavi"
if delantero not in convocados:
    print(f"{delantero} no está convocado.")
Resultado:
Xavi no está convocado.

if condición / else Una sentencia if-else nos permite ejecutar un bloque cuando se cumple una
condición (o grupo de condiciones), y ejecutar otro bloque cuando no se cumple:

km=33
if km<30:
    print ("La carretera es demasiado corta")
    km=km+30
else:
    print ("La carretera es suficientemente grande.")
    print ("Buen trabajo.")
Resultado:
La carretera es suficientemente grande.
Buen trabajo.

if condición_1 elif condición_2 elif condición_3 else También disponemos del bloque if-elif-elif-else. En dicho bloque se comprueba la condición que contenga if, si no se cumple se comprueba la que contenga el primer elif. Si tampoco se cumple saltaría al siguiente elif, y así sucesivamente (hasta agotar los elif). Desde el momento en que se cumpla una de las condiciones, se ejecutaría el código que le acompaña y el programa saldría bloque. Si no se cumple ninguna, se ejecutaría el código que acompañe al else (si es que existe, ya que no siempre aparece).

altura=20
if altura >100:
    print ("El bloque es muy alto")
elif altura >50:
    print ("El bloque es un poco alto")
elif altura >= 20:
    print ("La altura es correcta")
else:
    print ("El bloque es demasiado bajo")
El resultado sería:
La altura es correcta

En este tipo de construcciones debemos prestar especial atención al orden de colocación de las condiciones a analizar. Si colocamos antes una condición que incluya a otra posterior, la segunda no llegará nunca a comprobarse. Por ejemplo, la siguiente construcción sería totalmente errónea, ya que la segunda y tercera condición nunca llegarían a analizarse.

altura=120
if altura >=20:
    print ("La altura es correcta")
elif altura >50:
    print ("El bloque es un poco alto")
elif altura > 100:
    print ("El bloque es muy alto")
else:
    print ("El bloque es demasiado bajo")
Ahora el resultado que nos da, no es el esperado:
La altura es correcta

if condición pass En ocasiones nos puede interesar que una sentencia if o bien un bloque elif determinado no contenga ninguna instrucción, es decir que sea un bloque vacío.

altura=0
if altura ==0:
    pass
elif altura >100:
    print ("El bloque es muy alto")
elif altura >50:
    print ("El bloque es un poco alto")
elif altura >= 20:
    print ("La altura es correcta")
else:
    print ("El bloque es demasiado bajo")
    
print("Fin del programa.")
El resultado será:
Fin del programa.

Podemos utilizar el recurso de incluir pass como instrucción de bloque mientras estamos desarrollando un programa, para más tarde añadir en ese bloque las instrucciones que sean más adecuadas.

Iniciocomandos Pythonbloques de código
comentar códigoprint ( )input ( )
captura de erroresCadenasDatos Numéricos
Módulo randomMódulo statisticsDatos Fecha/hora
ConstantesBucles forBucles while
Bloque ifTuplasListas.
match caseConjuntosDiccionarios
FuncionesClasesArchivos
Entorno gráfico TkinterVentanasWidgets básicos