Как да пишем условни разклонения с if оператори в Python

Бизнес

Обяснете условното разклоняване с оператор if в Python.

  • Основи на операторите if (if, elif, else)
  • Задаване на условия с оператори за сравнение и др.
  • Задайте условия по номер, списък и т.н.
  • Задаване на множество условия или отрицания с логически оператори (и, или, не)
  • Условни изрази за нови редове и множество редове

Съществува също така и троен оператор, който описва условен клон в един ред. Вижте следната статия.

Основи на операторите if (if, elif, else)

Основната форма на декларацията if е следната

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

„elif“ съответства на „else if“ в C и други езици и може да има произволен брой „elifs“.

Ако има само един условен израз или не е необходима обработка при false, блоковете „elif“ и „else“ могат да бъдат пропуснати.

Задаване на условия с оператори за сравнение и др.

Задайте условието с операция, която връща тип bool (true, false), например оператор за сравнение.

Операторите за сравнение в Python са следните

операторрезултат
x < ytrue, ако x е по-малко от y
x <= ytrue, ако x е по-малко или равно на y
x > ytrue, ако x е по-голямо от y
x >= ytrue, ако x е по-голямо или равно на y
x == ytrue, ако стойностите x и y са равни
x != ytrue, ако стойностите x и y не са равниx is ytrue, ако x и y са един и същ обектx is not ytrue, ако x и y не са един и същ обектx in ytrue, ако x се съдържа в yx not in ytrue, ако x не се съдържа в y

Пример. За удобство той е дефиниран като функция с оператора 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

Следното може да бъде записано по начин, който е уникален за Python. Вижте следната статия за подробности.
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
  • ==
  • !=

Горното е сравнение на стойности; за сравнение на идентичности на обекти използвайте следното

  • is
  • is not

Например при сравняване на цяло число и число с плаваща запетая „==“ връща true, ако стойностите са еквивалентни, но „is“ връща false, тъй като те са различни обекти.

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

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

print(i == f)
# True

print(i is f)
# False

Възможно е също така да поставите условие дали даден списък или низ съдържа определен елемент (символ).

  • in:включва
  • not in:без да включва
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

Задайте условия по номер, списък и т.н.

Условният израз на оператора if може да бъде число, списък или друг обект, който не е от тип bool (true, false).

if 10:
    print('True')
# True

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

В условния израз на изявление if в Python следните обекти се считат за false.

Числа, представляващи нула, празни низове, списъци и т.н., се считат за лъжливи; всички останали се считат за верни.

Как се оценява обектът, може да се провери с функцията bool().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Това може да се използва за просто записване на процеса, когато списъкът е празен, например.

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

Обърнете внимание, че низът 'False' също ще бъде true, тъй като, както е показано в примера по-горе, всеки низ, който не е празен в низ, ще бъде true. За да преобразувате конкретен низ, например 'True' или 'False', в 1,0, използвайте функцията strtobool() в модула distutils.util.

Задаване на множество условия или отрицания с логически оператори (и, или, не)

Логическите оператори (and, or, not) могат да се използват за обработка на логическа конюнкция, логическа дизюнкция и отрицание на множество условия.

оператор(Резултат (в условния израз на изявление if)
x and ytrue, ако и x, и y са true
x or ytrue, ако x или y е true
not xfalse, ако x е true, true, ако x е false
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

Всъщност „x and y“ и „x or y“ не връщат True или False, а x или y. Докато се използват в условни изрази в if оператори, няма нужда да се притеснявате за тях, тъй като те се оценяват като True или False. Вижте следната статия за подробности.

Възможно е да използвате и и или повече от веднъж.

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

Условни изрази за нови редове и множество редове

Когато се използват множество условни изрази чрез свързването им с „и“ или „или“ и всеки ред става дълъг, понякога е необходимо да прекъснете условния израз и да го напишете на няколко реда.

Прекъсването на реда може да се направи чрез обратна наклонена черта или чрез ограждане на целия ред в скоби.

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

Можете да използвате обратна наклонена черта, за да прекъснете ред колкото пъти искате. По същия начин можете да прекъснете ред произволен брой пъти в скоби. Няма ограничение за отстъпите.

Обърнете внимание, че тази техника може да се използва навсякъде в кода на Python, а не само в изявленията if.

Copied title and URL