Conditions: if, then, else - Learn Python 3 - Snakify

Lesson 3
Condiciones: if-then-else


1. Sintaxis

Todos los programas en la primera lección se ejecutaron secuencialmente, línea tras línea. No se puede omitir ninguna línea.

Consideremos el siguiente problema: para el entero dado X determine su valor absoluto. Si X> 0, el programa debería imprimir el valor X, de lo contrario debería imprimir -X. Este comportamiento no se puede alcanzar usando el programa secuencial. El programa debe seleccionar condicionalmente el siguiente paso. Ahí es donde las condiciones ayudan:

x = int(input())
if x > 0:
    print(x)
else:
    print(-x)

Este programa usa una declaración condicional if . Después del if ponemos una condición (x > 0) seguida por dos puntos. Después de eso, colocamos un bloque de instrucciones que se ejecutará solo si la condición es verdadera (es decir, se evalúa como True ). Este bloque puede ir seguido de la palabra else , dos puntos y otro bloque de instrucciones que se ejecutará solo si la condición es falsa (es decir, se evalúa como False ). Es el caso anterior, la condición es falsa, por lo que se ejecuta el bloque 'else'. Cada bloque debe sangrarse usando espacios.

En resumen, el enunciado condicional en Python tiene la siguiente sintaxis:

if condition :
    true-block
    several instructions that are executed
    if the condition evaluates to True
else:
    false-block
    several instructions that are executed
    if the condition evaluates to False

La palabra clave else con el bloque 'falso' puede omitirse en caso de que no se haga nada si la condición es falsa. Por ejemplo, podemos reemplazar la variable x con su valor absoluto así:

x = int(input())
if x < 0:
    x = -x
print(x)

En este ejemplo, la variable x se asigna a -x solo si x < 0 . Por el contrario, la instrucción print(x) se ejecuta cada vez, porque no está sangrada, por lo que no pertenece al bloque 'verdadero'.

La sangría es una forma general en Python para separar bloques de código. Todas las instrucciones dentro del mismo bloque deben sangrarse de la misma manera, es decir, deben tener el mismo número de espacios al comienzo de la línea. Se recomienda usar 4 espacios para sangría.

La sangría es lo que hace que Python sea diferente de la mayoría del otro idioma, en el que las llaves { y } se utilizan para formar los bloques.

Por cierto, hay una función incorporada para valor absoluto en Python:

x = int(input())
print(abs(x))
Advertising by Google, may be based on your interests

2. Condiciones anidadas

Cualquier instrucción de Python puede colocarse en bloques 'verdaderos' y bloque 'falso', incluida otra instrucción condicional. De esta forma obtenemos condiciones anidadas. Los bloques de condiciones internas se sangran usando dos veces más espacios (por ejemplo, 8 espacios). Veamos un ejemplo. Dadas las coordenadas del punto en el plano, imprime su cuadrante.

x = int(input())
y = int(input())
if x > 0:
    if y > 0:
        # x es mayor que 0, y es mayor que 0
        print("Quadrant I")
    else:    
        # x es mayor que 0, y es menor o igual que 0
        print("Quadrant IV")
else:
    if y > 0:
        # x es menor o igual que 0, y es mayor que 0
        print("Quadrant II")
    else:    
        # x es menor o igual que 0, y es menor o igual que 0
        print("Quadrant III")

En este ejemplo usamos los comentarios: el texto explicativo que no tiene ningún efecto en la ejecución del programa. Este texto comienza con el hash # y dura hasta el final de la línea.

Advertising by Google, may be based on your interests

3. Operadores de comparación

Por lo general, la condición después de if tiene uno o más de los siguientes operadores:

<
Menos - la condición es verdadera si el lado izquierdo está por debajo del lado derecho.
>
mayor - la condición es verdadera si el lado izquierdo es mayor que el lado derecho.
<=
menos o igual.
>=
mayor o igual.
==
igual.
!=
no es igual.

Por ejemplo, la condición x * x < 1000 significa que "el valor de la expresión x * x es menor que 1000", y la condición 2 * x != y significa "el valor doble de la variable x no es igual al valor de la variable y ".

Los operadores de comparación en Python se pueden agrupar así: a == b == c o x <= y >= 10 . Es algo raro entre los lenguajes de programación.

Advertising by Google, may be based on your interests

4. Bool objetos y operadores lógicos

Cuando sumamos dos objetos enteros usando el operador + , como 2 + 5 , obtenemos un nuevo objeto: 7 . Del mismo modo, cuando comparamos dos enteros usando el operador < , como 2 < 5 , obtenemos un nuevo objeto: True .

print(2 < 5)
print(2 > 5)
Los objetos True y False tienen un tipo especial llamado bool . Como cada nombre de tipo se puede usar para lanzar objetos en ese tipo, veamos qué proporciona este elenco para los números:
print(bool(-10))    # Cierto
print(bool(0))      # Falso: cero es el único número falso
print(bool(10))     # Cierto

print(bool(''))     # Falso: la cadena vacía es la única cadena falsa
print(bool('abc'))  # Cierto

Algunas veces necesita verificar varias condiciones a la vez. Por ejemplo, puede verificar si un número n es divisible entre 2 usando la condición n % 2 == 0 ( n da un residuo 0 cuando se divide por 2 ). Si es necesario comprobar que los dos números n y m son a la vez divisible por 2, usted debe comprobar tanto n % 2 == 0 y m % 2 == 0 . Para hacer eso, únete a ellos usando un operador and (AND lógico): n % 2 == 0 and m % 2 == 0 .

Python tiene lógica AND, lógica O y negación.

Operador and es un operador binario que evalúa como True si y solo si su lado izquierdo y su lado derecho son True .

Operador or es un operador binario que evalúa como True si al menos uno de sus lados es True .

El operador not es una negación unaria, es seguido por algún valor. Se evalúa como True si ese valor es False y viceversa.

Comprobemos que al menos uno de los dos números termina con 0:

a = int(input())
b = int(input())
if a % 10 == 0 or b % 10 == 0:
    print('YES')
else:
    print('NO')

Comprobemos que el número a sea ​​positivo y el número b no negativo:

if a > 0 and not (b < 0):

En lugar de not (b < 0) podemos escribir (b >= 0) .

Advertising by Google, may be based on your interests

5. palabra 'elif'

Si tiene más de dos opciones para diferenciar usando el operador condicional, puede usar if... elif... else statement.

Vamos a mostrar cómo funciona al reescribir el ejemplo con el punto (x, y) en el plano y los cuadrantes desde arriba:

x = int(input())
y = int(input())
if x > 0 and y > 0:
    print("Quadrant I")
elif x > 0 and y < 0:
    print("Quadrant IV")
elif y > 0:
    print("Quadrant II")
else:
    print("Quadrant III")

En este caso, las condiciones en if y elif se verifican una tras otra hasta que se encuentre la primera condición verdadera. Entonces solo se está ejecutando el bloque verdadero para esa condición. Si todas las condiciones son falsas, el bloque 'else' se está ejecutando, si está presente.

Advertising by Google, may be based on your interests