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.
- RELACIONADO:Escribir declaracións if nunha liña co operador ternario de Python (operador condicional)
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
operador | resultado |
---|---|
x < y | verdadeiro se x é menor que y |
x <= y | verdadeiro se x é menor ou igual a y |
x > y | verdade se x é maior que y |
x >= y | verdadeiro se x é maior ou igual a y |
x == y | verdadeiro se os valores de x e y son iguais |
x != y
x is y
x is not y
x in y
x not in 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írnot 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.
- Constantes definidas como falsas:
None
,false
- Cero en tipo numérico:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Secuencia ou colección baleira:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
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 y | verdadeiro se x e y son verdadeiros |
x or y | verdadeiro se x ou y é verdadeiro |
not x | falso 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.
- RELACIONADO:Operadores lóxicos de Python “e, ou, non” (conxunción lóxica, disxunción lóxica, negación)
É 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.
- RELACIONADO:Escribir cadeas longas en varias liñas en Python