Com escriure branques condicionals amb declaracions if a Python

Negocis

Expliqueu les ramificacions condicionals amb declaracions if a Python.

  • Conceptes bàsics de les declaracions if (if, elif, else)
  • Especifiqueu condicions amb operadors de comparació, etc.
  • Especifiqueu les condicions per nombre, llista, etc.
  • Especifiqueu múltiples condicions o negacions amb operadors lògics (i, o, no)
  • Expressions condicionals en línies noves i múltiples línies

També hi ha un operador ternari que descriu una branca condicional en una línia. Consulteu l’article següent.

Conceptes bàsics de les declaracions if (if, elif, else)

La forma bàsica de la declaració if és la següent

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” correspon al “else if” en C i altres idiomes, i pot haver-hi qualsevol nombre d'”elifs”.

Si només hi ha una expressió condicional o processament quan false no és necessari, es poden ometre els blocs “elif” i “else”.

Especifiqueu condicions amb operadors de comparació, etc.

Especifiqueu la condició amb una operació que retorni un tipus bool (true, false), com ara un operador de comparació.

Els operadors de comparació de Python són els següents

operadorresultat
x < ycert si x és menor que y
x <= ycert si x és menor o igual que y
x > ycert si x és més gran que y
x >= ycert si x és major o igual que y
x == ycert si els valors de x i y són iguals
x != ycert si els valors de x i y no són igualsx is ycert si x i y són el mateix objectex is not ycert si x i y no són el mateix objectex in ycert si x està continguda a yx not in ycert si x no està contingut en y

Exemple. Per comoditat, es defineix com una funció amb la sentència 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

El següent es pot escriure d’una manera que sigui exclusiva de Python. Consulteu l’article següent per obtenir més informació.
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!
  • !=

L’anterior és una comparació de valors; per comparar identitats d’objectes, utilitzeu el següent

  • is
  • is not

Per exemple, quan es compara un nombre enter i un nombre de coma flotant, “==” retorna cert si els valors són equivalents, però “és” retorna fals perquè són objectes diferents.

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

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

print(i == f)
# True

print(i is f)
# False

També és possible establir la condició de si una llista o una cadena conté un element específic (caràcter).

  • in:incloure
  • not in:sense incloure
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

Especifiqueu les condicions per nombre, llista, etc.

L’expressió condicional d’una sentència if pot ser un nombre, una llista o un altre objecte que no sigui de tipus bool (true, false).

if 10:
    print('True')
# True

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

En l’expressió condicional d’una instrucció if de Python, els objectes següents es consideren falsos.

Els nombres que representen zero, cadenes buides, llistes, etc. es consideren falsos; tots els altres es consideren veritables.

Com es jutja l’objecte es pot comprovar amb bool().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Això es pot utilitzar per escriure simplement el procés quan la llista està buida, per exemple.

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

Tingueu en compte que la cadena ‘False’ també serà certa, perquè com es mostra a l’exemple anterior, qualsevol cadena que no estigui buida a la cadena serà certa.’ Per convertir una cadena específica com ara “True” o “False” a 1,0, utilitzeu strtobool() al mòdul distutils.util.

Especifiqueu múltiples condicions o negacions amb operadors lògics (i, o, no)

Els operadors lògics (i, o no) es poden utilitzar per manejar la conjunció lògica, la disjunció lògica i la negació de múltiples condicions.

operador(Resultat (en l’expressió condicional d’una sentència if)
x and ycert si tant x com y són certs
x or ycert si x o y és cert
not xfals si x és vertader, vertader si x és fals
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 fet, “x i y” i “x o y” no retornen vertader o fals, sinó x o y. Sempre que s’utilitzin en expressions condicionals en declaracions if, no cal que us preocupeu, ja que s’avaluen com a Vertader o Fals. Consulteu l’article següent per obtenir més informació.

És possible utilitzar i i o més d’una vegada.

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

Expressions condicionals en línies noves i múltiples línies

Quan s’utilitzen diverses expressions condicionals connectant-les amb “i” o “o” i cada línia es fa llarga, de vegades cal trencar l’expressió condicional i escriure-la en diverses línies.

Es pot fer un salt de línia utilitzant una barra invertida o tancant tota la línia 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

Podeu utilitzar una barra invertida per trencar una línia tantes vegades com vulgueu. De la mateixa manera, podeu trencar una línia qualsevol nombre de vegades entre parèntesis. No hi ha límit de sagnat.

Tingueu en compte que aquesta és una tècnica que es pot utilitzar a qualsevol lloc del codi Python, no només a les declaracions if.