# Loginiai patikrinimo operatoriai
# Apie loginius operatorius
Loginiai operatoriai naudojami norint patikrinti kelias sąlygas vienu metu (o ne iš eilės kaip tai vyktų su elif). Pavyzdžiui:
- Ar vartotojas prisijungęs IR ar vartotojas turi atitinkamą rolę?
- Ar failas egzistuoja failų sistemoje ARBA yra nustatytas atsarginis failas?
- Ar studentas turi užtektinai pinigų ant bilieto IR turi galiojantį LSP?
- Ar skaičius patenka į rėžius (yra didesnis už pradžią IR yra mažesnis už pabaigą)?
- Ar prie produkto yra įrašyta kaina ARBA produktas pažymėtas kaip nemokamas?
# Sintaksė naudojant loginius patikrinimo operatorius
<sąlyga> <operatorius> <sąlyga>
- sąlyga - bet kokia sąlyga, kuri grąžina
TruearbaFalseatsakymą. Pavyzdžius:4 > 2, gražinaTrueatsakymą. - operatorius - iš anksto numatytas operatorius, leidžiantis apjungti kelias sąlygas norimu būdu.
Galima apjungti ir daugiau sąlygų:
<sąlyga> <operatorius> <sąlyga> <operatorius> <sąlyga>
Taip pat, galima su skliaustais nurodyti prioritetus apjungiant sąlygas:
<sąlyga> <operatorius> (<sąlyga> <operatorius> <sąlyga>)
Pirma bus patikrintos sąlygos, esančios tarp skliaustų, o vėliau likusi dalis.
# Loginiai operatoriai
| Operatorius | Aprašymas | Pavyzdys |
|---|---|---|
and | grąžins True jeigu abi sąlygos yra True | x < 5 and x < 10 |
or | grąžins True jeigu bent viena iš sąlygų yra True | x < 5 or x < 4 |
not | grąžins priešingą rezultatą, pvz.: grąžins False jeigu rezultatas yra True | not(x < 5 and x < 10) |
# Operatorius and (ir)
False and False = FalseFalse and True = FalseTrue and False = FalseTrue and True = True
| X | Y | X and Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
# Operatorius or (arba)
False or False = FalseFalse or True = TrueTrue or False = TrueTrue or True = True
| X | Y | X or Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
# Operatorius not (ne)
not(True) = Falsenot(False) = True
| X | not(X) |
|---|---|
| 0 | 1 |
| 1 | 0 |
# Pasitikrinkite
Kaip manote, kam bus lygios (True / False) tokios sąlygos?
(10 > 9) and (9 > 10) = ???(10 > 9) or (9 > 10) = ???not(True) = ???(10 > 9) and (not(9 > 10)) = ???
# Kam bus lygus (10 > 9) and (9 > 10) ?
(10 > 9)busTrue, todėl:True and (9 > 10)(9 > 10)busFalse, todėl:True and False- Naudojant operatorių and visos sąlygos dalys turi būti
True, kad visa sąlyga būtųTrue, todėl galutinis rezultatas:False
Apibendrinus: (10 > 9) and (9 > 10) = False
# Kam bus lygus (10 > 9) or (9 > 10) ?
(10 > 9)busTrue, todėl:True or (9 > 10)(9 > 10)busFalse, todėl:True or False- Naudojant operatorių
orbent viena sąlygos dalis turi būtiTrue, kad visa sąlyga būtųTrue, todėl galutinis rezultatas:True
Apibendrinus: (10 > 9) or (9 > 10) = True
# Kam bus lygus not(True) ?
notdalis reiškia priešingą veiksmą, todėlnot(True)keičiasi į tiesiogFalse
Apibendrinus: not(True) = False
# Kam bus lygus (10 > 9) and (not(9 > 10)) ?
(10 > 9)busTrue, todėl:True and (not(9 > 10))(9 > 10)busFalse, todėl:True and (not(False))(not(False))dalis verčiasi į priešingą jai, t. y. įTrue, todėl:True && True- Naudojant operatorių
andvisos sąlygos dalys turi būtiTrue, kad visa sąlyga būtųTrue, todėl galutinis rezultatas:True
Apibendrinus: (10 > 9) and (not(9 > 10)) = True
# Pavyzdžiai
# Pavyzdys 1
Kodas:
skaicius = int( input('Iveskite skaiciu: ') )
if skaicius > 0 and skaicius <= 100:
print('skaicius patenka tarp reziu [1-100]')
Rezultatas 1:
Iveskite skaiciu: 42
skaicius patenka tarp reziu [1-100]
Rezultatas 2:
Iveskite skaiciu: 136
# Pavyzdys 2
Kodas:
skaicius = int( input('Iveskite skaiciu: ') )
if skaicius > 0 and skaicius <= 100:
print('skaicius patenka tarp reziu [1-100]')
else:
print('skaicius nepatenka tarp nurodytu reziu')
Rezultatas 1:
Iveskite skaiciu: 48
skaicius patenka tarp reziu [1-100]
Rezultatas 2:
Iveskite skaiciu: 879
skaicius nepatenka tarp nurodytu reziu
# Pavyzdys 3
Kodas:
skaicius = 156
if skaicius == 3 or skaicius > 100:
print('skaicius lygus 3 arba didesnis nei 100')
Rezultatas:
skaicius lygus 3 arba didesnis nei 100
# Pavyzdys 4
Kodas:
pradzia = 1
pabaiga = 100
skaicius = int( input('Iveskite skaiciu: ') )
print()
print('reziai [', pradzia, '-', pabaiga, ']')
print('duotas skaicius:', skaicius)
if skaicius >= pradzia and skaicius <= pabaiga:
print('patenka i rezius')
else:
print('nepatenka i rezius')
Rezultatas 1:
Iveskite skaiciu: 458
reziai [ 1 - 100 ]
duotas skaicius: 458
nepatenka i rezius
Rezultatas 2:
Iveskite skaiciu: 34
reziai [ 1 - 100 ]
duotas skaicius: 34
patenka i rezius
# Pavyzdys 5
Kodas:
skaicius = 4
if skaicius > 0 and skaicius % 2 == 0:
print('skaicius teigiamas ir lyginis')
elif skaicius > 0 and skaicius % 3 == 0:
print('skaicius teigiamas ir dalinasi is 3')
else:
print('skaicius neigiamas arba nesidalina nei is 2 nei is 3')
Rezultatas:
skaicius teigiamas ir lyginis
# Pavyzdys 6
Kodas:
kaina = 0
nemokama = True
if kaina > 0 or nemokama == True:
print('preke parduodama')
if kaina > 0 or nemokama:
print('preke parduodama')
Rezultatas:
preke parduodama
preke parduodama
# Pavyzdys 7
Kodas:
if 5 + 3 > 0 or 100 < 100:
print('suveike')
else:
print('nesuveike')
Rezultatas:
suveike
# Pavyzdys 8
Kodas:
if 5 + 3 > 0 and 100 < 100:
print('suveike')
else:
print('nesuveike')
Rezultatas:
nesuveike
# Pavyzdys 9
Kodas:
if 8 * 2 == 16 and (8 + 9 * 2) % 2 == 0:
print('suveike')
else:
print('nesuveike')
Rezultatas:
suveike
# Pavyzdys 10
Kodas:
if True and False or True:
print('suveike')
else:
print('nesuveike')
Rezultatas:
suveike
# Pavyzdys 11
Kodas:
if False and (False or True):
print('suveike')
else:
print('nesuveike')
Rezultatas:
nesuveike
# Pavyzdys 12
Kodas:
ar_yra_bilietas = True
if ar_yra_bilietas:
print('bilietas yra')
else:
print('bilieto nera')
if not(ar_yra_bilietas):
print('bilieto nera')
else:
print('bilietas yra')
Rezultatas:
bilietas yra
bilietas yra
# Pavyzdys 13
Kodas:
if not(5 + 3 > 0):
print('suveike')
else:
print('nesuveike')
Rezultatas:
nesuveike
# Pavyzdys 14
Kodas:
skaicius = 55
if (skaicius > 0 and skaicius < 100) or skaicius % 2 == 0:
print('skaicius patenka i rezius arba dalinasi is 2')
if skaicius > 0 and (skaicius < 100 or skaicius % 2 == 0):
print('skaicius teigiamas ir mazesnis uz 100 arba lyginis')
Rezultatas:
skaicius patenka i rezius arba dalinasi is 2
skaicius teigiamas ir mazesnis uz 100 arba lyginis
# Užduotys
# Užduotis 1
Leiskite vartotojui suvesti tris skaičius. Suraskite kuris iš šių skaičių yra didžiausias.
# Užduotis 2
Leiskite vartotojui suvesti tris skaičius. Suraskite kuris iš šių skaičių yra mažiausias.
# Užduotis 3
Susikurkite trijų egzaminų rezultatų kintamuosius arba paprašykite, kad vartotojas suvestų šias reikšmes. Suraskite pažymių vidurkį. Atlikite šiuos patikrinimus:
- ar gautas vidurkis yra [8-10];
- ar gautas vidurkis yra [5-8);
- ar gautas vidurkis yra < 5.
# Užduotis 4
Susikurkite du skaičius. Patikrinkite (naudojant 4 atskirus if'us):
- ar pirmas skaičius yra didesnis už antrąjį arba yra lygus 0;
- ar antras skaičius yra didesnis už pirmąjį arba yra lygus 5;
- ar pirmas skaičius yra didesnis už antrąjį ir yra lygus 20;
- ar antras skaičius yra didesnis už pirmąjį ir yra mažesnis už 100;