Chapter 5 Decision Control Instructions¶
Keynote¶
5.1 Decision Control Instructions Cu Zei Dah An Si?¶
Atu tiang kan program á¹ialmi chung i bia (statements) paoh cu a chang chang in (sequentially) asiloah pakhat hnu pakhat in tuah (executed) an si. Program chung i rian á¹uan ning a kal ning (sequence) kha a tanglei pawl hmang in thlen khawh a si:
- Decision Control Instruction (Biatluknak Tuahnak Lamhruai)
- Repetition Control Instruction (Tuah Ṭhan Lengmangnak Lamhruai)
Decision Control Instruction
Program chungah biatluknak (decision) tuahnak lam phun thum a um:
if condition : else
if condition1 : elif condition2 : elif condition3 : else :
-
if,else,elifhnu ah colon (:) hi chiah hrimhrim a herh. -
ifblock,elseblock,elifblock chung i bia (statements) paoh cu indented (chung lei ah tawlh) tuah a hau. Indent tuahmi bia/code pawl kha block pakhat in rel an si. -
Indentation cu bia (statements) fawnh/khawmh nak caah hman a si. Indentation caah Space 4 asiloah Tab 1 hman khawh a si. Tab le Space cawh in hman lo ding. Screen ah a hmaan lio bantuk in a lang nain, Error (palhnak) a chuak lai.
-
A cunglei i kan langhtermi a hmasa bik (first form) ah khin, else le elif telh a hau hrimhrim lo (optional an si).
-
A cunglei i kan langhtermi a pahnihnak (second form) ah khin, condition a True (hmaan) ahcun if block chung i bia pawl tuah an si lai. condition a False (hmaan lo) ahcun else block chung i bia pawl tuah an si lai.
-
A cunglei i kan langhtermi a pathumnak (third form) ah khin, condition pakhat a Fail (hmaan lo) ahcun, a changtu elif block chung i condition kha zohfel á¹han a si. Condition vialte an hmaan lo dih (fail) lawng ah else block kha tuah a si.
-
if-elsestatement pawl hi nested (a chung ah a dang chiah) in tuah khawh an si. Program logic nih a herh ning in a thuk khawh chung thuk in nesting tuah khawh a si.
5.2 Nuances of Conditions¶
Condition cu relational operators <, >, <=, >=, ==, != pawl hmang in ser a si.
10 < 20 # True a chuak (yields True)
'Santosh' < 'Adi' # False a chuak, alphabetical order (ca tlar ning) in a zoh
'gang' < 'God' # False a chuak, Ca hme (lowercase) cu Ca ngan (uppercase) nak in a ngan deuh
a = b cu value pek/chiah (assignment) a si, a == b cu tahchunh (comparison) a si.
A kar (Ranges) asiloah aa khat mi tampi zohfel kha fawi tein/ningcang tein tuah khawh a si.
if a < b < c # b hi a le c kar ah a um maw ti a zoh
if a == b == c # an pathum in an i khat maw ti a zoh
if 10 != 20 != 10 # True a chuak, 10 != 10 cu False a si nain
Fianternak (Note)
- A pathumnak (10 != 20 != 10) hi a lungre a thei kho mi a si. Python nih a zoh ning cu:
- 10 != 20 (10 le 20 an i khat lo) -> True
- 20 != 10 (20 le 10 an i khat lo) -> True
- A hmasa bik 10 le a donghnak 10 kha direct in a tahchunh hna lo, a laifang 20 tu kha a hmai le a hnu he a tahchunh hna. Cucaah True a chuak.
Nambar zero (0) a si lo mi paoh (positive, negative, integer, float) cu True tiah lak a si, cun 0 cu False tiah lak a si.
print(bool(3.14)) # True a chuak (zero a si lo caah)
print(bool(25)) # True a chuak
print(bool(0)) # False a chuak
5.3 Logical Operators¶
Biachahnak (decision) har deuh le thuk deuh tuah kan duh tikah logical operators and, or le not te hi hman khawh an si.
Condition pawl kha and le or hmang in a tanglei bantuk in fonh (combine) khawh an si:
cond1 and cond2
# An pahnih in an hmaan (True) lawng ah True a chuak, a dang paoh ahcun False.
cond1 or cond2
# Pakhatkhat a hmaan (True) ahcun True a chuak, an pahnih in an hmaan lo lawng ah False.
A taktak ti ahcun, and/or pawl hi conditions he lawng hman ding an si lo. Conditions hmun ah a hmaanmi expression paoh hman khawh an si. Cucaah expressions he kan hman tikah True/False lawng si loin a dang zong kan hmuh khawh men.
and operator nih expressions vialte kha a zohfel (evaluate) hna:
- Expressions vialte an hmaan (
True) ahcun, a hnu bik expression kha a chuah. - Asiloah a hmaan lo (
False) a um ahcun,Falsea si mi hmasa bik kha a chuah.
a = 40
b = 30
x = 75 and a >= 20 and b < 60 and 35 # assigns 35 to x
y = -30 and a >= 20 and b < 15 and 35 # assigns False to y
z = -30 and a >= 20 and 0 and 35 # assigns 0 to z
Fianternak (Note)
-
A tanglei code chungah x, y, le z an value a chuakmi hna hi and operator nih a rianá¹uan ning (logic) a si.
-
andoperator nih a zoh ning cu:-
A hmasa bik in a zoh. A hmaan (
True) ahcun a changtu a zoh á¹han. -
A hmaan lo (
False) a hmuh bak in a tawp, cun kha False value kha a chuah. -
A hmaan lo (
False) a hmuh bak in a tawp, cun kha False value kha a chuah. -
A hmaan lo (
False) a hmuh bak in a tawp, cun kha False value kha a chuah.
-
or operator nih expressions vialte kha a zohfel (evaluate) hna i, a hmaan (True) mi a hmasa bik value kha a chuah. Cutin a si lo i an dihlak in an hmaan lo (False) ahcun, a hmaan lo (False) mi a donghnak bik value kha a chuah.
a = 40
b = 30
x = 75 or a >= 20 or 60 # assigns 75 to x
y = a >= 20 or 75 or 60 # assigns True to y
z = a < 20 or 0 or 35 # assigns 35 to z
Fianternak (Note)
A tawinak in chim ahcun:
andcu False a kawl (False a hmuh le cangka a tawp).orcu True a kawl (True a hmuh le cangka a tawp).
Condition pakhat i a phichuak (result) kha not operator hmang in lethah (negate/reverse) khawh a si.
not operator cu a sullam a let in a tuah:
- True kha False ah a thlen.
- False kha True ah a thlen.
a = not b nih b i a value kha a thleng lo.
Operator pakhat nih operand pakhat lawng a herh ahcun Unary operator tiah auh a si. Pahnih a herh ahcun, Binary operator a si.
not - operand pakhat lawng a herh, cucaah unary operator a si.
+, -, <, >, and, or, etc. - operand pahnih an herh, cucaah binary operators a si.
5.4 Conditional Expressions¶
Python nih biatluknak tuahnak (decision-making) caah hmanrua a dang pakhat a ngeih rih, cucu conditional expression a si.
Conditional expressions tahchunhnak pawl:
age = 15
status = 'minor' if age < 18 else 'adult' # 'minor' ah a chiah
sunny = False
print("Let's go to the", "beach" if sunny else "room")
humidity = 76.8
setting = 25 if humidity > 75 else 28 # 25 ah a chiah
# 'Prim' kha a chiah (assigns Prim)
wt = 55
msg = 'Obese' if wt > 85 else 'Hefty' if wt > 60 else 'Prim'
Fianternak (Note)
- wt > 85 a si maw? A si lo (55 a si caah).
- A changtu else ah a kal: wt > 60 a si maw? A si lo.
- Cucaah a donghnak else i a ummi 'Prim' kha a lak.
5.5 all( ) le any( )¶
and le or logical operators pawl hman can ah, Python chung i a um ciami function all( ) le any( ) te hi hman khawh an si i, cu nih cun anmah he aa lo mi phichuak a ser ve. An hmanning cu a tanglei program ah hin hmuh khawh a si:
a, b, c = 10, 20, 30
# all() = Vialte an hmaan (True) dih lawng ah True a chuak
res = all((a > 5, b > 20, c > 15))
print(res) # False a chuak, a ruang cu condition pahnihnak (b > 20) kha False a si caah
# any() = Pakhatkhat a hmaan (True) ahcun True a chuak
res = any((a > 5, b > 20, c > 15))
print(res) # True a chuak, a ruang cu condition pakhatkhat kha True a si caah
all() le any() hna nih hin parameter (a chung i chiahmi) pakhat lawng an lak, cucu string, list, tuple, set asiloah dictionary an si a hau. A cunglei tahchunhnak ah khan condition 3 a ummi tuple kan pek hna.
-
A chung i chiahmi (argument) kha dictionary a si ahcun, a keys pawl kha an hmaan (True) maw hmaan lo (False) ti a zohfel (a values a zoh lo).
-
any()function nih a chung i ummi element pawl lakah a tlawm bik pakhat a hmaan (True) ahcun True a chuah. -
all()function nih a chung i ummi element vialte/dihlak an hmaan (True) lawng ah True a chuah.
5.6 Input Laknak (Receiving Input)¶
print() function cu screen ah value chuahnak/langhternak caah hman a si bantuk in, input() function (a um ciami) hi keyboard in input value laknak caah hman a si.
input() function nih string (ca) in a chuah/returns. Tahchunhnak ah, 23 kan á¹ial ahcun '23' (ca bantuk) in a chuah. Cucaah kan nambar á¹ialmi cungah khan nambar rian (arithmetic) á¹uan kan duh ahcun, a tanglei bantuk in string kha int asiloah float ah kan thlen a hau.
# Hmannak:
# 'n' kha 'name' tiah kan thleng lai, print nak ah 'name' kan hman caah.
name = input('Enter your name: ')
# Ca lawng a si caah thlen a hau lo.
age = int(input('Enter your age: '))
# 'int' ah thlen a hau, kum cu nambar a si caah.
salary = float(input('Enter your salary: '))
# 'float' ah thlen a hau, tangka cu a cheu (decimal) a um khawh caah.
print(name, age, salary)
5.7 Pass Statement¶
-
passstatement cu code kan run tikah zeihmanh a tuah lo (do nothing). Cucaah a caan ah no-op (no operation) instruction tiah auh a si. -
Code pakhatkhat kan run lio ah zeihmanh cang lo in um seh ti kan duh ahcun, pass statement hi kan hman khawh. A hmannak cu Problem 5.6 ah hmuh khawh a si.
-
A caan ah if, loop, function asiloah class chungah code kan á¹ial rih lo mi caah hmun khiah ta nak (placeholder) ah hman a si tawn. Asinain hitin pass hman hi a á¹ha tuk lo. Cucaah a hmun ah ... (Ellipsis) hi hman deuh ding a si.
-
Pass na hman ahcun, midang nih "mah if/loop/function/class chungah hin zeihmanh tuah a duh lo taktak/a herh lo" tiah an ruah khawh (code á¹ial ding a um rih ti si lo in).
5.7.1 Ellipsis¶
-
Ellipsis cu Python chungah a um ciami constant (value hmaan/thleng lomi) a si. ... in langhter a si.
-
Ellipsis cu value kan theih rih lo mi aiawh (represent) nak ah hman a si.
-
if, loop, function, asiloah class chungah code kan á¹ial rih lo mi caah hmun khiah ta nak (placeholder) ah hman a si tawn.
pass he an i dannak:
-
Ellipsislepasscu an i lo lo. -
passcu Statement (Bia/Rian) a si. -
...(Ellipsis) cu Constant (Value) a si.
Zeiruangah pass nak in ... hman a á¹hat deuh?
Code kan á¹ial lio ah "Hi ka ah hin hmailei ah code á¹ial a hau rih" ti kan theih khawh nak caah ... hman hi a á¹ha deuh. pass kan hman ahcun "Hi ka ah hin zeihmanh á¹ial ka tum lo" ti sullam a ngei kho.
def calculate_tax():
... # Hmailei ah ka tial te lai
class UserAccount:
... # Hmailei ah ka tial te lai
Problems¶
Problem 5.1¶
Thil cheukhat cawk tikah, cawkmi zat (quantity) kha 1000 nak in a tam ahcun 10% discount (man zuut) pek a si. Cawkmi zat (quantity) le thil pakhat man (price per item) kha keyboard in á¹ial lut (input) a si ahcun, a man dihlak (total expenses) tuaknak ding program á¹ial hna.
Program
qty = int(input('Enter value of quantity: ')) # Cawkmi zat (quantity) kha nambar in lak
price = float(input('Enter value of price: ')) # A man (price) kha float in lak
if qty > 1000 : # Quantity cu 1000 nak in a tam maw?
dis = 10 # A tam ahcun Discount cu 10
else : # A tam lo ahcun
dis = 0 # Discount cu 0
# A man dihlak tuaknak: (Quantity * Price) - (Discount)
totexp = qty * price - qty * price * dis / 100
# A phichuak (Total Expenses) chuahnak
print('Total expenses = Rs. ' + str(totexp))
Ruahding (Tips)
- input( ) nih string a chuah, cucaah int asiloah float ah a herh ning in thlen a hau. Kan thlen lo ahcun, qty > 1000 nih error a chuah lai, a ruang cu string le int cu tahchunh (compare) khawh an si lo.
-
- hmang in fonh (concatenation) kan tuah hlan ah totexp kha string ah thlen awkah str( ) hman ding a si.
Problem 5.2¶
Company pakhat ah rianá¹uantu hlawh pek ning cu hitin a si:
-
A hrampi hlawh (basic salary) cu
Rs. 1500nak in a tlawm a si ahcun,HRA = 10%(basic salary in) leDA = 90%(basic salary in) a si lai. -
A hlawh cu
Rs. 1500he aa khat asiloah a tam deuh a si ahcun,HRA = Rs. 500leDA = 98%(basic salary in) a si lai.
Rianá¹uantu i a hlawh kha keyboard in á¹ial lut (input) a si ahcun, a hlawh dihlak (gross salary) kawlnak ding program á¹ial hna.
Program
bs = int(input('Enter value of bs: ')) # Basic Salary (bs) kha nambar in lak
if bs > 1500 : # Basic Salary cu 1500 nak in a tam maw?
hra = bs * 15 /100 # A tam ahcun HRA cu 15%
da = bs * 95 / 100 # DA cu 95%
ca = bs * 10 / 100 # CA cu 10%
else: # A tam lo ahcun (1500 he aa khat asiloah a tlawm deuh)
hra = bs * 10 / 100 # HRA cu 10%
da = bs * 90 / 100 # DA cu 90%
ca = bs * 5 / 100 # CA cu 5%
gs = bs + da + hra + ca # Gross Salary (Hlawh Dihlak) tuaknak
print('Gross Salary = Rs. ' + str(gs)) # A phichuak chuahnak
Ruahding (Tips)
ifblock leelseblock chungah statement tampi chiah khawh an si, nain a herh ning in indent (tep luh) tuah a hau.
Problem 5.3¶
Student pakhat nih a hmuhmi percentage kha keyboard in á¹ial lut (input) a si. A tanglei phung (rules) hmang in a hmuhmi division kha tuak ding a si:
-
60 asiloah 60 nak tam: First Division
-
50 in 59 kar: Second Division
-
40 in 49 kar: Third Division
-
40 nak tlawm: Fail
Program
per = int(input('Enter value of percentage: ')) # Percentage kha nambar in lak
if per >= 60 : # 60 nak in a tam asiloah aa khat maw?
print('First Division') # A si ahcun First Division
elif per >= 50 : # 60 nak tlawm si i, 50 nak tam a si maw?
print('Second Division')
elif per >= 40 : # 50 nak tlawm si i, 40 nak tam a si maw?
print('Third Division')
else : # 40 nak in a tlawm ahcun
print('Fail')
Problem 5.4¶
Company pakhat nih a driver pawl insurance a tuahpiak hnanak phung (rules) cu a tanglei bantuk a si:
-
Driver cu thit-um (married) mi a si ahcun.
-
Driver cu thit-um lomi (unmarried), pa (male) a si i, kum 30 nak in a upa deuh a si ahcun.
-
Driver cu thit-um lomi (unmarried), nu (female) a si i, kum 25 nak in a upa deuh a si ahcun.
-
A dang (case) vialte ahcun insurance pek a si lo.
Marital status (Thit-um/Um-lo), Sex (Nu/Pa) le Age (Kum) kha input in lak a si ahcun, insurance a ngah lai maw ngah lai lo ti tuaknak program á¹ial hna.
Program
# Input laknak
ms = input("Thit-um cang maw? (Enter Marital Status - M/U): ")
sex = input("Nu/Pa (Enter Sex - M/F): ")
age = int(input("Kum zeizat (Enter Age): "))
# Insurance rule check tuahnak
# 1. Thit-um (Married) a si ahcun
if ms == 'M':
print("Driver is Insured (Insurance a ngah)")
# 2. Thit-um lo (Unmarried), Pa (Male) le Kum 30 nak tam
elif ms == 'U' and sex == 'M' and age > 30:
print("Driver is Insured (Insurance a ngah)")
# 3. Thit-um lo (Unmarried), Nu (Female) le Kum 25 nak tam
elif ms == 'U' and sex == 'F' and age > 25:
print("Driver is Insured (Insurance a ngah)")
# 4. A dang vialte (Insurance ngah lo)
else:
print("Driver is Not Insured (Insurance a ngah lo)")
Output
Problem 5.5¶
Flag variable pali w, x, y, z kan ngei. An lak ah a tlawm bik pakhat a hmaan (True) maw ti zohnak lam phunphun in program á¹ial hna.
Program
# Flag variable pawl zohnak lam phunphun
w, x, y, z = 0, 1, 0, 1
# Lam 1: Value 1 he aa khat maw ti zoh
if w == 1 or x == 1 or y == 1 or z == 1 :
print('True')
# Lam 2: Boolean value (0 asiloah 1) in zoh (A fawi bik)
if w or x or y or z :
print('True')
# Lam 3: any() function hman (Tuple chungah pakhat tal True a um maw)
if any((w, x, y, z)):
print('True')
# Lam 4: 'in' operator hman (Tuple chungah 1 a um maw)
if 1 in (w, x, y, z) :
print('True')
Ruahding (Tips)
any( )cu function a um ciami a si i, a parameter chung i element a tlawm bik pakhat a hmaan (True) ahcun True a chuah.any( )sinah hinstring,list,tuple,setasiloahdictionarypek a hau.- Aa lo mi function dang
all( )a um rih, mah nih cun a parameter chung i element vialte/dihlak an hmaan (True) lawng ah True a chuah. Hi function zong histring,list,tuple,setasiloahdictionarypek ve a hau.
Problem 5.6¶
Nambar n pakhat kan ngei i, a tanglei bantuk in tuah kan duh:
-
ncu positive (0 nak in a tam) a si ahcun -n * nchuah (print), cun flag kha true ah chiah/thleng. -
ncu negative (0 nak in a tlawm) a si ahcun -n * n * nchuah (print), cun flag kha true ah chiah/thleng. -
ncu 0 a si ahcun - zeihmanh tuah lo (do nothing).A tanglei i pekmi code hi, mah logic (a kal ning) caah hin a hmaan maw? ```python n = int(input('Enter a number: ')) # Nambar kha keyboard in lak if n > 0 : # n cu 0 nak in a tam (Positive) a si ahcun flag = True # Flag kha True ah chiah print(n * n) # n * n (Square) chuah elif n < 0 : # n cu 0 nak in a tlawm (Negative) a si ahcun flag = True # Flag kha True ah chiah print(n * n * n) # n * n * n (Cube) chuah # Note: n = 0 a si ahcun zeihmanh a tuah lo (implicit pass)
Answer
Hi code hi lungawh a chuahter khawh (misleading). Hmailei ah, mi pakhatkhat nih hi code a zoh tikah `flag = True` hi `if` le `else` leng ah á¹ial ding a si tiah a ruah khawh. Code á¹ha deuh cu a tanglei bantuk hi a si lai:Exercise¶
[A] A tanglei biahalnak hna hi leh hna:¶
a. A tanglei hna caah hin conditional expressions á¹ial hna:
# - a < 10 a si ahcun b = 20, a si lo ahcun b = 30
b = 20 if a < 10 else 30
# - time < 12 a si ahcun 'Morning' chuah, a si lo ahcun 'Afternoon' chuah
print('Morning') if time < 12 else print('Afternoon')
# - marks >= 70 a si ahcun remarks cu True, a si lo ahcun False
remarks = True if marks >= 70 else False
[B] A tanglei program hna i an phichuak (output) hi zeidah a si lai:¶
a.
i, j, k = 4, -1, 0
w = i or j or k
x = i and j and k
y = i or j and k
z = i and j or k
print(w, x, y, z)
c.
x, y, z = 20, 40, 45
if x > y and x > z :
print('biggest = ' + str(x))
elif y > x and y > z :
print('biggest = ' + str(y))
elif z > x and z > y :
print('biggest = ' + str(z))
d.
e. f. g. h. i.[C] A tanglei program hna ah palhnak (errors) a um ahcun sawh/langhter hna:¶
a.
b. c. d. e.x, y = 30, 40
if x == y :
print('x is equal to y')
elseif x > y :
print('x is greater than y')
elseif x < y :
print('x is less than y')
[D] a = 10, b = 12, c = 0 an si ahcun, a tanglei expression pawl i an value (phi) kawl hna:¶
[E] A tanglei biahalnak hna hi tuah/phi hna:¶
- a. Integer (nambar) pakhat keyboard in á¹ial lut a si. Cucu nambar ya (even) a si maw, nambar khing (odd) a si maw ti zohnak program á¹ial.
- b. Kum pakhat keyboard in á¹ial lut a si. Cu kum cu leap year a si maw, si lo maw ti zohnak program á¹ial.
- c. Ram, Shyam le Ajay hna i an kum keyboard in á¹ial lut a si ahcun, an pathum lak ah a ngakchia bik zohnak program á¹ial.
- d. Triangle (kili) pakhat i a kil (angle) pathum keyboard in á¹ial lut a si. Cu triangle cu a hmaan/si kho mi a si maw si lo ti zohnak program á¹ial. Angle pathum an fonh (sum) kha 180 degrees he aa khah ahcun triangle cu a hmaan/si kho.
- e. Keyboard in á¹ial lutmi nambar i a absolute value kawlnak program á¹ial.
- f. Rectangle pakhat i a dung (length) le a vang (breadth) pek a si. A area (a chung kauh) kha a perimeter (a velchum) nak in a ngan deuh maw ti zohnak program á¹ial. Tahchunhnak ah, length = 5 le breadth = 4 a ngeimi rectangle i a area cu a perimeter nak in a ngan deuh.
- g. Point pathum (x1, y1), (x2, y2) le (x3, y3) pek a si. Hi point pathum hna hi line tluang (straight line) pakhat cungah an um dih maw ti zohnak program á¹ial.
- h. Circle (kew) pakhat i a lai (center) coordinates (x, y) le a radius pek a si. Point pakhat cu circle chungah (inside) a um maw, circle cungah (on) a um maw, asiloah circle lengah (outside) a um maw ti zohnak program á¹ial. (Ruahding: sqrt( ) le pow( ) functions hmang hna).
- i. Point (x, y) pakhat pek a si, cu point cu X-axis cungah a um maw, Y-axis cungah a um maw, asiloah origin cungah a um maw ti zohnak program á¹ial.
- j. Kum pakhat keyboard in á¹ial lut a si, cu kum cu leap year a si maw si lo ti zohnak program á¹ial. Logical operators and le or hmang hna.
- k. Triangle i a tlang/kap pathum keyboard in á¹ial lut a si, cu triangle cu a hmaan/si kho mi a si maw si lo ti zohnak program á¹ial. A tlang pahnih fonh (sum) kha a tlang a sei bik nak in a ngan deuh ahcun triangle cu a hmaan/si kho.
- l. Triangle i a tlang/kap pathum keyboard in á¹ial lut a si, cu triangle cu Isosceles (tlang 2 aa khat), Equilateral (tlang 3 aa khat), Scalene (tlang 3 aa khat lo), asiloah Right angled (kil 90 a ngeimi) triangle a si maw ti zohnak program á¹ial.