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)
print(a, "==", b, a==b)
print(a, "!=", b, a != b)
False
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)
42 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))
2000145872624
2000145870256
2000145872624
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)

# print(a > 5 and b < 3)
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) # ~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)
Cell In[25], 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

Ներքևից վերև ա կարևորությունը (որոշ գործողություններ չենք անցել)

Operators Meaning
() Parentheses
** Exponent
+x, -x, ~x Unary plus, Unary minus, Bitwise NOT
*, /, //, % Multiplication, Division, Floor division, Modulus
+, - Addition, Subtraction
<<, >> Bitwise shift operators
& Bitwise AND
^ Bitwise XOR
ուղիղ գիծ (տես ներևում) Bitwise OR
==, !=, >, >=, <, <=, is, is not, in, not in Comparisons, Identity, Membership operators
not Logical NOT
and Logical AND
or Logical OR

Ուղիղ գիծ - |

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

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

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

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

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

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

print(2)

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

# if x
# {
#     ...
# }
1
տաք հագնվի, չմրսես բալա ջան
2
is_cold = True

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

print(2)
մտանք if
տաք հագնվի, չմրսես բալա ջան
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
4

elif (elif)

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

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

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

if day == 'շաբաթ':
    print('գնացինք շաբաթօրյակ')
else:
    if day == 'կիրակի': # else if, եթե վերևի if-ը չի ու մեր ստեղ գրած պայմաննա
        print('գնացինք չինգաչունգ խաղանք')
    else: # աշխ․ օրեր
        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_000 # _ կարանք դնենք
else:
    gin = 'եսիմ'

print(gin)
եսիմ

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

apranq = 'ձմերուկ'

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

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

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

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

tariq = 17
hastatutun = "509 դպրոց"
# nested if
if tariq > 18: 
    if hastatutun == "ԵՊՀ":
        print("ես էլ")
else:
    if hastatutun == "509 դպրոց":
        print("ես էլ եմ էդ")
    else:
        print("բա որտեղ ա էդ")

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

tariq = 19
panir_sirum = False
gini_sirum = True

if tariq > 18 and panir_sirum and gini_sirum:
    print("gini u panir")
elif tariq > 18 and gini_sirum:
    print("gini")
elif tariq > 18:
    print("whiskey")
else:
    print("jur")
         
    
gini
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