02 Conditionals: if, elif, else, match, nested if

image.png Խուստուփ, լուսանկարի հղումը Հեղինակ՝ Հայկ Բարսեղյան

Open In Colab (գուցե մի թեթև հին լինի վերսիան)

Ախ if տեսնեմ_օրերից_մի_օր:
(c) ժողովուրդ

if
(c) Pink Floyd

📌 Նկարագիր

📚 Ամբողջական նյութը

Սովորում ենք ինչպես աշխատացնել տարբեր ծրագրեր կախված որոշ պայմաններից։ Նախ ծանոթանում ենք boolean տվյալների տեսակին (True, False արժեքները ընդունող), ապա որոշ համեմատության գործողություններին (==, >, is, …), հետո ծանոթանում ենք if (եթե) բլոկին ու իրա հետ եկող elif, else կտորներին։ Վերջում նայում ենք ներդրված պայմանները (if-ի մեջ if) ու համեմատաբար նոր գրելաձև match-ով։

Գործնական դասերին (հիմիկվա, ու 2023-ի) նայում ենք լրիվ տարբեր խնդիրներ, նենց որ կարող եք երկու դասն էլ նայել։ Նաև հասանելի ա տնայինների քննարկման տեսագրություն 2023-ից։

📺 Տեսանյութեր

  1. Տեսադասը
  2. Գործնական դաս
  3. Տնայինների քննարկում (2023)

2023 1. Դասախոսությունը (նյութը նույնն ա, դասը անցկացնողները տարբեր) 2. Գործնականը (խնդիրները լրիվ տարբեր են) 3. Տնայինների քննարկում

🏡Տնային

  1. Profound բաժին 5 (Պայմաններ) - լրիվ
  2. Profound բաժին 7 (Ներդրված պայմաններ) - լրիվ
  3. Profound բաժին 9 (Փոփոխականներ և տիպեր) - 1 - 10 (ներառյալ)

Տնայինի հետ կապված նշումները ֆայլի վերջում են

📚 Նյութը

Bool տվյալների տեսակ

The name “Boolean” comes from the mathematician George Boole

a = True
b = False

print(type(a))
print(a)
print(b)
<class 'bool'>
True
False

համեմատության գործողություններ

Օպերատոր նկարագիր
== True, եթե հավասար են
!= True, եթե հավասար չեն
< True, եթե ավելի փոքրա առաջինը երկորդից
> True, եթե ավելի մեծա առաջինը երկորդից
<= True, եթե առաջինը ավելի փոքրա կամ հավասար երկորդից
>= True, եթե առաջինը ավելի մեծա կամ հավասար երկորդից
is True, եթե նույն օբյեկտ են (հեսա կբացատրեմ :) )

Հակառակ դեպքում՝ False

a = 42
b = 509
print(a, "==", b, a==b)
print(a, "!=", b, a != b)
42 == 509 False
42 != 509 True
print(a, ">", b, a>b)
print(a, "<", b, a<b)
42 > 509 False
42 < 509 True
print(a, ">=", b, a >= b )
print(a, "<=", b, a<=b)
42 >= 509 False
42 <= 509 True
print(a, 'is', b, a is b)
11 is 509 False

is-ը մանրամասն

\(-2^8\)-ից \(2^8\) integer-ների դեպքում նրբություն կա որը դասի ժամանակ չեմ նշում, կարող եք կարդալ այստեղ

c = 465
d = 465

print(c, '==', d, c == d)
print(c, 'is', d, c is d)
465 == 465 True
465 is 465 False
e = c
print(e, 'is', c, e is c)
465 is 465 True
print(id(c))
print(id(d))
print(id(e))
140465260069104
140465260070864
140465260069104
print(c is d)
# ն նույննա ինչ
print(id(c) == id(d))
False
False

Բուլյան տրամաբանություն

and (&), or (|), not

# and (&)

print(True and True) # True and True and True
print(True & False) # print(True & False), & - shift 7
print(False and False and False)
True
False
False
# or (|)
print(True or True)
print(True | False) # print(True | False), | - shift + \
print(False or False)
True
True
False
# not
print(not True)
print(not False)
False
True

Փոխանցականություն (transitivity)

a = 14

print(a > 10)
print(a < 20)

print(a > 10 and a < 20)
print(10 < a and a < 20)

print(10 < a < 20) # 10 < a and a < 20
True
True
True
True
True
print(10 < a < 20)
True
a = 11
print(10 == a < 13) # 10 == a and a < 13
# ի՞նչ կտա
False

Վարժություններ

print(not 5 != 3)
False
print((not 4 == 4) or (4 < 6))
True
print((5 < 5 and 5 > 3) or 4 > 4)
False

Բուլյանները ինչպես 1, 0

print(True == 2)
print(False == 0)
False
True
print(True - True)
0
print(True / False)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Input In [17], in <cell line: 1>()
----> 1 print(True / False)

ZeroDivisionError: division by zero
print(True * 4 - False + 3 * False)
4

Bool()

False են False ից ու 0 ից բացի նաև՝

print(int(3.14))
print(bool(3.14))
3
True
bool(0)
False
bool(0.0)
False
bool('')
False
bool([])
bool({})
bool(())
False
bool(None)
False

Մնացած ամենինչ True

print(bool(3))
print(bool(3) and True)
True
True
print(bool('պանիր'))
True

If (եթե) պայման

Հաճախ մեր գործողությունները տարբեր են, կախված որոշ պայմաններից,

Օրինակ շոր հագնելու ֆունկցիան կախվածա եղանակից՝

եթե ցուրտա
    տաք շոր հագնել

մնացած դեպքերում
    թեթև հագնվել
is_cold = False

if is_cold:
    print(1)
    print('տաք հագնվի, չմրսես բալա ջան')

print(2)

# tab = q-ից ձախ
# indentation

# if x
# {
#     ...
# }
2
is_cold = False

if is_cold == True: # կարանք չգրենք == True; bool(...) == True 
    print('մտանք if')
    print('տաք հագնվի, չմրսես բալա ջան')
else:
    print('մտանք else')

print(2)
մտանք else
2
if bool(3) == True:
    print(1)

if bool(3):
    print(2)

if 3: # bool(3)
    print(3)


if 0: # bool(0)
    print(4)
1
2
3
is_cold = False

if is_cold: # bool(is_cold) == True
    print('տաք հագնվի, չմրսես բալա ջան')
else:
    print("տաք է")

print(2)
տաք է
2

Մի քանի պայման and, not, or-ով

vazelu_enq = True
curta = False

if (not curta) and vazelu_enq:
    print('բոթաս')
    print(3)
else:
    print('կոշիկ')

print(4)
բոթաս
3

elif (elif)

Հնարավորա այնպես լինի որ տարբերակները երկուսից շատ լինեն՝

  • եթե շաբաթա՝ գնում ենք շաբաթօրյակի,
  • եթե կիրակի՝ գնում ենք չինգաչունգի չեմպիոնատի,
  • եթե այլ օրա գնում ենք դասի
day = 'շաբաթ' # or = "շաբաթ"

if day == 'շաբաթ':
    print('գնացինք շաբաթօրյակ')
else:
    print('չենք գնում շաբաթօրյակի, բա ու՞ր ենք գնում՝ պարզ չի')
գնացինք շաբաթօրյակ
day = 'կիրակի'

if day == 'շաբաթ':
    print('գնացինք շաբաթօրյակ')
else:
    if day == 'կիրակի': # else if, եթե վերևի if-ը չի ու մեր ստեղ գրած պայմաննա
        print('գնացինք չինգաչունգ խաղանք')
    else: # axh orer
        print('գնացինք դասի :( ')
        
գնացինք չինգաչունգ խաղանք
day = 'շաբաթ'

if day == 'շաբաթ':
    print('գնացինք շաբաթօրյակ')
elif day == 'կիրակի': # else if, եթե վերևի if-ը չի ու մեր ստեղ գրած պայմաննա
    print('գնացինք չինգաչունգ խաղանք')
else:
    print('գնացինք դասի :( ')
գնացինք դասի :( 
day = 'շաբաթ'
day = "կիրակի"
day = "werxtyno"

if day == 'շաբաթ':
    print('գնացինք շաբաթօրյակ')
elif day == 'կիրակի': # else if, եթե վերևի if-ը չի ու մեր ստեղ գրած պայմաննա
    print('գնացինք չինգաչունգ խաղանք')
else:
    print('գնացինք դասի :( ')
գնացինք դասի :( 
day = 'շաբաթ'
# day = "կիրակի"
# day = "werxtyno"

if day == 'շաբաթ':
    print('գնացինք շաբաթօրյակ')
if day == 'կիրակի': # else if, եթե վերևի if-ը չի ու մեր ստեղ գրած պայմաննա
    print('գնացինք չինգաչունգ խաղանք')
else:
    print('գնացինք դասի :( ')

Օրինակներ (ու լրացուցիչ բաներ)

Անիկդոտ

Ծրագրավորղը գնումա խանութ, կինը ասումա՝

2 հատ հաց առ, եթե ձու լինի՝ 10 հատ վերցրու,

էս մարդը 10 հատ հաց առած գալիսա տուն, կինը հարցնումա ես ի՞նչ ես արել, ասումա դե ձու ունեին

dzu_ka = False

if dzu_ka:
    print('10 հաց')
else:
    print("2 հաց")
2 հաց

պարտադիր չի else գրենք, կարա մենակ if լինի

tariq = 20
if tariq > 18:
    print('Ինձ մի հատ գինի խնդրում եմ')

if tariq % 10 == 0:
    print("Կլոր տարիք")
Ինձ մի հատ գինի խնդրում եմ
Կլոր տարիք

pass

tariq = 17

if tariq > 18:
    pass
else:
    print("ջուր կուզես")
ջուր կուզես

կարա մի քանի elif լինի

apranq = 'ձմերուկ'

if apranq == 'պանիր':
    gin = 2
elif apranq == 'ձմերուկ':
    gin = 4
elif apranq == 'ժարիտ':
    gin = 1_000_000_000 # _ կարանք դնենք
else:
    gin = 'եսիմ'

print(gin)
եսիմ

ինչի՞ ենք elif օգտագործում եթե կարանք if գրենք

apranq = 'ձմերուկ'

if apranq == 'պանիր':
    gin = 2
elif apranq == 'ձմերուկ':
    gin = 4
# print(gin)
elif apranq == 'ժարիտ':
    gin = 100_000_000_000_000 # _ կարանք դնենք
else:
    gin = 'եսիմ'

print(gin)
4
a = 509

if a > 10:
    print("մեծա 10-ից")
if a > 5:
    print("մեծա 5-ից")
if a > 1:
    print("մեծա 1-ից")
մեծա 10-ից
մեծա 5-ից
մեծա 1-ից
a = 62

if a > 10:
    print("մեծա 10-ից")
elif a > 5:
    print("մեծա 5-ից")
elif a > 1: # եթե վերևինը ճիշտ եղավ, սա էլ չի աշխատի
    print("մեծա 1-ից")
մեծա 10-ից

if-ի մեջ if (ներդրված if-եր)

tariq = 17
hastatutun = "509 դպրոց"
# nested if
if tariq > 18: # pass գրում ենք եթե ուզում ենք ոչ մի բան չանել այդ դեպքում
    if hastatutun == "ԵՊՀ":
        print("ես էլ")
else:
    if hastatutun == "509 դպրոց":
        print("ես էլ եմ էդ")
    else:
        print("բա որտեղ ա էդ")

# if (tariq > 18) and hastatun == "::
#     ...
# elif tariq < 18 an d
ես էլ եմ էդ
անչափահասին -> ջուր
գինի չսիրողին -> whiskey
գինի ու պանիր -> գինի ու պանիր
գինի սիրում պանիր չի սիրում -> մենակ գինի
tariq = 18
panir_sirum = True
gini_sirum = False

if tariq < 18:
    print("Jur")
elif not gini_sirum:
    print("whiskey")
elif (tariq >= 18) and gini_sirum and panir_sirum:
    print("Gini u panir")
elif (tariq >= 18) and gini_sirum and (not panir_sirum):
    print("Gini")
whiskey
tariq = 18
panir_sirum = True
gini_sirum = False

if tariq >= 18:
    if gini_sirum:
        if panir_sirum:
            print("gini u panir")
        else:
            print("gini")
    else:
        print("Whiskey")
else:
    print("Jur")
Whiskey
tariq = 16
gini_sirum = True
panir_sirum = True

if tariq < 18:
    print("ջուր")
else:
    if gini_sirum and panir_sirum:
        print("գինի ու պանիր")
    elif gini_sirum:
        print("գինի")
    else:
        print("whiskey")
ջուր
tariq = 16
gini_sirum = True
panir_sirum = True

if tariq < 18:
    print("ջուր")
else:
    if gini_sirum:
        if panir_sirum:
            print("գինի ու պանիր")
        else:
            print("gini")
    else:
        print("whiskey")
ջուր
# 2 * 2 * 2 = 8


tariq = 16
gini_sirum = True
panir_sirum = True


if tariq > 18:
    if gini_sirum:
        if panir_sirum:
            print("գինի ու պանիր")
        else:
            print("gini")
    else:
        print("whiskey")
else:
    print("ջուր")
ջուր

Match

apranq = 'ձմերուկ'

if apranq == 'պանիր':
    gin = 2
elif apranq == 'ձմերուկ':
    gin = 4
elif apranq == 'ժարիտ':
    gin = 1_000_000_000 # _ կարանք դնենք
else:
    gin = 'եսիմ'
    
print(gin)
4
apranq = "ձմերուկ"
match apranq: # switch, case
    case "պանիր": # if apranq == "պանիր"
        gin = 2
    case "ձմերուկ":
        gin = 4
    case "ժարիտ":
        gin = 1_000_000_000
    case _: # _ -> else
        gin = "եսիմ"

print(gin)
4

🛠️ Գործնական

Տարբեր խնդիրներ ենք նայում երկու վիդեոներում

BMI calculator

Read two floats, weight (kg) and height (m), compute the Body Mass Index:

BMI = weight / (height ** 2)

Then categorize:

  • BMI < 18.5 → Underweight
  • 18.5 ≤ BMI < 25 → Normal
  • 25 ≤ BMI < 30 → Overweight
  • BMI ≥ 30 → Obese

Don’t forget to check that the input is valid (positive numbers).

Input Output
70 1.75 Normal
-70 1.75 Invalid input
weight = float(input("Weight: "))
height = float(input("Height: "))

if (weight <= 0) or (height <= 0):    
    print("Invalid input")
else:
    BMI = weight / (height ** 2)
    print("BMI is", BMI)
    if BMI < 18.5:
        print("Underweight")
    elif BMI < 25: 
        print("Normal")
    elif BMI < 30:
        print("Overweight")
    else:
        print("Obese")
    
BMI is 0.4444444444444444
Underweight

Discounts

Purchase Amount Discount
Up to $100 No discount
$100–$500 5%
Above $500 10%

Additionally, if the user has a “premium” membership, they get an extra 5% on top of the above.

Example
Input: amount=600, premium=True
Output: 510.0

Դասին գրված կոդ

amount = float(input("Amount"))
premium = input("Premium (yes/no)")

# himnakan 
if amount < 100:
    zexch = 0
elif amount <= 500:
    zexch = 0.05
else:
    zexch = 0.1

print("Հիմնական զեղչ։", zexch)
# ծանոթ 
if (premium == "yes") or (premium == "Yes"):
    print("յաա, են ում ․․")
    zexch += 0.05
    

print("ԶԵղչ։", zexch)
print(amount * (1 - zexch))
    
Հիմնական զեղչ։ 0.1
յաա, են ում ․․
ԶԵղչ։ 0.15000000000000002
450.5
print(bool(False))
print(bool("False"))
False
True

GPT-ի հետ շփ-թփ արած կոդ

amount = float(input("Enter purchase amount: "))
membership = input("Premium membership? (yes/no): ")


if amount <= 100:
    discount = 0
elif amount <= 500:
    discount = 0.05
else:
    discount = 0.10

if membership == "yes":
    discount += 0.05

# Compute final price
final_price = amount * (1 - discount)

# Print result
print("Final price:" , final_price)

Smart Thermostat

The thermostat sets heating or cooling mode based on:

Current temp (float) and desired (float).

  • If temp < desired - 2 → “Heating”
  • If temp > desired + 2 → “Cooling”
  • Otherwise → “Standby”.

BUT if the user is “away” (bool), widen the deadband to ±5° before switching off.

Example Input: temp=22.0, desired=25.0, away=True Output: Heating












temp = float(input("Current temperature (°C): "))
desired = float(input("Desired temperature (°C): "))
away = input("Away? (yes/no): ")

if away == "yes":
    deviation = 5
else:
    deviation = 2

if temp <  desired - deviation:
    print("Heating")
elif temp > desired + deviation:
    print("Cooling")
else:
    print("Standby")
Standby

Շախմատային ձի

Profound 8.6

x1, y1 = int(input()), int(input())
x2, y2 = int(input()), int(input())

xdist = x1 - x2
ydist = y1 - y2

if (xdist == 1 or xdist == -1) and (ydist == 2 or ydist == -2):
    print("Yes")
elif (xdist == 2 or xdist == -2) and (ydist == 1 or ydist == -1):
    print("Yes")
else:
    print("No")

🏡Տնային

Հիմնական տնային

  1. Profound բաժին 5 (Պայմաններ) - լրիվ
  2. Profound բաժին 7 (Ներդրված պայմաններ) - լրիվ
  3. Profound բաժին 9 (Փոփոխականներ և տիպեր) - 1 - 10 (ներառյալ)

Նշումներ

  • Բաժին 5-ը գրելիս կարելի ա օգտվել մենակ if-ից ու else-ից (elif ենթադրեք որ չգիտեք)
  • Դժվար պայմաններ (7.14)-ը լուծելիս եթե շատ երկար լինի Ձեր լուծումը, մի հատ էլ հետո մտածեք ոնց կարաք ավելի կարճ ու կոկիկ դարձնեք bool փոփոխականներ սահմանելով
  • Եթե կուզեք կարաք Բաժին 9-ը փորձեք մինչև վերջ անել՝ հաջորդ տնայինը դա ա լինելու

🎲 2

Flag Counter