Jak pisać rozgałęzienia warunkowe za pomocą instrukcji if w Pythonie

Biznes

Wyjaśnić warunkowe rozgałęzianie za pomocą instrukcji if w języku Python.

  • Podstawy instrukcji if (if, elif, else)
  • Określanie warunków za pomocą operatorów porównania itp.
  • Określenie warunków za pomocą liczby, listy itp.
  • Określanie wielu warunków lub negacji za pomocą operatorów logicznych (and, or, not)
  • Wyrażenia warunkowe dla nowych i wielu wierszy

Istnieje również operator trójskładnikowy, który opisuje rozgałęzienie warunkowe w jednym wierszu. Więcej informacji na ten temat można znaleźć w poniższym artykule.

Podstawy instrukcji if (if, elif, else)

Podstawowa postać instrukcji if jest następująca

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

Spójnik „elif” odpowiada spójnikowi „else if” w języku C i innych językach, przy czym może istnieć dowolna liczba spójników „elif”.

Jeśli istnieje tylko jedno wyrażenie warunkowe lub przetwarzanie, gdy fałsz nie jest konieczne, bloki „elif” i „else” można pominąć.

Określanie warunków za pomocą operatorów porównania itp.

Określ warunek za pomocą operacji, która zwraca typ bool (true, false), np. operatora porównania.

Operatory porównania w języku Python są następujące

operatorwynik
x < yprawda, jeśli x jest mniejsze od y
x <= yprawda, jeśli x jest mniejsze lub równe y
x > yprawda, jeśli x jest większe od y
x >= yprawda, jeśli x jest większe lub równe y
x == yprawda, jeśli wartości x i y są równe
x != ytrue, jeśli wartości x i y nie są równex is ytrue, jeśli x i y są tym samym obiektemx is not ytrue, jeśli x i y nie są tym samym obiektemx in yprawda, jeśli x jest zawarty w yx not in yprawda, jeśli x nie jest zawarty w y

Przykład. Dla wygody definiuje się go jako funkcję za pomocą instrukcji 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

Poniższe informacje można zapisać w sposób charakterystyczny dla Pythona. Szczegółowe informacje na ten temat można znaleźć w poniższym artykule.
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
  • ==
  • !=

Powyżej przedstawiono porównanie wartości; aby porównać tożsamość obiektu, należy użyć następującego polecenia

  • is
  • is not

Na przykład podczas porównywania liczby całkowitej i zmiennoprzecinkowej wyrażenie „==” zwraca wartość true, jeśli wartości te są równoważne, natomiast wyrażenie „is” zwraca wartość false, ponieważ są to różne obiekty.

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

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

print(i == f)
# True

print(i is f)
# False

Możliwe jest również określenie warunku, czy lista lub łańcuch zawierają określony element (znak).

  • in:włącz
  • not in:nie licząc
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

Określenie warunków za pomocą liczby, listy itp.

Wyrażenie warunkowe instrukcji if może być liczbą, listą lub innym obiektem, który nie jest typu bool (true, false).

if 10:
    print('True')
# True

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

W wyrażeniu warunkowym instrukcji if w języku Python następujące obiekty są uznawane za fałszywe.

Liczby reprezentujące zero, puste łańcuchy, listy itp. są uznawane za fałszywe, a wszystkie inne za prawdziwe.

To, jak obiekt jest oceniany, można sprawdzić za pomocą funkcji bool().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Można tego użyć na przykład do zapisania procesu, gdy lista jest pusta.

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

Zauważ, że łańcuch 'False' również będzie prawdziwy, ponieważ, jak pokazano w powyższym przykładzie, każdy łańcuch, który nie jest pusty w łańcuchu, będzie prawdziwy. Aby przekonwertować określony ciąg znaków, taki jak 'True' lub 'False' na 1,0, należy użyć funkcji strtobool() w module distutils.util.

Określanie wielu warunków lub negacji za pomocą operatorów logicznych (and, or, not)

Operatory logiczne (and, or, not) mogą być używane do obsługi koniunkcji logicznej, dysjunkcji logicznej oraz negacji wielu warunków.

operator(wynik (w wyrażeniu warunkowym instrukcji if)
x and yprawda, jeśli zarówno x, jak i y są prawdziwe
x or yprawda, jeśli x lub y jest prawdziwe
not xfałsz, jeśli x jest prawdą, prawda, jeśli x jest fałszem
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

W rzeczywistości „x i y” oraz „x lub y” nie zwracają ani True, ani False, lecz albo x, albo y. Dopóki są one używane w wyrażeniach warunkowych w instrukcjach if, nie ma potrzeby się nimi przejmować, ponieważ zwracają one albo True, albo False. Więcej informacji na ten temat można znaleźć w poniższym artykule.

Możliwe jest użycie i oraz lub więcej niż jeden raz.

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

Wyrażenia warunkowe dla nowych i wielu wierszy

Gdy używa się wielu wyrażeń warunkowych, łącząc je spójnikami „i” lub „lub”, a każdy wiersz staje się długi, czasami konieczne jest rozbicie wyrażenia warunkowego i zapisanie go w wielu wierszach.

Podziału wiersza można dokonać za pomocą odwrotnego ukośnika lub przez ujęcie całego wiersza w nawiasy.

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

Możesz użyć odwrotnego ukośnika, aby przerwać linię dowolną liczbę razy. Podobnie, w nawiasach można łamać wiersz dowolną liczbę razy. Nie ma ograniczenia wcięć.

Należy pamiętać, że jest to technika, którą można stosować w dowolnym miejscu kodu Pythona, nie tylko w instrukcjach if.