Як пісаць умоўныя галіны з аператарамі 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” можна апусціць.

Задайце ўмовы з аператарамі параўнання і г.д.

Пакажыце ўмову з дапамогай аперацыі, якая вяртае тып логікі (true, false), напрыклад, аператар параўнання.

Аператары параўнання Python выглядаюць наступным чынам

аператарвынік
x < yпраўда, калі х меншы за y
x <= yісціна, калі х меншы або роўны y
x > yпраўда, калі х больш за y
x >= yпраўда, калі х больш або роўна y
x == yпраўда, калі значэнні x і y роўныя
x != yпраўда, калі значэнні x і y не роўныяx is yпраўда, калі x і y – адзін і той жа аб’ектx is not yпраўда, калі x і y не з’яўляюцца адным і тым жа аб’ектамx in yпраўда, калі х змяшчаецца ў yx not in yпраўда, калі х не ўтрымліваецца ў 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
  • #ERROR!
  • !=

Вышэй прыведзена параўнанне значэнняў; каб параўнаць ідэнтычнасці аб’ектаў, выкарыстоўвайце наступнае

  • is
  • is not

Напрыклад, пры параўнанні цэлага і ліку з плаваючай кропкай “==” вяртае праўду, калі значэнні эквівалентныя, але “is” вяртае ілжыва, таму што гэта розныя аб’екты.

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 (праўда, ілжыва).

if 10:
    print('True')
# True

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

Ва ўмоўным выразе аператара if Python наступныя аб’екты лічацца ілжывымі.

Лічбы, якія прадстаўляюць нуль, пустыя радкі, спісы і г.д., лічацца ілжывымі; усе астатнія лічацца сапраўднымі.

Як ацэньваецца аб’ект, можна праверыць з дапамогай 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’ або ‘False’, у 1,0, выкарыстоўвайце strtobool() у модулі distutils.util.

Задайце некалькі ўмоў або адмоў з лагічнымі аператарамі (і, або, не)

Лагічныя аператары (і, або, не) могуць выкарыстоўвацца для апрацоўкі лагічных спалучэнняў, лагічных дыз’юнкцый і адмаўлення некалькіх умоў.

аператар(Вынік (ва ўмоўным выразе аператара if)
x and yісціна, калі і x, і y праўдзівыя
x or yпраўда, калі х або y праўдзівыя
not xілжыва, калі х ісціна, ісціна, калі х хлусня
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 і y» і «x або 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.