Растлумачце ўмоўнае галінаванне з аператарамі 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 is y
x is not y
x in y
x not in 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 наступныя аб’екты лічацца ілжывымі.
- Канстанты, вызначаныя як ілжывыя:
None
,false
- Нуль у лікавым тыпе:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Пустая паслядоўнасць або калекцыя:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Лічбы, якія прадстаўляюць нуль, пустыя радкі, спісы і г.д., лічацца ілжывымі; усе астатнія лічацца сапраўднымі.
Як ацэньваецца аб’ект, можна праверыць з дапамогай 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. Больш падрабязную інфармацыю глядзіце ў наступным артыкуле.
- па тэме:Лагічныя аператары Python “and, or, not” (лагічнае спалучэнне, лагічнае дыз’юнкцыя, адмаўленне)
Можна выкарыстоўваць і і або больш за адзін раз.
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.