လေ့ကျင့်ခန်း အမေးအဖြေ များ

လေ့ကျင့်ခန်း ၁

မေးခွန်း ၁။

အောက်ပါ program မှာ k ရဲ့ value က ဘာဖြစ်ပါသလဲ။

i = 7 + 3
k = i + 2

အဖြေက

A. 7
B. 10
C. 12

C.12

မေးခွန်း ၂။

လူတစ်ယောက်၏ မွေးဖွားသည့် နှစ်ကို လက်ခံပါ။ ထို့နောက် ၂၀၁၈ တွင် ရောက်ရှိနေသည့် အသက်ကို ဖော်ပြပါ။

birthday = int(input("Please enter your birth year: "))
print("Your age is ", 2018 - birthday)

လေ့ကျင့်ခန်း ၂

လေ့ကျင့်ခန်း ၂ - ၁

x = input("Enter first value : ")
y = input("Enter second value : ")
op = input("Operator (+ - * /) : ")
try :
    x = int(x)
    y = int(y)

    output = True
    if op == "+" :
        result = x+y
    elif op == "-" :
        result = x-y
    elif op == "*" :
        result = x*y
    elif op == "/" :
        result = x/y
    else :
        output = False
        print("Wrong Operator")
    
    if output :
        print("Result is ",result)
    
    
except ValueError:
    print("Please enter number only")
    print(ValueError);

အထက်တွင် ဖော်ပြထားသော Calculator code ကို flow chart ဆွဲပါ။

လေ့ကျင့်ခန်း ၂ - ၂

မေးခွန်း ၁။

total = 0
for x in range(10):
    total = total + x
print(total)

program ကို run လိုက်ရင် Total က

A. 0
B. 10
C. 45

C. 45

မေးခွန်း ၂။

total = 0;
for x in range(10):
    total = total + 1
print(total)

program ကို run လိုက်ရင် Total က

A. 0
B. 10
C. 45

B. 10

မေးခွန်း ၃။

range(5) ဆိုရင်

A. 0 ကနေ 5 ထိ
B. 0 ကနေ 4 ထိ
C. 1 ကနေ 5 ထိ
D. 1 ကနေ 4 ထိ

B. 0 ကနေ 4 ထိ

မေးခွန်း ၄။

While loop က အနည်းဆုံး တစ်ကြိမ် အလုပ်လုပ်တယ်။

A. မှန်
B. မှား

A.

မေးခွန်း ၅။

While loop အသုံးပြုဖို့ အခေါက် အရေအတွက် အတိအကျ ရှိရမယ်။

A. မှန်
B. မှား

B.

မေးခွန်း ၆။

Fibonacci program လို့ ခေါ်ရအောင်။ ကျွန်တော်တို့တွေ user ဆီက နံပတ် လက်ခံမယ်။ နံပတ် က 5 ဖြစ်ရင်
Fibonacci sequence အရ နံပတ် ၅ ခု ထုတ်ပြမယ်။

1 1 2 3 5

7 ဖြစ်ခဲ့ရင်တော့

1 1 2 3 5 8 13

လို့ ထုတ်ပြမယ်။

Fibonacci sequence ဆိုတာကတော့ ရှေ့က နံပတ် ၂ ခု ကို ပေါင်းပြီးတော့ နောက်ထပ် ဂဏန်း တစ်ခု ရပါတယ်။

n = input("Enter number: ")
n = int(n)
f = 0
s = 1
for i in range(n):
    t = f
    f = s
    s = t + s
    print(f,end=" ")

မေးခွန်း ၇။

Even/odd စစ်ထုတ်တဲ့ program ပါ။ user ဆီကနေ ဂဏန်း လက်ခံမယ်။ ပြီးရင် 1 ကနေ စပြီးတော့ even ဖြစ်လား odd ဖြစ်လား ဆိုပြီး ထုတ်ပြရမယ်။

ဥပမာ user က 3 လို့ ရိုက်လိုက်ရင်

1  is Odd
2  is Even
3  is Odd

ဆိုပြီး ထုတ်ပြမယ်။

တကယ်လို့ 5 လို့ ရိုက်လိုက်ရင်

1  is Odd
2  is Even
3  is Odd
4  is Even
5  is Odd

ဆိုပြီး ထုတ်ပြရပါမယ်။

n = input("Enter number: ")
n = int(n)
f = 0
s = 1
for i in range(1,n+1):
    if i % 2 == 0 :
        print(i,"is Even")
    else:
        print(i,"is Odd")

လေ့ကျင့်ခန်း ၂-၃

မေးခွန်း ၁။

Max Number လိုမျိုး အငယ်ဆုံး ဂဏန်းကို ရှာတဲ့ code ရေးကြည့်ပါ။

list = [1255,2125,1050,2506,1236,1048,2010,1055]

minnumber = list[0]

for x in list:
    if minnumber > x :
        minnumber = x

print("MAX number in array is",minnumber)

မေးခွန်း ၂။

list = [1,5,2,7,8,9,200,155]
print(len(list))

အဖြေသည်

A. ၉
B. ၈
C. ၇

B

မေးခွန်း ၃။

Array [3,4,1,2,9,7] ဆိုပြီး ရှိပါသည်။ user ဆီက နံပတ်ကို လက်ခံပြီး array အခန်းထဲတွေ တွေ့မတွေ့ user ကို print ထုတ်ပြပါမည်။ တွေ့ခဲ့ပါက အခန်း ဘယ်လောက်မှာ တွေ့ခဲ့သည်ကို print ထုတ်ပြပါမည်။

n = input("Enter number: ")
n = int(n)
arr = [3,4,1,2,9,7]
room = 0
while room < len(arr):
    if arr[room] == n:
        print ("Found at ", room)
        exit()
    room = room + 1
print("Not found")

မေးခွန်း ၄။

Max number ကို ရှာပါ။ ဘယ်နံပတ်က အကြီးဆုံးလဲ။ ဘယ်အခန်းမှာ ရှိတာလဲ ဆိုတာကို print ရိုက် ပြပါ။

list = [1255,2125,1050,2506,1236,1048,2010,1055]

maxnumber = list[0]
foundAt = 0
room = 0
while room < len(list):
    x = list[room]
    if maxnumber < x :
        maxnumber = x
        foundAt = room
    room = room + 1

print("MAX number in array is",maxnumber," Room is",foundAt)

လေ့ကျင့်ခန်း ၂-၄

မေးခွန်း ၁။

minus ဆိုသည့် function ရေးပြပါ။ ဂဏန်း ၂ လုံး ပို့လိုက်ပြီး ရလာဒ်ကို return ပြန်ပေးရမည်။

def minus(val1,val2):
    return val1-val2
print("5 - 2 =",minus(5,2))

မေးခွန်း ၂။

triangle_star ဆိုတဲ့ function ကို ရေးပါ။ user ဆီက နံပတ်တောင်းပါ။ 3 လို့ရိုက်ရင triangle_star(3) ဆိုပြီး ပို့ပေးပါ။ triangle_star မှ အောက်ပါ အတိုင်း ရိုက်ထုတ်ပြပါ။

*
**
***

အကယ်၍ 5 လို့ ရိုက်ထည့်လျှင် ၅ လိုင်း ထုတ်ပြပါမည်။

def triangle_star(stars):
  for start in range(stars):
    for star in range(start+1):
      print("*", end="")
    print("")
    
triangle_star(5)

လေ့ကျင့်ခန်း ၃

မေးခွန်း ၁။

ပေါင်းနှုတ်မြှောက်စား ပါဝင်သည့် MyMath class တစ်ခုကို တည်ဆောက်ပါ။

class MyMath:
    def sum(self,x,y):
        return x+y
    def minus(self,x,y):
        return x-y
    def multiply(self,x,y):
        return x*y
    def division(self,x,y):
        return x/y

math = MyMath()
print("4+3",math.sum(4,3))
print("4-3",math.minus(4,3))
print("4*3",math.multiply(4,3))
print("4/3",math.division(4,3))

မေးခွန်း ၂။

MyMath class ကို base ယူပြီး MyMathExt ဆိုသည့် class ကို ဆောက်ပါ။ ၂ ထပ် ၊ ၃ ထပ် တွက်ရန် ထည့်သွင်းပါ။

class MyMath:
    def sum(self,x,y):
        return x+y
    def minus(self,x,y):
        return x-y
    def multiply(self,x,y):
        return x*y
    def division(self,x,y):
        return x/y

class MyMathExt(MyMath):
    def sqaure(self,x):
        return x**2
    def three(self,x):
        return x**3

math = MyMathExt()
print("4+3",math.sum(4,3))
print("4-3",math.minus(4,3))
print("4*3",math.multiply(4,3))
print("4/3",math.division(4,3))
print("4 square",math.sqaure(4))
print("4 power 3 is",math.three(4))

လေ့ကျင့်ခန်း ၄

မေးခွန်း ၁။

Base 8 ကို ပြောင်းသည့် divdeBy8 function ကို ရေးပါ။ 668 (base 10) ၏ base 8 တန်ဖိုးသည် တန်ဖိုးသည် 1234 ဖြစ်သည်။ divideBy8(668) ၏ အဖြေသည် 1234 ထွက်လာရမည်။

class Stack:
    def __init__(self):
        self.items = []
    def is_empty(self):
        return self.items == []
    def push(self, item):
        self.items.append(item)
    def pop(self):
        return self.items.pop()
    def peek(self):
        return self.items[len(self.items) - 1]
    def size(self):
        return len(self.items)

def divideBy8(number):
    remstack = Stack()

    base = 8
    while number > 0:
        rem = number % base
        remstack.push(rem)
        number = number // base

    binString = ""
    while not remstack.is_empty():
        binString = binString + str(remstack.pop())

    return binString
print(divideBy8(668))

မေးခွန်း ၂။

Base 16 ကို ပြောင်းသည့် divdeBy16 function ကို ရေးပါ။ 668 (base 10) ၏ base 16 တန်ဖိုးသည် တန်ဖိုးသည် 29C ဖြစ်သည်။ divdeBy16(668) ၏ အဖြေသည် 29C ထွက်လာရမည်။ base 16 သည် အောက် ဖော်ပြပါ အတိုင်း ပြောင်းလဲ ပေးရန် လိုသည်။

ထို့ကြောင့် အကြွင်း ကို if condition သုံးကာ 10 မှ 15 value များကို ပြောင်းပေးရန် လိုသည်။

class Stack:
    def __init__(self):
        self.items = []
    def is_empty(self):
        return self.items == []
    def push(self, item):
        self.items.append(item)
    def pop(self):
        return self.items.pop()
    def peek(self):
        return self.items[len(self.items) - 1]
    def size(self):
        return len(self.items)

def divideBy16(number):
  remstack = Stack()

  base = 16
  while number > 0:
        rem = number % base
        if rem == 10:
            rem = "A"
        elif rem == 11:
            rem = "B"
        elif rem == 12:
            rem = "C"
        elif rem == 13:
            rem = "D"
        elif rem == 14:
            rem = "E"
        elif rem == 15:
            rem = "F"
        remstack.push(rem)
        number = number // base

  binString = ""
  while not remstack.is_empty():
      binString = binString + str(remstack.pop())

  return binString
print(divideBy16(987))

မေးခွန်း ၁။

class Queue:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def enqueue(self, item):
        self.items.insert(0,item)

    def dequeue(self):
        return self.items.pop()

    def size(self):
        return len(self.items)

q=Queue()
q.enqueue(12)
q.enqueue('dog')
q.enqueue(True)

print(q.dequeue())

အဖြေသည်

12

လေ့ကျင့်ခန်း ၆

မေးခွန်း ၁

အောက်ပါ code တွင် gender သည် male ဖြစ်သော သူများကို ဖော်ပြပါ။

room = [{'Name': 'Aung Ko', 'Age': 7, 'Gender' : 'male'}, {'Name': 'Ko Ko', 'Age': 8, 'Gender' : 'male'},{'Name': 'Aye Aye', 'Age': 7, 'Gender' : 'female'},{'Name': 'Htet Htet', 'Age': 8, 'Gender' : 'female'},{'Name': 'Win Aung', 'Age': 7, 'Gender' : 'male'}]

Answer:

room = [{'Name': 'Aung Ko', 'Age': 7, 'Gender' : 'male'}, {'Name': 'Ko Ko', 'Age': 8, 'Gender' : 'male'},{'Name': 'Aye Aye', 'Age': 7, 'Gender' : 'female'},{'Name': 'Htet Htet', 'Age': 8, 'Gender' : 'female'},{'Name': 'Win Aung', 'Age': 7, 'Gender' : 'male'}]

for obj in room:
    if obj["Gender"] == "male":
        print(obj["Name"])

မေးခွန်း ၂

အထက်ပါ code တွင် room ထဲတွင် ရှိသော လူများ၏ စုစုပေါင်း အသက်ကို ဖော်ပြသော code ရေးပြပါ။

Answer:

room = [{'Name': 'Aung Ko', 'Age': 7, 'Gender' : 'male'}, {'Name': 'Ko Ko', 'Age': 8, 'Gender' : 'male'},{'Name': 'Aye Aye', 'Age': 7, 'Gender' : 'female'},{'Name': 'Htet Htet', 'Age': 8, 'Gender' : 'female'},{'Name': 'Win Aung', 'Age': 7, 'Gender' : 'male'}]

total_age = 0

for obj in room:
    total_age = total_age + obj["Age"]

print(total_age)

လေ့ကျင့်ခန်း ၉

လေ့ကျင့်ခန်း ၉-၁

exercise

မေးခွန်း ၁

အထက်ပါ binary tree တစ်ခု တည်ဆောက်ပါ။ ထို binary tree အတွက် dfs ကို သုံးပြီး search function ကို ရေးပါ။ ဥပမာ ။ F လို့ ထည့်လိုက်လျှင် binary tree တွင် ပါဝင်သောကြောင့် true ဟု return ပြန်ပါမည်။ H ဟု ထည့်လိုက်လျှင် ရှာ မတွေ့သောကြောင့် false ဟု return ပြန်ရမည်။

class BinaryTree:

    def __repr__(self):
        return "Binary Tree, Key is " + self.key
        
    def __init__(self,root):
        self.key = root
        self.left_child = None
        self.right_child = None
    
    def insert_left(self,new_node):
        if self.left_child == None:
            self.left_child = BinaryTree(new_node)
        else:
            t = BinaryTree(new_node)
            t.left_child = self.left_child
            self.left_child = t
            
    def insert_right(self,new_node):
        if self.right_child == None:
            self.right_child = BinaryTree(new_node)
        else:
            t = BinaryTree(new_node)
            t.right_child = self.right_child
            self.right_child = t

    def get_right_child(self):
        return self.right_child

    def get_left_child(self):
        return self.left_child
        
    def set_root_val(self,obj):
        self.key = obj
        
    def get_root_val(self):
        return self.key

    def search(self,value):
        if self != None:
            if self.get_left_child() != None:
                if self.get_left_child().search(value):
                    return True

            if(self.get_root_val() == value):
                return True

            if self.get_right_child() != None:
                if self.get_right_child().search(value):
                    return True
            return False


root = BinaryTree("A")

root.insert_left("B")
root.insert_right("C")

b = root.get_left_child()

b.insert_left("D")
b.insert_right("E")

d = b.get_left_child()

d.insert_left("F")
d.insert_right("G")

found = root.search("F")
if found :
    print("FOUND")
else:
    print("NOT FOUND")

လေ့ကျင့်ခန်း ၉-၂

မေးခွန်း ၁

အထက်ပါ binary tree တစ်ခု တည်ဆောက်ပါ။ ထို binary tree အတွက် bfs ကို သုံးပြီး search function ကို ရေးပါ။ ဥပမာ ။ F လို့ ထည့်လိုက်လျှင် binary tree တွင် ပါဝင်သောကြောင့် true ဟု return ပြန်ပါမည်။ H ဟု ထည့်လိုက်လျှင် ရှာ မတွေ့သောကြောင့် false ဟု return ပြန်ရမည်။

class BinaryTree:

    def __repr__(self):
        return "Binary Tree, Key is " + self.key
        
    def __init__(self,root):
        self.key = root
        self.left_child = None
        self.right_child = None
    
    def insert_left(self,new_node):
        if self.left_child == None:
            self.left_child = BinaryTree(new_node)
        else:
            t = BinaryTree(new_node)
            t.left_child = self.left_child
            self.left_child = t
            
    def insert_right(self,new_node):
        if self.right_child == None:
            self.right_child = BinaryTree(new_node)
        else:
            t = BinaryTree(new_node)
            t.right_child = self.right_child
            self.right_child = t

    def get_right_child(self):
        return self.right_child

    def get_left_child(self):
        return self.left_child
        
    def set_root_val(self,obj):
        self.key = obj
        
    def get_root_val(self):
        return self.key

    def search(self,value):
        thislevel = [self]
        while thislevel:
            nextlevel = []
            level = []
            for n in thislevel:
                if (n.get_root_val() == value):
                    return True
                level.append(n.get_root_val())
                if n.get_left_child() != None:
                    nextlevel.append(n.get_left_child())
                if n.get_right_child() != None:
                    nextlevel.append(n.get_right_child())
            thislevel = nextlevel
        return False



root = BinaryTree("A")

root.insert_left("B")
root.insert_right("C")

b = root.get_left_child()

b.insert_left("D")
b.insert_right("E")

d = b.get_left_child()

d.insert_left("F")
d.insert_right("G")

found = root.search("H")
if found :
    print("FOUND")
else:
    print("NOT FOUND")

လေ့ကျင့်ခန်း ၉-၃

မေးခွန်း ၁

image-2019070835436787 pm

၁။ အထက်ပါ Tree ကို DFS ဖြင့် ရေးသားပါ။ တစ်ခုထက်မက child တွေ ဖြစ်နိုင်သည့် အတွက် preoder နှင့် postorder သာ အသုံးပြုနိုင်ပါသည်။ ထို့ကြောင့် preoder နှင့် postorder function ရေးသားပါ။

class Node:
    def __init__(self,value):
        self.value = value
        self.child = []

    def __repr__(self):
        return "Value is " + self.value
    
    def insert_child(self,node):
        self.child.append(node)
    
    def get_child(self):
        return self.child

class Node:
    def __init__(self,value):
        self.value = value
        self.child = []

    def __repr__(self):
        return "Value is " + self.value
    
    def insert_child(self,node):
        self.child.append(node)
    
    def get_child(self):
        return self.child

    def postorder(self):
        if self != None:
            if len(self.get_child()) > 0:
                for child in reversed(self.get_child()):
                    child.postorder()
            print(self.value)

    def preorder(self):
        if self != None:
            print(self.value)
            if len(self.get_child()) > 0:
                for child in self.get_child():
                    child.preorder()

root = Node("A")

b = Node("B")
c = Node("C")
d = Node("D")

root.insert_child(b)
root.insert_child(c)
root.insert_child(d)


e = Node("E")
f = Node("F")
g = Node("G")


b.insert_child(e)
b.insert_child(f)
b.insert_child(g)

h = Node("H")
i = Node("I")

c.insert_child(h)
c.insert_child(i)

j = Node("J")

d.insert_child(j)

print("---- PRE OREDER ----")
root.preorder()
print("---- POST OREDER ----")
root.postorder()

လေ့ကျင့်ခန်း ၁၁

လေ့ကျင့်ခန်း ၁၁-၁

မေးခွန်း ၁

ကားလိုင်စင် စစ်ဆေးသည့် regular expression တစ်ခု ရေးသားပါ။ A-Z နှင့် စမယ်။ / လာမယ်။ ဂဏန်း ၅ လုံးပါမယ်။ / ပါမယ်။ ဂဏန်း ၂ လုံးပါမယ်။ ဥပမာ B/11111/16 ပုံစံပါ။

import re

text = "K/12344/32"

if re.match("[A-Z]\/[0-9]{5}\/[0-9]{2}",text) == None:
    print("NOT MATCH")
else:
    print("MATCH")

မေးခွန်း ၂

mention ခေါ်သည့် ပုံစံကို regular expression မှာ ရေးကြည့်ရအောင်။ @mgmg ဆိုပြီး ရေးထားသည့် စာတွေကို html အနေနဲ့ ပြန်ပြောင်းပါမယ်။ <a href="/username/mgmg">@mgmg</a> ဆိုပြီး ဖော်ပြပေးပါမည်။

import re

text = "@mgmg"
replacement = re.sub("@(.*)\s*","<a href=\"/username/\\1\">@\\1</a>",text)

print(replacement)

မေးခွန်း ၃

markdown က code တစ်ကြောင်းအတွက် `code here` ဆိုရင် <code>code here</code> ဆိုပြီးပြောင်းပါတယ်။

import re

text = "hello `code here` world"
replacement = re.sub("`(.*)`","<code>\\1</code>",text)

print(replacement)