Nagbibigay ang Python ng mga lohikal na operator upang magsagawa ng mga lohikal (Boolean) na operasyon.(and
,or
,not
)
Ito ay ginagamit upang ilarawan ang kaugnayan sa pagitan ng maraming kundisyon sa isang if statement.
Inilalarawan ng seksyong ito ang mga sumusunod.
- interseksyon:
and
- lohikal na idagdag:
or
- pagtanggi:
not
and
,or
,not
Pangunahing operator
Bilang karagdagan, ang mga sumusunod na punto ay ipinaliwanag bilang pag-iingat.
- Mga lohikal na operator para sa mga bagay na may uri maliban sa bool
and
,or
Ang mga return value na ito ay hindi kinakailangang uri ng bool.- Maikling circuit (pagsusuri ng short circuit)
interseksyon:and
at ibinabalik ang lohikal na produkto ng dalawang halaga.
print(True and True)
# True
print(True and False)
# False
print(False and True)
# False
print(False and False)
# False
Sa katunayan, ito ay madalas na ginagamit hindi para sa totoo o mali, ngunit para sa mga kondisyong expression na gumagamit ng mga operator ng paghahambing. Para sa iyong impormasyon, ang mga operator ng paghahambing ay ang mga sumusunod.
<
>
a = 10
print(0 < a)
# True
print(a < 100)
# True
print(0 < a and a < 100)
# True
at maaaring pagsama-samahin gaya ng sumusunod.
print(0 < a < 100)
# True
lohikal na idagdag:or
o ibinabalik ang lohikal na OR ng dalawang halaga.
print(True or True)
# True
print(True or False)
# True
print(False or True)
# True
print(False or False)
# False
pagtanggi:not
hindi” ay nagbabalik ng negasyon ng halaga; ang totoo at mali ay binabaligtad.
print(not True)
# False
print(not False)
# True
and,or,notPangunahing operator
Ang pagkakasunud-sunod ng precedence ng mga lohikal na operator na ito ay ang mga sumusunod: hindi ang pinakamataas.
not
and
or
Sa sumusunod na sample code, ang expression sa itaas ay binibigyang-kahulugan na parang ito ang nasa ibaba. Dahil walang problema sa mga dagdag na panaklong, maaaring mas madaling ilarawan ang mga ito sa mga kaso tulad ng halimbawang ito.
print(True or True and False)
# True
print(True or (True and False))
# True
Kung gusto mong gumana o bago at, gumamit ng mga panaklong().
print((True or True) and False)
# False
<
,>
Ang mga operator ng paghahambing na ito ay may mas mataas na priyoridad kaysa hindi. Samakatuwid, ang mga panaklong ay hindi kinakailangan para sa bawat operasyon ng paghahambing, tulad ng nangyari sa halimbawa sa itaas.
print(0 < a and a < 100)
# True
Tingnan ang opisyal na dokumentasyon sa ibaba para sa isang buod ng operator precedence sa Python.
Mga lohikal na operator para sa mga bagay na may uri maliban sa bool
With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.
Ang mga sumusunod na bagay ay itinuturing na mali sa mga lohikal na operasyon ng Python.
- Tinukoy na false ang mga constant:
None
,false
- Zero sa mga uri ng numero:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Walang laman na pagkakasunod-sunod o koleksyon:
'
,()
,[]
,{}
,set()
,range(0)
Ang lahat ng iba pang mga halaga ay itinuturing na totoo.
Ang function na bool() ay maaaring gamitin upang makuha ang boolean na halaga ng isang bagay. Tandaan na ang string na ‘0’ o ‘False’ ay itinuturing na totoo.
print(bool(10))
# True
print(bool(0))
# False
print(bool(''))
# False
print(bool('0'))
# True
print(bool('False'))
# True
print(bool([]))
# False
print(bool([False]))
# True
Upang pangasiwaan ang ‘0’ o ‘false’ sa isang string bilang false, gumamit ng distutils.util.strtobool().
and,orAng mga return value na ito ay hindi kinakailangang uri ng bool.
Narito ang isang halimbawa ng isang bagay maliban sa isang uri ng bool, na nagpapakita ng resulta ng bawat operator sa isang numeric na halaga.
x = 10 # True
y = 0 # False
print(x and y)
# 0
print(x or y)
# 10
print(not x)
# False
Tulad ng makikita mo mula sa halimbawa sa itaas, at at o sa Python ay hindi nagbabalik ng true o false ng uri ng bool, ngunit ibalik ang halaga sa kaliwa o kanan depende sa kung ito ay totoo o mali. Ang halimbawa ay numeric, ngunit ang parehong naaangkop sa iba pang mga uri tulad ng mga string at listahan. Hindi sinasadya, hindi nagbabalik ng true o false ng uri ng bool.
Ang mga kahulugan ng mga return value ng at at o ay ang mga sumusunod.
The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.
The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.
6.11. Boolean operations — Expressions — Python 3.10.1 Documentation
Kapag magkahiwalay na totoo at mali ang mga value ng kaliwa at kanang expression, madaling maunawaan ang mga return value. Sa kabilang banda, kung pareho ang totoo o pareho ang mali, ang halaga ng pagbabalik ay mag-iiba depende sa pagkakasunud-sunod.
Kung gagamitin mo ito bilang conditional expression sa isang if statement, atbp., ang resulta ay hinuhusgahan bilang boolean value at naproseso, kaya hindi mo kailangang mag-alala tungkol dito, ngunit kung gagamitin mo ang return value para sa karagdagang pagproseso, ikaw kailangang mag-ingat.
x = 10 # True
y = 100 # True
print(x and y)
# 100
print(y and x)
# 10
print(x or y)
# 10
print(y or x)
# 100
x = 0 # False
y = 0.0 # False
print(x and y)
# 0
print(y and x)
# 0.0
print(x or y)
# 0.0
print(y or x)
# 0
print(bool(x and y))
# False
Kung gusto mong ituring ito bilang totoo o mali, maaari mong gawin tulad ng sa huling halimbawa.bool(x and y)
Ang mga return value ng at at o ay ibinubuod sa talahanayan sa ibaba.
x | y | x and y | x or y |
---|---|---|---|
true | false | y | x |
false | true | x | y |
true | true | y | x |
false | false | x | y |
Maikling circuit (pagsusuri ng short circuit)
Tulad ng makikita mo mula sa talahanayan sa itaas, kung ang x ay mali sa x at y, o kung ang x ay totoo sa x o y, ang ibabalik na halaga ay x anuman ang halaga ng y.
Sa ganitong kaso, ang y ay hindi sinusuri.
and
,or
Tandaan na kung tatawag ka ng function o paraan sa kanang bahagi ng mga prosesong ito para magsagawa ng ilang pagproseso, maaaring hindi maisagawa ang proseso depende sa resulta sa kaliwang bahagi.
def test():
print('function is called')
return True
print(True and test())
# function is called
# True
print(False and test())
# False
print(True or test())
# True
print(False or test())
# function is called
# True