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.
- RELACIONADO:Escribir sentencias if en una línea con el operador ternario de Python (operador condicional)
- 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
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
operador | resultado |
---|---|
x < y | verdadero si x es menor que y |
x <= y | verdadero si x es menor o igual que y |
x > y | verdadero si x es mayor que y |
x >= y | verdadero si x es mayor o igual que y |
x == y | verdadero si los valores x e y son iguales |
x != y
x is y
x is not y
x in y
x not in 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
:incluyenot 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.
- Constantes definidas como falsas:
None
,false
- Cero en tipo numérico:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Secuencia o colección vacía:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
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 y | verdadero si tanto x como y son verdaderos |
x or y | verdadero si x o y son verdaderos |
not x | falso 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.
- RELACIONADO:Operadores lógicos de Python «y, o, no» (conjunción lógica, disyunción lógica, negación)
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.