Cómo escribir ramas condicionales con sentencias if en Python

Negocio

Explicar la bifurcación condicional con sentencias if en Python.

  • Fundamentos de las sentencias if (if, elif, else)
  • Especificar condiciones con operadores de comparación, etc.
  • Especifique las condiciones por número, lista, etc.
  • Especificar condiciones múltiples o negaciones con operadores lógicos (y, o, no)
  • Expresiones condicionales en líneas nuevas y en líneas múltiples

También existe un operador ternario que describe una rama condicional en una línea. Véase el siguiente artículo.

Fundamentos de las sentencias if (if, elif, else)

La forma básica de la sentencia if es la siguiente

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.`

El «elif» corresponde al «else if» en C y otros lenguajes, y puede haber cualquier número de «elifs».

Si sólo hay una expresión condicional o el procesamiento cuando es falso no es necesario, los bloques «elif» y «else» pueden omitirse.

Especificar condiciones con operadores de comparación, etc.

Especifique la condición con una operación que devuelva un tipo bool (verdadero, falso), como un operador de comparación.

Los operadores de comparación de Python son los siguientes

operadorresultado
x < yverdadero si x es menor que y
x <= yverdadero si x es menor o igual que y
x > yverdadero si x es mayor que y
x >= yverdadero si x es mayor o igual que y
x == yverdadero si los valores x e y son iguales
x != ytrue si los valores x e y no son igualesx is ytrue si x e y son el mismo objetox is not ytrue si x e y no son el mismo objetox in yverdadero si x está contenido en yx not in yverdadero si x no está contenido en y

Ejemplo. Por comodidad, se define como una función con la sentencia 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

Lo siguiente se puede escribir de una manera que es única para Python. Consulte el siguiente artículo para obtener más 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
  • ==
  • !=

Lo anterior es una comparación de valores; para comparar las identidades de los objetos, utilice lo siguiente

  • is
  • is not

Por ejemplo, al comparar un número entero y un número de punto flotante, «==» devuelve verdadero si los valores son equivalentes, pero «is» devuelve falso porque son objetos 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

También es posible hacer la condición de si una lista o una cadena contiene un elemento específico (carácter).

  • in:incluye
  • not in:sin incluir
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 las condiciones por número, lista, etc.

La expresión condicional de una sentencia if puede ser un número, una lista u otro objeto que no sea de tipo bool (verdadero, falso).

if 10:
    print('True')
# True

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

En la expresión condicional de una sentencia if de Python, los siguientes objetos se consideran falsos.

Los números que representan el cero, las cadenas vacías, las listas, etc. se consideran falsos; todos los demás se consideran verdaderos.

La forma de juzgar el objeto se puede comprobar con bool().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Esto se puede utilizar para escribir simplemente el proceso cuando la lista está vacía, por ejemplo.

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

Tenga en cuenta que la cadena 'False' también será verdadera, porque como se muestra en el ejemplo anterior, cualquier cadena que no esté vacía en la cadena será verdadera.' Para convertir una cadena específica como 'True' o 'False' a 1,0, utilice strtobool() en el módulo distutils.util.

Especificar condiciones múltiples o negaciones con operadores lógicos (y, o, no)

Los operadores lógicos (y, o, no) pueden utilizarse para manejar la conjunción lógica, la disyunción lógica y la negación de múltiples condiciones.

operador(Resultado (en la expresión condicional de una sentencia if)
x and yverdadero si tanto x como y son verdaderos
x or yverdadero si x o y son verdaderos
not xfalso si x es verdadero, verdadero si x es 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 hecho, «x e y» y «x o y» no devuelven True o False, sino x o y. Mientras se utilicen en expresiones condicionales en sentencias if, no hay que preocuparse por ellas, ya que se evalúan como True o False. Consulte el siguiente artículo para obtener más detalles.

Es posible utilizar y y o más de una 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

Expresiones condicionales en líneas nuevas y en líneas múltiples

Cuando se utilizan varias expresiones condicionales conectándolas con «y» u «or» y cada línea se hace larga, a veces es necesario romper la expresión condicional y escribirla en varias líneas.

Se puede hacer un salto de línea utilizando una barra invertida o encerrando toda la línea entre paréntesis.

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

Puede utilizar una barra invertida para romper una línea tantas veces como quiera. Del mismo modo, puede romper una línea cualquier número de veces entre paréntesis. No hay límite de sangría.

Tenga en cuenta que esta es una técnica que se puede utilizar en cualquier parte del código de Python, no sólo en las sentencias if.

Copied title and URL