Eleza matawi ya masharti na if taarifa kwenye Python.
- Misingi ya kama kauli (kama, elif, vinginevyo)
- Taja masharti na waendeshaji kulinganisha, nk.
- Taja hali kwa nambari, orodha, nk.
- Bainisha hali nyingi au kanusho na waendeshaji kimantiki (na, au, la)
- Maneno ya masharti kwenye mistari mipya na mistari mingi
Pia kuna opereta wa ternary ambayo inaelezea tawi la masharti katika mstari mmoja. Tazama makala ifuatayo.
Misingi ya kama kauli (kama, elif, vinginevyo)
Aina ya msingi ya taarifa ya if ni kama ifuatavyo
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” inalingana na “mwingine ikiwa” katika C na lugha zingine, na kunaweza kuwa na idadi yoyote ya “elifs”.
Iwapo kuna usemi mmoja tu wa masharti au usindikaji wakati uwongo sio lazima, vizuizi vya “elif” na “vingine” vinaweza kuachwa.
Taja masharti na waendeshaji kulinganisha, nk.
Bainisha hali kwa operesheni inayorejesha aina ya bool (kweli, si kweli), kama vile opereta linganishi.
Waendeshaji wa kulinganisha wa Python ni kama ifuatavyo
mwendeshaji | matokeo |
---|---|
x < y | kweli ikiwa x ni chini ya y |
x <= y | kweli ikiwa x ni chini ya au sawa na y |
x > y | kweli ikiwa x ni kubwa kuliko y |
x >= y | kweli ikiwa x ni kubwa kuliko au sawa na y |
x == y | kweli ikiwa maadili ya x na y ni sawa |
x != y
x is y
x is not y
x in y
x not in y
Mfano. Kwa urahisi, inafafanuliwa kama kazi na taarifa ya 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
Ifuatayo inaweza kuandikwa kwa njia ambayo ni ya kipekee kwa Python. Tazama makala ifuatayo kwa maelezo zaidi.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!
!=
Hapo juu ni ulinganisho wa maadili; kulinganisha vitambulisho vya kitu, tumia zifuatazo
is
is not
Kwa mfano, unapolinganisha nambari kamili na nambari ya sehemu inayoelea, “==” hurejesha kweli ikiwa thamani ni sawa, lakini “ni” inarejesha sivyo kwa sababu ni vitu tofauti.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Pia inawezekana kufanya hali iwe orodha au kamba ina kipengele maalum (tabia).
in
:ni pamoja nanot in
:bila kujumuisha
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
Taja hali kwa nambari, orodha, nk.
Usemi wa masharti wa taarifa ya if unaweza kuwa nambari, orodha, au kitu kingine ambacho si cha aina ya bool (kweli, si kweli).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Katika usemi wa masharti wa Python ikiwa taarifa, vitu vifuatavyo vinachukuliwa kuwa vya uwongo.
- Mara kwa mara hufafanuliwa kuwa uongo:
None
,false
- Sufuri katika aina ya nambari:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Mlolongo tupu au mkusanyiko:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Nambari zinazowakilisha sifuri, mifuatano tupu, orodha, n.k. zinachukuliwa kuwa si za kweli; mengine yote yanachukuliwa kuwa ya kweli.
Jinsi kitu kinahukumiwa kinaweza kukaguliwa na bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Hii inaweza kutumika kwa urahisi kuandika mchakato wakati orodha ni tupu, kwa mfano.
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
Kumbuka kwamba mfuatano wa ‘Uongo’ pia utakuwa wa kweli, kwa sababu kama inavyoonyeshwa katika mfano hapo juu, mfuatano wowote ambao hauna tupu kwenye mfuatano utakuwa wa kweli.’ Ili kubadilisha mfuatano mahususi kama vile ‘Kweli’ au ‘Uongo’ hadi 1,0, tumia strtobool() katika moduli ya distutils.util.
Bainisha hali nyingi au kanusho na waendeshaji kimantiki (na, au, la)
Viendeshaji kimantiki (na, au, au, sivyo) vinaweza kutumika kushughulikia muunganisho wa kimantiki, mtengano wa kimantiki, na ukanushaji wa hali nyingi.
mwendeshaji | (matokeo (katika usemi wa masharti wa kauli if) |
---|---|
x and y | kweli ikiwa zote mbili x na y ni kweli |
x or y | kweli ikiwa ama x au y ni kweli |
not x | uongo ikiwa x ni kweli, kweli ikiwa x ni uongo |
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
Kwa kweli, “x na y” na “x au y” hazirudishi Kweli au Si kweli, lakini ama x au y. Alimradi zinatumika katika misemo ya masharti katika ikiwa kauli, hakuna haja ya kuwa na wasiwasi kuzihusu, kwa kuwa zinatathmini ama Kweli au Si kweli. Tazama makala ifuatayo kwa maelezo zaidi.
- INAYOHUSIANA:Waendeshaji wa kimantiki wa Python “na, au, sivyo” (kiunganishi cha kimantiki, mgawanyiko wa kimantiki, ukanushaji)
Inawezekana kutumia na na au zaidi ya mara moja.
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
Maneno ya masharti kwenye mistari mipya na mistari mingi
Wakati maneno mengi ya masharti yanatumiwa kwa kuunganisha na “na” au “au” na kila mstari unakuwa mrefu, wakati mwingine ni muhimu kuvunja usemi wa masharti na kuandika kwenye mistari mingi.
Uvunjaji wa mstari unaweza kufanywa kwa kutumia backslash au kwa kuifunga mstari mzima kwenye mabano.
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
Unaweza kutumia backslash kuvunja mstari mara nyingi kama wewe kama. Vivyo hivyo, unaweza kuvunja mstari mara kadhaa ndani ya mabano. Hakuna kikomo cha ujongezaji.
Kumbuka kuwa hii ni mbinu ambayo inaweza kutumika mahali popote kwenye nambari ya Python, sio tu ikiwa taarifa.