Útskýrðu skilyrta greiningu með if setningum í Python.
- Grunnatriði ef staðhæfingar (ef, elif, annað)
- Tilgreindu skilyrði með samanburðarfyrirtækjum o.s.frv.
- Tilgreina skilyrði eftir fjölda, lista o.s.frv.
- Tilgreindu mörg skilyrði eða neitanir með rökrænum aðgerðum (og, eða, ekki)
- Skilyrt tjáning á nýjum línum og mörgum línum
Það er líka þrískiptur rekstraraðili sem lýsir skilyrtri grein í einni línu. Sjá eftirfarandi grein.
Grunnatriði ef staðhæfingar (ef, elif, annað)
Grunnform ef yfirlýsingarinnar er sem hér segir
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“ samsvarar „annað ef“ í C og öðrum tungumálum, og það getur verið hvaða fjöldi „elifs“.
Ef það er aðeins ein skilyrt tjáning eða vinnsla þegar false er ekki nauðsynlegt, er hægt að sleppa „elif“ og „else“ kubbunum.
Tilgreindu skilyrði með samanburðarfyrirtækjum o.s.frv.
Tilgreindu ástandið með aðgerð sem skilar bool tegund (satt, ósatt), eins og samanburðaraðgerð.
Python samanburðaraðgerðir eru sem hér segir
rekstraraðili | niðurstöðu |
---|---|
x < y | satt ef x er minna en y |
x <= y | satt ef x er minna en eða jafnt og y |
x > y | satt ef x er stærra en y |
x >= y | satt ef x er stærra en eða jafnt og y |
x == y | satt ef x og y gildi eru jöfn |
x != y
x is y
x is not y
x in y
x not in y
Dæmi. Til hægðarauka er það skilgreint sem fall með def yfirlýsingunni.
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
Hægt er að skrifa eftirfarandi á þann hátt sem er einstakur fyrir Python. Sjá eftirfarandi grein fyrir frekari upplýsingar.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!
!=
Ofangreint er samanburður á gildum; til að bera saman auðkenni hlutar, notaðu eftirfarandi
is
is not
Til dæmis, þegar borin er saman heiltala og fljótandi tölu, skilar „==“ satt ef gildin eru jafngild, en „er“ skilar ósatt vegna þess að þetta eru mismunandi hlutir.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Einnig er hægt að setja það skilyrði hvort listi eða strengur innihaldi tiltekið stak (staf).
in
:fela í sérnot in
:ekki meðtöldum
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
Tilgreina skilyrði eftir fjölda, lista o.s.frv.
Skilyrt tjáning if-setningar getur verið tala, listi eða annar hlutur sem er ekki af gerðinni bool (satt, ósatt).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Í skilyrtri tjáningu Python if staðhæfingar eru eftirfarandi hlutir taldir rangir.
- Stöður skilgreindar sem rangar:
None
,false
- Núll í tölustafi:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Tóm röð eða safn:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Tölur sem tákna núll, tóma strengi, lista o.s.frv. eru taldar rangar; allir aðrir teljast sannir.
Hvernig hluturinn er dæmdur er hægt að athuga með bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Þetta er hægt að nota til að einfaldlega skrifa ferlið þegar listinn er tómur, til dæmis.
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
Athugaðu að strengurinn ‘False’ mun einnig vera satt, því eins og sýnt er í dæminu hér að ofan, þá verða allir strengir sem eru ekki tómir í strengnum sannir.’ Til að breyta tilteknum streng eins og ‘True’ eða ‘False’ í 1,0, notaðu strtobool() í distutils.util einingunni.
Tilgreindu mörg skilyrði eða neitanir með rökrænum aðgerðum (og, eða, ekki)
Hægt er að nota rökrænu rekstraraðilana (og, eða ekki) til að meðhöndla rökræna samtengingu, rökræna aðgreiningu og afneitun margra skilyrða.
rekstraraðili | (Niðurstaða (í skilyrtri tjáningu ef staðhæfingar) |
---|---|
x and y | satt ef bæði x og y eru satt |
x or y | satt ef annað hvort x eða y er satt |
not x | ósatt ef x er satt, satt ef x er ósatt |
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
Reyndar skila „x og y“ og „x eða y“ ekki satt eða ósatt, heldur annað hvort x eða y. Svo lengi sem þær eru notaðar í skilyrtum orðatiltækjum í if staðhæfingum er engin þörf á að hafa áhyggjur af þeim, þar sem þær eru annað hvort sannar eða ósattar. Sjá eftirfarandi grein fyrir frekari upplýsingar.
- TENGT:Rökfræðilegir rekstraraðilar Python „og, eða, ekki“ (rökfræðileg samtenging, rökleg sundrun, neitun)
Það er hægt að nota og og eða oftar en einu sinni.
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
Skilyrt tjáning á nýjum línum og mörgum línum
Þegar mörg skilyrt orðatiltæki eru notuð með því að tengja þau við „og“ eða „eða“ og hver lína verður löng, er stundum nauðsynlegt að rjúfa skilyrtu tjáninguna og skrifa hana á margar línur.
Hægt er að gera línuskil með því að nota skástrik eða með því að setja alla línuna innan sviga.
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
Þú getur notað afturskák til að brjóta línu eins oft og þú vilt. Sömuleiðis geturðu brotið línu eins oft innan sviga. Það eru engin inndráttarmörk.
Athugaðu að þetta er tækni sem hægt er að nota hvar sem er í Python kóða, ekki bara í if setningum.