Saturday, October 28, 2017

Python2 Lesson 6



Python  သင္ခန္းစာမ်ားကို အသစ္ထည့္ထားေပးေသာ menu box ကေလးမွတစ္ဆင့္ Python for Hacker ကို ေရြးခ်ယ္ျပီး ၾကည့္ႏိုင္ပါတယ္။
အပိုင္း 4 ထိ သင္ခန္းစာေတြကို မၾကည့္ရေသးသူမ်ား ေအာက္ပါ link ကေနလည္း သြားေရာက္ ၾကည့္ရႈႏိုင္မွာျဖစ္ပါတယ္ခင္ဗ်ာ
Lesson 1 ၾကည့္ရန္ link  >> Click Here
Lesson 2 ၾကည့္ရန္ link  >> Click Here
Lesson 3 ၾကည့္ရန္ link  >> Click Here
Lesson 4 ၾကည့္ရန္ link >> Click Here
Lesson 5 ၾကည့္ရန္ link >> Click Here
........................................
အဆက္
Python Programming
Remark! Zawgyi 2009 နဲ႔ ေရးမိလိုက္တာေၾကာင့္ အခ်ိဳ႕ေသာ စာလံုးေတြကို ဖတ္ရတာ ျမင္ေနက်ပံုစံနဲ႔ မတူတာေတြ ရွိေကာင္းရွိႏိုင္ပါတယ္။ ဖတ္လို႔ေတာ့ ရပါတယ္။ Zawgyi 2009 နဲ႔ ေရးမိျပီးမွ မျပင္ခ်င္ေတာ့လို႔ ဒီတိုင္းေလးပဲ တင္လိုက္ပါတယ္။
....
Sequence and Lists
ဒီတစ္ခါေတာ့ Sequence and Lists အေျကာင္း ေလ့လာရေအာင္ပါ
lists  ဆိုတာေတာ့ Data ေတြကို စနစ္တက် စီစဥ္ထားျပီး လိုအပ္ခ်ိန္မွာ ထုတ္ယူသံုးစြဲနိုင္ဖို့ ကူညီေပးတဲ့အရာပါ။
ကဲ ေအာက္ပါအတိုင္းကို python မွာ စမ္းျကည့္ရေအာင္။
..
>>> hk_class = [ 'Aung Aung' , 'Mg Mg' , 'Aye Aye' , 'Mya Mya' , 'Hla Hla' , 'Ko Ko' ]
input 1 ပထမဆံုးစာေျကာင္းမွာ hk_class  ဆိုတာကို variable ဖြဲ့လိုက္ပါတယ္။ class ထဲမွာပါဝင္သူေတြကေတာ့ အထက္ပါ name ေတြေပါ့။
မွတ္မိဦးမယ္ထင္တယ္ဗ်။ Python မွာ အမွတ္စဥ္ေတြကို ေရတြက္ရင္ သုညက စတယ္ဆိုတာ။ မမွတ္မိရင္လည္း တစ္ေခါက္ ျပန္ေျပာျပေပးမယ္။
အထက္ပါစာေျကာင္းကို ျကည့္ရေအာင္ပါ။
'Aung Aung' , 'Mg Mg' , 'Aye Aye' , 'Mya Mya' , 'Hla Hla' , 'Ko Ko'
    ၀                 ၁           ၂               ၃              ၄            ၅   
ျမင္သာျပီထင္ပါတယ္။
python မွာ ေနာက္တစ္လိုင္း အေျဖထုတ္ျကည့္ရေအာင္
>>> hk_class [1]
 'Mg Mg'

>>> hk_class [3]
 'Mya Mya'
enter လိုက္တာနဲ့ အမွတ္စဥ္အလိုက္မွာရွိတဲ့သူေတြကိုထုတ္ျပသြားတာ ေတြ့ရပါလိမ့္မယ္။
...
ဒါမ်ိုးကို စာတန္းေတြထဲကေနလည္း ထုတ္ယူေဖာ္ျပလို့ ရပါတယ္။ ေအာက္ပါ နမူနာေလးေတြကို လုပ္ေဆာင္ျကည့္ပါ။
စာတန္းေနရာမွာ သင္ နွစ္သက္ရာစာတန္း ေျပာင္းေရးနိုင္ပါတယ္။
.....
>>> 'I am learning python lessons.' [5]
 'l' 
၅လံုးေျမာက္က l ျဖစ္တာကို ေတြ့ရပါမယ္။

>>> 'I am learning python lessons.' [9]
'n'
 ျခားထားတာကိုလည္း ထည့္ေရတြက္တယ္ဆိုတဲ့အေျကာင္း ရွင္းျပထားခဲ့တယ္ေနာ္။
ခုက variable မသံုးသြားဘဲ တိုက္ရိုက္ ယူသံုးလိုက္တာပါ။
...............
စာအရမ္းမ်ားတဲ့ အေျခအေနေတြအတြက္ ေရွ့ဘက္ေရနဲ့ ေနာက္ျပန္ေရလို့ ရွိပါေသးတယ္။ နမူနာ ေျပာျပပါ့မယ္။ ေနာက္က ျပန္ေရရင္ -1, -2, -3 လို့ ေရတြက္ပါတယ္။ -0 လို့ မရွိလို့ ျဖစ္ပါတယ္။
ေရွ့မွ ေရတြက္ပံု
'a' , 'b' , 'c' , 'd'
 0     1     2     3
ေနာက္ျပန္ေရတြက္ပံု
'a' , 'b' , 'c' , 'd'
-4    -3    -2    -1
ဆိုျပီး ျဖစ္ပါတယ္။ အထက္ပါ ဥပမာမွာ ျပန္သံုးျကည့္ရေအာင္
>>>'I am learning python lessons.' [5]
 'l'
 ေရွ့ဘက္က ေရတြက္ရင္ l က အမွတ္စဥ္ ၅ ျဖစ္ပါတယ္။
ေျခာက္လံုးေျမာက္ေပါ့။
>>> 'I am learning python lessons.' [-5]
 's'
-5ဆိုတာ ေနာက္ကေန ျပန္ေရတာပါ။
ကိုယ့္ဘာသာလည္း ေရျကည့္ေပါ့။ မမွန္တာ မရွင္းတာေတြ့ရင္ comment မွာ ေမးနိုင္ပါတယ္။
...............
ေနာက္တစ္ခု ဆက္လုပ္ျကည့္ရေအာင္
>>> c = [ 'hat' , 'heart' , 'hot' , 'horse' , 'hen' , 'hand' , 'home' ]

>>> c [-1]
 'home'

>>> c [-5]
'hot'
ဒီေလာက္ဆိုရင္ေတာ့ ရွင္းမယ္ထင္ပါတယ္။
........................
.........................
Tuple Function
ဒီတစ္ခါ ေလ့လာမယ့္ function ကေတာ့  tuple function ပါ
ေအာက္ပါ လိုင္းေလးေတြကို ipython မွာ စမ္းျကည့္ရေအာင္ ..........
Kali Linux terminal မွာ apt install ipython -y လို႔ ရိုက္လိုက္ပါ။ install ျပီးသြားလို႔ command line ေနာက္တစ္ခုေပၚလာရင္ ရပါျပီ။
Terminal မွာ ipython လို႔ ရိုက္ေခၚလိုက္ပါ။ iPython ကို သံုးတာက in & out ကို ျမင္သာေစလို႔ ျဖစ္ပါတယ္။
In ဆိုတာက Input စာေၾကာင္းျဖစ္ျပီး ထိုစာေၾကာင္းေၾကာင့္ Output ရွိလာတဲ့အခါ ခ်က္ခ်င္း Out ဆိုတဲ့ စာေၾကာင္းနဲ႔ ျပေပးမွာျဖစ္လို႔ပါပဲ။
iPython မွာ မသံုးခ်င္ရင္ေတာ့ In [   ]: ထိကို ထည့္ရိုက္စရာမလိုပါဘူး
ဥပမာ In[1]: x = 2 လို႔ ေတြ႔ရင္ x = 2 ပဲ ရိုက္ရပါမယ္။ ":" ရဲ႕ ေရွ႕ကအပိုင္းကို ရိုက္ထည့္စရာမလိုပါဘူး။
...................
In [1]: x = '1,2,3'

In [2]: x
Out[2]: '1,2,3'
........................
In [3]: y = ('1,2,3')

In [4]: y
Out[4]: '1,2,3'
........................
In [5]: z = ['1,2,3']

In [6]: z
Out[6]: ['1,2,3']
တစ္ဆက္တည္း ရိုက္သြားတာေပမယ့္ တစ္ခုစီ ကြဲျမင္ရေအာင္ လိုင္း တားေပးထားတာပါ။
အထက္ပါ ဥပမာ ၃ခုကို ေလ့လာျပီးတဲ့အခါ variable နဲ့ ဘာမွလည္း မထူးပါလားလို့ ေမးစရာရွိပါတယ္။
ဟုတ္ပါတယ္။ variable ပါပဲ။ Tuple Function မွာ variable ထက္ သာတဲ့ အခ်က္က
စာသားေတြ၊ ကိန္းဂဏန္းေတြ၊ စာသားနဲ့ ကိန္းဂဏန္း အေရာေတြ ဒါေတြတင္သာမက music, video, picture စတာေတြကိုပါ
သိုေလွာင္နိုင္စြမ္းတာပါပဲ။
နည္းနည္းေတာ့ စိတ္ဝင္စားစရာေကာင္းလာျပီထင္တယ္ေနာ္။
။။။။။။။
Tuple ဟာ မ်ိဳးစံု သိုေလွာင္နိုင္တဲ့ အားသာခ်က္ ရွိတာေပမယ့္ အားနည္းခ်က္တစ္ခုေတာ့ ရွိေနပါတယ္။
ဘာလဲဆိုရင္ သူဟာ ကိန္းေသေတြကိုသာ ပံုေသ သိုေလွာင္သြားမွာျဖစ္ျပီး သူ႔ရဲ႕ သိုေလွာင္တန္ဖိုးကို ေျပာင္းလဲလို့ မရတာပါပဲ။
variable တန္ဖိုးေတြကို ေျပာင္းလဲ အသံုးျပဳနိုင္တဲ့အေျကာင္း သင္ခဲ့ျပီးျပီေနာ္။
နည္းနည္းေလာက္ စမ္းသပ္ျကည့္ရေအာင္။ ipython မွာပဲသံုးလိုက္ပါမယ္။
............
In [1]: x = ('baby',12)

In [2]: x
Out[2]: ('baby', 12)

In [3]: x [0]
Out[3]: 'baby'

In [4]: x [1]
Out[4]: 12
variable အသြင္းတန္ဖိုးေတြကို ေရတြက္ပံု 0 က စတယ္ဆိုတာ ရွင္းျပခဲ့ျပီးျပီေနာ္။
Tuple ဟာ တန္ဖိုးေတြကို အေသပဲ မွတ္ထားတယ္။ ေနာက္ထပ္ ေျပာင္းလဲလို့ မရဘူးလို့ ေျပာခဲ့တယ္ေနာ္။
ေျပာင္းနိုင္မလား စမ္းျကည့္ရေအာင္။ ခုန ေအာက္မွာပဲ ဆက္ရိုက္ပါမယ္။
In [5]: x[1]= 20
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
in ()
----> 1 x[1]= 20

TypeError: 'tuple' object does not support item assignment
ဆိုျပီး error ျကီး ေတြ့ရပါလိမ့္မယ္။ ဟုတ္ပါတယ္။ အဲဒါ ပံုေသ တန္ဖိုးပဲ မွတ္ထားလို့ပါပဲ။
...........
သာမန္ variable မွာ ျပန္ျကည့္ရေအာင္။ သိျပီးသားေပမယ့္ တြဲျပီး ျပခ်င္လို့ပါ။
In [1]: x = 20

In [2]: x + 1
Out[2]: 21

In [3]: x = x + 5
လိုင္း 3 မွာ x ရဲ့ မူလတန္ဖိုးကို ေျပာင္းလဲလိုက္တယ္။
In [4]: x
Out[4]: 25 ဒီေနရာမွာ x တန္ဖိုးအသစ္ကို ထုတ္ျကည့္လို့ ျမင္ရပါျပီ။
ေျပာင္းလဲသတ္မွတ္လို့ ရတယ္ေနာ္။
ဒီအခ်က္ကို သတိထားလိုက္ရင္ တန္ဖိုး ကိန္းေသေတြနဲ့ ေျပာင္းလဲနိုင္တဲ့ ကိန္းရွင္ေတြကို သတိထားမိမယ္လို့ ထင္ပါတယ္။
.......
............
ေနာက္ထပ္ ဆက္ေလ့လာျကည့္ရေအာင္
n [1]: a = [ 'apple' , 50 , 'orange' , 10 , 'mango' , 12 , 'banana' , 5 ]

In [2]: a
Out[2]: ['apple', 50, 'orange', 10, 'mango', 12, 'banana', 5]

In [3]: a [3]
Out[3]: 10

In [4]: a [4]
Out[4]: 'mango'
...................
...................
ဒီေနရာအထိမွာ ေျပာစရာတစ္ခုပဲရွိပါတယ္။  tuple က သံုးရလြယ္တာမို့ ေမ့စရာမရွိေလာက္ဘူးထင္ပါတယ္။
tuple ကို သံုးတဲ့အခါ (...) , [....]  စတဲ့ လက္သည္းကြင္းနဲ့ ေထာင့္ကြင္းေတြကို အသံုးျပုနိုုင္ေပမယ့္ အမွတ္စဥ္နဲ့တြဲျပီး ကုဒ္ျပန္ေဖာ္ရာမွာေတာ့ ေထာင့္ကြင္း [1]
ပဲ သံုးရပါမယ္။
..........
..........
ေက်ာင္းတုန္းက သင္ခဲ့ရသလို လည္း အသံုးျပုနိုင္ပါေသးတယ္
variable သတ္မွတ္တဲ့ပံုစံမ်ိုးပါပဲ။ tuple ကေတာ့ ကိန္းေသေနာ္။
ျကည့္ရေအာင္
In [1]: x,y = 5,2

In [2]: x
Out[2]: 5

In [3]: y
Out[3]: 2
ဒီေလာက္ဆို ရွင္းမယ္ထင္ပါတယ္။
ကိန္းေတြ အမ်ားျကီးအတြက္လည္း မွတ္နိုင္ပါေသးတယ္။ နမူနာ -
In [1]: w,x,y,z = 2,4,6,8

In [2]: w
Out[2]: 2

In [3]: y
Out[3]: 6

In [4]: z
Out[4]: 8

In [5]: x
Out[5]: 4
..............
..............
ဒီေလာက္ဆို ခု သင္ခန္းစာေလးေတြကို အသံုးျပုတတ္ျပီလို့ ထင္ပါတယ္။
အိမ္စာ လုပ္ဖို့ပ်င္းတဲ့သူေတြအတြက္ ျပန္ေနြွးမယ့္ သင္ခန္းစာေလးတစ္ခု လုပ္ခ်င္ပါတယ္။ Maths ထဲကပဲ အစား အေျကာင္းပါ။
အစားဆိုတာနဲ့ ေခါင္းေထာင္သြားျပီလား။ :)
In [1]: a = 21

In [2]: b = 5

In [3]: a/b
Out[3]: 4

In [4]: a%b
Out[4]: 1
သိျပီးသားေလးေတြပါ။ ျပန္ရွင္းျပပါဦိးမယ္။
လိုင္း3 မွာ 21 ကို 5 နဲ့စားလို့ စားလဒ္ ၄ ရသြားပါျပီ။
လိုင္း4 မွာေတာ့ အျကြင္းရွာတဲ့ ေဖာ္ျမူလာကို သံုးထားတာမို့ ၅ ေလးလီ ၂၀ အျကြင္း ၁ ရတာျဖစ္ပါတယ္။
ကြ်န္ေတာ္တို့ ပထမ သင္ခဲ့ရတဲ့ သင္ခန္းစာေပါ့။ ခု ျပန္ေျပာရတာက အဲဒါကို ျပန္ဆက္ခ်င္လို့ပါ။
ေကာင္းျပီ။ တစ္လိုင္းစီမွာ စားလဒ္ နဲ့ အျကြင္း ဖန္တီးေနရတယ္။ အဲ ၂ခုလံုးကို တစ္ျပိုင္နက္တည္းေဖာ္မယ္။
အထက္ပါ problem ကိုပဲ တြက္ပါမယ္။ အျကြင္းေရာ စားလဒ္ေရာ တစ္ျပိုင္နက္တည္း လိုခ်င္တဲ့အခါမွာေတာ့
divmod Function ကို အသံုးျပုရပါတယ္။  နမူနာ ျကည့့္ျကည့္ပါ။ လိုင္း 5 ကေန ထပ္ဆက္မယ္ေနာ္။
......
In [5]: divmod (a,b)
Out[5]: (4, 1)
a ကိုတည္ျပီး b နဲ့ စားရင္ ရမယ့္ စားလဒ္ နဲ့ အျကြင္း ကို ေဖာ္ျပတာပါ။
..........
...........
ဒီတစ္ခါေတာ့ ေနာက္သင္ခန္းစာေလးတစ္ခုကို သြားရေအာင္ပါ။
In [1]: name = ()

In [2]: if not name:
   ...:     print "\n There is nothing in name"
   ...: raw_input ("n\ Press enter to exit.")
   ...:

 There is nothing in name
n\ Press enter to exit.
အထက္ပါ သင္ခန္းစာကိုျကည့္ရင္ name ဆိုတဲ့ variable တည္ေဆာက္ထားေပမယ့္ ဘာမွ် ထည့္မထားပါဘူး။
ဒါေျကာင့္ if not နဲ့ တြဲလိုက္ေတာ့ မွန္သြားပါတယ္။ ကြင္းထဲမွာ တစ္ခုခု ထည့္ခဲ့မယ္ဆိုရင္ေတာ့ အေျဖ မွားသြားမွာျဖစ္ပါတယ္။
In [1]: name = "Mg Mg"

In [2]: if not name:
   ...:     print "n\ There is nothing in name."
   ...: else:
   ...:     print "The name of user is"
   ...:     print name
   ...: raw_input("n\ Press enter to exit.")
The name of user is
Mg Mg
Press enter to exit.
ဆိုျပီး ျမင္ေတြ့ရမွာျဖစ္ပါတယ္။
................
ေနာက္ထပ္ ဥပမာေလးတစ္ခု ဆက္ျကည့္ရေအာင္
...................
ေအာက္ပါ ကုဒ္ေလးမ်ားကို leafpad  မွာေရးျပီး lesson6.py လို့ နာမည္တပ္ျပီး Desktop မွာ Save လိုက္ပါ။
......
khitminnyo = ()
if not khitminnyo:
print "\n There is nothing in khitminnyo."
raw_input("\n Press enter to continue......")
khitminnyo = ( "Laptop1", "Books" , "1Android" , "1000Ks7" )
print "\n Khit Minnyo has the items:", khitminnyo
raw_input("\n Press enter to exit.")
အထက္ပါ ကုဒ္လိုင္းေလးေတြ ေရးျပီးတာနဲ့ Save လိုက္ပါ
ထံုးစံအတိုင္း cd Desktop လို့ ေရးျပီး terminal ထဲ ဝင္ပါ။
python lesson6.py လို့ရိုက္ျပီး enter လိုက္ပါ။

Q.1 ဘာ error တက္လာတာကို သင္ေတြ့ရပါသလဲ။
Q.2 ဘာေျကာင့္ပါလဲ။
Q.3 သင္ ဘယ္လိုရွင္းမလဲ။
ကိုယ့္ဘာသာ ေျဖၾကည့္ၾကည့္ပါ
.......

OK
Lets go

Lesson 7 ၾကည့္ရန္  ဒီစာေၾကာင္းကို ႏွိပ္ပါ


ဒီ websiteကေလးမွာ တင္ထားတဲ့ အေၾကာင္းအရာေတြကို က႑အလိုက္ ၾကည့္ရႈလိုပါက ဒီစာေၾကာင္းေလးကိုႏွိပ္ျပီးလည္း ၾကည့္ႏိုင္ပါတယ္ Menu box ကေန ေရြးခ်ယ္ျပီးလည္း ၾကည့္ႏိုင္ပါတယ္ခင္ဗ်ာ

အားလံုး အဆင္ေျပေပ်ာ္ရႊင္ၾကပါေစ

Khit Minnyo
28 October, 2017




0 comments:

Post a Comment