Como escribir ramas condicionais con instrucións if en Python

Negocios

Explica a ramificación condicional con instrucións if en Python.

  • Conceptos básicos das declaracións if (if, elif, else)
  • Especificar condicións con operadores de comparación, etc.
  • Especifique as condicións por número, lista, etc.
  • Especifique varias condicións ou negacións con operadores lóxicos (e, ou, non)
  • Expresións condicionais en liñas novas e en liñas múltiples

Tamén hai un operador ternario que describe unha rama condicional nunha liña. Consulta o seguinte artigo.

Conceptos básicos das declaracións if (if, elif, else)

A forma básica da declaración if é a seguinte

if Conditional expression 1:
    `Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
    `Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
    `Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
    `Processing when all conditionals are false.`

O “elif” corresponde ao “else if” en C e noutros idiomas, e pode haber calquera número de “elifs”.

Se só hai unha expresión condicional ou procesamento cando false non é necesario, pódense omitir os bloques “elif” e “else”.

Especificar condicións con operadores de comparación, etc.

Especifique a condición cunha operación que devolva un tipo bool (verdadeiro, falso), como un operador de comparación.

Os operadores de comparación de Python son os seguintes

operadorresultado
x < yverdadeiro se x é menor que y
x <= yverdadeiro se x é menor ou igual a y
x > yverdade se x é maior que y
x >= yverdadeiro se x é maior ou igual a y
x == yverdadeiro se os valores de x e y son iguais
x != yverdadeiro se os valores de x e y non son iguaisx is yverdade se x e y son o mesmo obxectox is not yverdadeiro se x e y non son o mesmo obxectox in yverdadeiro se x está contido en yx not in yverdadeiro se x non está contido en y

Exemplo. Por comodidade, defínese como unha función coa instrución def.

def if_test(num):
    if num > 100:
        print('100 < num')
    elif num > 50:
        print('50 < num <= 100')
    elif num > 0:
        print('0 < num <= 50')
    elif num == 0:
        print('num == 0')
    else:
        print('num < 0')

if_test(1000)
# 100 < num

if_test(70)
# 50 < num <= 100

if_test(0)
# num == 0

if_test(-100)
# num < 0

O seguinte pódese escribir dun xeito exclusivo de Python. Consulte o seguinte artigo para obter máis detalles.
a < x < b

def if_test2(num):
    if 50 < num < 100:
        print('50 < num < 100')
    else:
        print('num <= 50 or num >= 100')

if_test2(70)
# 50 < num < 100

if_test2(0)
# num <= 50 or num >= 100
  • #ERROR!
  • !=

O anterior é unha comparación de valores; para comparar identidades de obxectos, utiliza o seguinte

  • is
  • is not

Por exemplo, ao comparar un número enteiro e un número de coma flotante, “==” devolve verdadeiro se os valores son equivalentes, pero “é” devolve falso porque son obxectos diferentes.

i = 10
print(type(i))
# <class 'int'>

f = 10.0
print(type(f))
# <class 'float'>

print(i == f)
# True

print(i is f)
# False

Tamén é posible establecer a condición de se unha lista ou unha cadea contén un elemento específico (carácter).

  • in:incluír
  • not in:sen incluír
def if_test_in(s):
    if 'a' in s:
        print('a is in string')
    else:
        print('a is NOT in string')

if_test_in('apple')
# a is in string

if_test_in('melon')
# a is NOT in string

Especifique as condicións por número, lista, etc.

A expresión condicional dunha instrución if pode ser un número, unha lista ou outro obxecto que non sexa de tipo bool (verdadeiro, falso).

if 10:
    print('True')
# True

if [0, 1, 2]:
    print('True')
# True

Na expresión condicional dunha instrución if de Python, os seguintes obxectos considéranse falsos.

Os números que representan cero, cadeas baleiras, listas, etc. considéranse falsos; todos os demais considéranse verdadeiros.

Como se xulga o obxecto pódese comprobar con bool().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Isto pódese usar para simplemente escribir o proceso cando a lista está baleira, por exemplo.

def if_test_list(l):
    if l:
        print('list is NOT empty')
    else:
        print('list is empty')

if_test_list([0, 1, 2])
# list is NOT empty

if_test_list([])
# list is empty

Teña en conta que a cadea ‘False’ tamén será verdadeira, porque como se mostra no exemplo anterior, calquera cadea que non estea baleira na cadea será verdadeira.’ Para converter unha cadea específica como “True” ou “False” a 1,0, use strtobool() no módulo distutils.util.

Especifique varias condicións ou negacións con operadores lóxicos (e, ou, non)

Os operadores lóxicos (e, ou, non) poden usarse para manexar a conxunción lóxica, a disxunción lóxica e a negación de varias condicións.

operador(Resultado (na expresión condicional dunha instrución if)
x and yverdadeiro se x e y son verdadeiros
x or yverdadeiro se x ou y é verdadeiro
not xfalso se x é verdadeiro, verdadeiro se x é falso
def if_test_and_not(num):
    if num >= 0 and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_not(5)
# num is positive odd

if_test_and_not(10)
# num is NOT positive odd

if_test_and_not(-10)
# num is NOT positive odd

De feito, “x e y” e “x ou y” non devolven verdadeiro nin falso, senón x ou y. Sempre que se utilicen en expresións condicionais en declaracións if, non hai que preocuparse por elas, xa que se avalían como Verdadeiro ou Falso. Consulte o seguinte artigo para obter máis detalles.

É posible usar and e ou máis dunha vez.

def if_test_and_not_or(num):
    if num >= 0 and not num % 2 == 0 or num == -10:
        print('num is positive odd or -10')
    else:
        print('num is NOT positive odd or -10')

if_test_and_not_or(5)
# num is positive odd or -10

if_test_and_not_or(10)
# num is NOT positive odd or -10

if_test_and_not_or(-10)
# num is positive odd or -10

Expresións condicionais en liñas novas e en liñas múltiples

Cando se usan varias expresións condicionais conectándoas con “e” ou “ou” e cada liña faise longa, ás veces é necesario romper a expresión condicional e escribila en varias liñas.

Pódese facer un salto de liña usando unha barra invertida ou encerrando toda a liña entre parénteses.

def if_test_and_backslash(num):
    if num >= 0 \
       and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_backslash(5)
# num is positive odd

def if_test_and_brackets(num):
    if (num >= 0
        and not num % 2 == 0):
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_brackets(5)
# num is positive odd

Podes usar unha barra invertida para romper unha liña tantas veces como queiras. Do mesmo xeito, pode romper unha liña calquera número de veces entre parénteses. Non hai límite de sangría.

Teña en conta que esta é unha técnica que se pode usar en calquera lugar do código Python, non só nas instrucións if.