Tingimuslause
Tingimus- ehk valikulaused võimaldavad etteantud tingimuse alusel programmikoodi üht või mitu rida (koodi plokki) valikuliselt täita.
Tingimuslause sisu/loogikat aitab tajuda järgmine reaaleluline lausend: kui vihma sajab, siis võta vihmavari kaasa. Programmeerimises on tingimuseks loogikaavaldis.
Lihtsaimad loogikaavaldised on tõeväärtused (True või False) ja (kahe operandiga) võrdlused (nt a > b või c == d).
Tingimuslausete esitamisel kasutatakse kindlat tekstilist struktuuri ehk süntaksit, mis algab tüüpiliselt võtmesõnaga if
.
Tingimuslaused on tihedalt seotud tõeväärtuste ja loogikatehetega. Sellepärast on soovitatav enne tingimuslausetega tutvumist lugeda peatükki Tõeväärtused ja loogikatehted. Vaata ka alljärgnevat ülevaatlikku videot tingimuslausetest.
Tingimused
Loogikaavaldis on tingimuslause tingimus ehk condition.
True
ja False
abil saab juhtida tingimuslauseid.
Koodiplokk
Tingimuslauses kasutatakse koolonit ja kogu sisu peale tingimust on eristatud taandega. PyCharm ja teised IDE-d lisavad taanded automaatselt, kuid käsitsi saab taanet lisada Tab abil ja seda eemaldada Shift+Tab, kui kursor on rea alguses.
Taane on osa Pythoni süntaksist ja seda ei tohi ära jätta. Kogu koodist ei pea siin aru saama, kuid eesmärk on jälgida taanet.
Võtmesõnu if
-elif
-else
tutvustatakse allpool.
number = 4
if number < 10: # The if statement is executed because 4 is smaller than 10.
print("The number is too small, it should be increased.")
if number < 5: # The if statement is executed because 4 is smaller than 5.
number += 2 # number = number + 2
print("The number was increased by two.")
else:
number += 1
print("The number was increased by one")
else:
print("The number is big enough.")
print(f"The number is {number} now.")
# Output:
# The number is too small, it should be increased.
# The number was increased by two.
# The number is 6 now.
Võtmesõna if
Kõige lihtsam tingimuslause on moodustatud if
tingimusest.
Koodiplokk käivitub siis, kui if
tingimuses on tõeväärtus True
.
Kui tõeväärtuseks tuleb False
, siis jääb koodiplokk vahele.
Koodiplokk käivitub, sest tingimus on True
.
# no pec
# You can also edit the code
name = "Alice"
if name == "Alice": # The if statement is executed because (variable) name equals to "Alice".
print("Hi", name) # --> "Hi Alice"
Koodiplokk ei käivitu, sest tingimus on False
.
# no pec
animal = "cat"
if animal == "zebra": # The if statement is not executed because (variable) animal does not equal to "zebra".
print("Hello")
if
voodiagrammina:

Võtmesõna else
Võtmesõna else
on valikuline tingimus, mis lisatakse if
järele
ja sellele järgnev plokk käivitatakse vaid siis, kui if
ja kõik järgnevad
(kui on) elif
tingimuslausete tõeväärtused on False
.
name = "Tim"
if name == "Tim": # The if statement is executed because the condition is True.
print("Hello", name)
else:
print("Hello, Stranger")
# Output:
# Hello Tim
# no pec
age = 62
if age < 20: # Condition is False.
print("You are too young.")
elif 20 <= age <= 60: # Condition is False.
print("You may proceed.")
else: # The else statement is executed because previous conditions were False.
print("You are too old.")
# Output:
# You are too old.
Võtmesõna elif
Kui soovitakse, et üks mitmest tingimustest käivituks, siis on selleks sobiv kasutatada võtmesõna elif
. See on lühike vorm koodist else: if
.
Kui if
ei käivitu, siis kontrollitakse järgmist elif
tingimust ja nii kuni üks neist on True
. Käivituda saab ainult üks plokk.
number = 2
if number > 3:
print("The number is larger than 3")
elif number <= 3: # The elif statement is executed.
print("The number is smaller or equal to 3")
# Output:
# The number is smaller or equal to 3
Kui üks tingimustest on True
, siis edasi ei vaadata.
number = 2
if number > 3:
print("The number is larger than 3")
elif number <= 3:
print("The number is smaller or equal to 3")
elif number == 2:
print("The number is 2")
elif number >= 0:
print("The number is positive")
# Output:
# The number is smaller or equal to 3
Võrdluseks: kasutades ainult if
tingimusi.
number = 2
if number > 3:
print("The number is larger than 3")
if number <= 3:
print("The number is smaller or equal to 3")
if number == 2:
print("The number is 2")
if number >= 0:
print("The number is positive")
# Output:
# The number is larger than 3
# The number is 2
# The number is positive
if
-elif
-else
Võtmesõna pass
on vajalik, kui süntaks nõuab käsku, kuid sisu on tühi.
condition_0, condition_1, condition_2 = False, False, False
if condition_0:
pass
# Executed if condition_0 is True.
elif condition_1:
pass
# Executed if condition_0 is False and condition_1 is True.
elif condition_2:
pass
# Executed if condition_0 is False and condition_1 is False and condition_2 is True.
else:
pass
# Executed if all previous statements are False.
Stiil
Tihti annab tingimuslauseid lihtustada. Parandame ühe lihtsa funktsiooni (Funktsiooni mõiste ja kasutamine) stiili.
def is_even(n):
even = (n % 2 == 0)
if even == True:
return True
else:
return False
Kõigepealt võib lihtsutada avaldist even == True
.
Piisab kui kirjutada lihtsalt even
, sest muidu me kontrollime True == True
või False == True
ehk tulemus sõltubki even
tõeväärtusest.
def is_even(n):
even = (n % 2 == 0)
if even:
return True
else:
return False
Kui natuke mõelda, siis saab alljärgnevat tingimust funktsioonides tagastamisel lihtsustada.
if (condition):
return True
else:
return False
# Return value correlates with condition value, so we can simplify:
return condition
Meie näite puhul siis:
def is_even(n):
even = (n % 2 == 0)
return even
Lisame ka korraliku Docstringi ja muutuja even
ei anna meile hetkel palju juurde, seega võib selle eemaldada.
def is_even(n):
"""
Checks if the number is even.
:param n: number to check
:return: True if even, else False
"""
return n % 2 == 0
Saime esialgsega võrreldes palju puhtama ja loetavama koodi.
"Tühi" ja "mittetühi" objekt
Tip
Pythonis on kõik "tühi" tõeväärtusega False
ja "mittetühi" True
.
if
ehk bool kontekstis on Pythonis False väärtusega:
False
None
tühjad sõned -
''
and""
tühjad konteinerid - tühi
list
, tühidict
, tühituple
, jnenumbrilised väärtused, mis on võrdsed nulliga -
0
,0.0
,-0.0
pythoni objektid, mis implementeerivad __bool__ tagastama
False
või0
pythoni objektid, mis ei implementeeri __bool__, kuid __len__ tagastab
0
Kõike muud peetakse pythonis if
juures True
-ks.
if not []: # [] -> False
print("List is empty.")
if [1, 2, 3]: # [1, 2, 3] -> True
print("List has elements.")
>>> bool({})
False
>>> bool({"a": 2})
True
>>> bool(1,)
True
>>> bool(())
False
>>> bool('')
False
Alljärgnevat on hea teada, kuid sellise koodi kirjutamine võib vähendada koodi loetavust.
# python
if 100:
print("True")
if not 0:
print("True")
# Output:
# True
# True
>>> bool(0)
False
>>> bool(0.0)
False
>>> bool(-0.0)
False
>>> bool(1)
True
>>> bool(555)
True
Tingimuslause ühel real
Pythonis on olemas ternary operator ehk tingimuslauseid on võimalik kirjutada ühele reale.
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
Esimeses näites on tingimuslause kirjutatud ühele reale ja teises näites mitmele reale:
# <value_when_true> if <condition> else <value_when_false>
fruit = 'Melon'
is_melon = True if fruit == 'Melon' else False
print(is_melon) # --> True
vs
fruit = 'Melon'
is_melon = False
if fruit == 'Melon':
is_melon = True
print(is_melon) # --> True
Tingimuslause tingimuslause sees
Tingimuslauseid võib olla ka teise tingimuslause sees.
# no pec
number = 8
if number > 5:
print("The number is larger than 5")
if number > 10:
print("The number is larger than 10")
else:
print("The number is smaller than 10")
if number == 8:
print("The number is 8")
# Output:
# The number is larger than 5
# The number is smaller than 10
# The number is 8
Näited
Tingimuslausetega koodijupp, mis prindib konsooli infot sisestatud numbri kohta.
number = float(input("Enter a number: "))
if number >= 0:
if number == 0:
print("The number is zero.")
else:
print("The number is positive.")
else:
print("The number is negative.")
Tingimuslausetega funktsioon (Funktsiooni mõiste ja kasutamine), mis esitab kuu sõnena.
def month(n):
"""
Returns the n-th month of the year as a string
:param n: month number
:return: month as string
"""
if n == 1:
return "January"
elif n == 2:
return "February"
elif n == 3:
return "March"
elif n == 4:
return "April"
elif n == 5:
return "May"
elif n == 6:
return "June"
elif n == 7:
return "July"
elif n == 8:
return "August"
elif n == 9:
return "September"
elif n == 10:
return "October"
elif n == 11:
return "November"
elif n == 12:
return "December"
else:
return "Incorrect month number."
print(month(8)) # --> August
print(month(12)) # --> December
print(month(0)) # --> Incorrect month number.