Python3 Lesson 3
Lesson 1 မၾကည့္ရေသးသူမွာ ဒီစာေၾကာင္းကို ႏွိပ္ပါ
Lesson 2 မၾကည့္ရေသးသူမွာ ဒီစာေၾကာင္းကို ႏွိပ္ပါ
.
Python Programming
Using Comment in Python
မေန႔က ကြ်န္ေတာ္ နမူနာျပခဲ့တဲ့ python program အေသးေလးကို ျပန္ၾကည့္ရေအာင္။
Example Program
......................
#enter name
name = input("What is your name?")
print ("Hello, " + name + "!")
#enter age
age = input("How old are you?")
print ("That's great, " + name + "!")
#Asking temperature outside
temperature = float(input("What is the temperature outside, " + name + "?"))
if temperature > 70:
print ("Weather is so hot. Please, wear shorts")
print ("Enjoy your day, " + name + "!")
else:
print ("Wear long pants, " + name + "!")
print ("Get some exercise outside")
..............................
ကြ်န္ေတာ္ေရးျပခဲ့တဲ့ ပရိုဂရမ္မွာ အစဆံုးကေန စျပီး တစ္ပိုဒ္စီရဲ႕ အစတိုင္းမွာ # ခံေရးထားတဲ့ စာေၾကာင္းေလးေတြ ေတြ႔ရမွာပါ။
Program ကို RUN ၾကည့္တဲ့အခါ ထိုစာလံုးေတြ ေပၚမလာတာကိုလည္း သတိထားမိၾကမွာပါ။ အဲဒါကို comment လို႔ ေခၚတယ္ဆိုျပီး ကိုယ္ေရးခ်င္တဲ့ မွတ္စု ကို ထည့္သြင္းမွတ္ထားႏိုင္တယ္ဆိုတာ ေျပာခဲ့ပါတယ္။
ဒီေန႔ ေဆြးေႏြးမွာက comment ကို ဘာေၾကာင့္ သံုးတာလဲ ဆိုတာပါ။
Program ေတြ ႀကီးလာတာနဲ႔အမွ် ပိုပိုျပီး ရႈပ္ေထြးလာၾကသလို ဖတ္ရတာလည္း ပိုပိုခက္လာပါတယ္။ ပရိုဂရမ္ ႀကီးလာတာနဲ႔အမွ် ရွာေဖြရတဲ့အပိုင္းေတြ ျပင္ဆင္ခ်င္တဲ့အပိုင္းေတြကို ျပန္ရွာရခက္သြားတယ္။ အဲသလိုပဲ
ကိုယ္ေရးခဲ့တုန္းက ဒီအပိုင္းက ဘာလုပ္ဖို႔ ေရးခဲ့တာ။ ဘာေၾကာင့္ ေရးခဲ့တာ စတာကို ျပန္ေတြးရ စဥ္းစားရတာကလည္း ပိုခက္လာပါတယ္။ ေရးခဲ့တဲ့ အစိတ္အပိုင္းထဲမွာ ကိုယ့္အေနနဲ႔ နားလည္လြယ္မယ့္ မွတ္သားခ်က္ တစ္ခုခု ထည့္သြင္းေရးဆြဲဖို႔ စိတ္ကူးမိတယ္ဆိုရင္ေတာ့ ဒါဟာ သိပ္ေကာင္းတဲ့ idea လို႔ ဆိုရမွာျဖစ္ျပီး အဲသလို ထည့္သြင္းမွတ္သားထားတဲ့ မွတ္စုေတြကို Python မွာ comment လို႔ ေခၚပါတယ္။ # ခံေရးရပါတယ္။ Enter မႏွိပ္မခ်င္း
အဲသည္စာတန္းကို ပရိုဂရမ္မာရဲ႕ မွတ္စုလို႔ စက္က သတ္မွတ္ထားမွာျဖစ္ျ္ပီး run တဲ့အခ်ိန္ ထုတ္ျပမွာမဟုတ္ပါဘူး။
Program ကို ျပန္ စစ္ေဆးတဲ့အခါေတြမွာလည္း ဒီ note ေလးေတြ ဖတ္ျပီး အလြယ္တကူ မွတ္မိႏိုင္ပါတယ္။ ဒါေၾကာင့္ ျပန္စဥ္းစားရတာ အခ်ိန္ တိုနဲ႔ ျပီးသြားတာေပါ့။
...............................................................................
ဒီတစ္ခါေတာ့ Variable အမည္ ေရြးခ်ယ္ျခင္းကို ေျပာျပပါမယ္
ကြ်န္ေတာ္တို႔ေတြဟာ variable ေတြ အမ်ိဳးမ်ိဳးေတာ့ သတ္မွတ္ေရးသားေနၾကပါတယ္။ variable တစ္ခုစီအတြက္ နာမည္ေရြးခ်ယ္မႈပိုင္းကအစ ဘယ္လို သတ္မွတ္ယူရတယ္ဆိုတာမ်ိဳး ခုထိ မေျပာရေသးပါဘူး။
ဒီေန႔ေတာ့ ေျပာျပီေနာ္။
သင့္အေနနဲ႔ python မွာ variable ေတြ ေပးဖို႔အတြက္ အမည္မ်ားစြာကို အသံုးျပဳႏိုင္မွာျဖစ္ပါတယ္။ ဒါေပမယ့္ သင့္အေနနဲ႔ variable အျဖစ္ ေပးလို႔မရတဲ့ နာမည္ေတြလည္း ရွိေနပါေသးတယ္။
Reserve Words ေတြကို သင့္အေနနဲ႔ variable အမည္အျဖစ္ အသံုးျပဳႏိုင္ျခင္း မရွိပါဘူး။ သံုးမိခဲ့ရင္ ပရိုဂရမ္က ဘာလုပ္ရမွန္းမသိဘဲ ရႈပ္ေထြးသြားမွာျဖစ္ပါယ္။ ဒါေၾကာင့္ သင့္အေနနဲ႔ အသံုးမျပဳရမယ့္ နာမည္ေတြကို သိေနဖို႔ေတာ့ လို႔ပါတယ္။
................................
Reserved Keywords for Python Programming
Keywords
Here is a list of the Python keywords. ဒါကို အဓိက မွတ္ပါ။
False def if raise
None del import return
True elif in try
and else is while
as except lambda with
assert finally nonlocal yield
break for not
class from or
continue global pass
အထက္ပါ စကားလံုးေတြကေတာ့ Python Keywords ေတြပဲ ျဖစ္ပါတယ္။ Variable သတ္မွတ္တဲ့အခါ သူတို႔ကို အသံုးျပဳလို႔ မရပါဘူး။ ဒီစာလံုးေတြကို အလြတ္မရရင္ေတာင္ သင္သံုးမိတဲ့အခါ သူက Orange အေရာင္နဲ႔ ျပေပးမွာျဖစ္လို႔ သင့္အေနနဲ႔ variable သတ္မွတ္လို႔ မရမွန္း တန္းသိပါမယ္။ variable သတ္မွတ္တဲ့အခါ အနက္ေရာင္စာလံုးသာ ျမင္ရမွာ ျဖစ္လို႔ပါပဲ။ ဥပမာ
IDLE 3 ဖြင့္ျပီး kmn = 5 လို႔ ေပးၾကည့္ပါ။ kmn ကို အနက္ေရာင္နဲ႔ ျမင္ရမွာပါ။ အထက္ပါ keywords ေတြထဲက class = 5 လို႔ ေရးၾကည့္ပါ။ class ေရးျပီးတာနဲ႔ ခ်က္ခ်င္း အေရာင္ေျပာင္းသြားတာကို ေတြ႕ရမွာျဖစ္ပါတယ္။
......................................................................
Modules
BlindElephant base64 imghdr reprlib
CDROM bdb imp requests
ChAP binascii importlib resource
DLFCN binhex inspect rfidiot-cli
IN binwalk io rlcompleter
OpenGL bisect ipaddress runpy
PIL brlapi isotype sched
PyQt4 builtins itertools scipy
TYPES bz2 jcopmifare select
__future__ c1218 jcopsetatrhist selectors
_ast c1219 jcoptool send_apdu
_bisect c1222 json serial
_bootlocale cProfile keyword shelve
_bz2 cairo lfxtype shlex
_codecs calendar lib2to3 shutil
_codecs_cn cardselect linecache signal
_codecs_hk caribou locale sip
_codecs_iso2022 cgi logging sipconfig
_codecs_jp cgitb loginall sipconfig_nd5
_codecs_kr chardet louis site
_codecs_tw chunk lsb_release sitecustomize
_collections cmath lzma six
_collections_abc cmd macpath smbc
_compat_pickle code macurl2path smoke_zephyr
_compression codecs mailbox smtpd
_crypt codeop mailcap smtplib
_csv collections marshal sndhdr
_ctypes colorsys math socket
_ctypes_test compileall matplotlib socketserver
_curses concurrent mifarekeys sod
_curses_panel configparser mimetypes speechd
_datetime contextlib miniterm speechd_config
_dbm copy mmap spwd
_dbus_bindings copyreg modulefinder sqlite3
_dbus_glib_bindings copytag mpl_toolkits sre_compile
_decimal crcelk mrpkey sre_constants
_dummy_thread createfontdatachunk multiprocessing sre_parse
_elementtree crypt multiselect ssl
_functools csv netrc stat
_hashlib ctypes nis statistics
_heapq cups nntplib string
_imp cupshelpers ntpath stringprep
_io curses nturl2path struct
_json cycler numbers subprocess
_locale datetime numpy sunau
_lsprof dateutil opcode symbol
_lzma dbm operator symtable
_markupbase dbus optparse sys
_md5 deb822 orca sysconfig
_multibytecodec debconf os syslog
_multiprocessing debian ossaudiodev tabnanny
_opcode debian_bundle painter tarfile
_operator deblaze parser telnetlib
_osx_support decimal pathlib tempfile
_pickle decorator pdb termineter
_posixsubprocess demotag pickle termios
_pydecimal difflib pickletools test
_pyio dis pig textwrap
_random distutils pilconvert this
_sha1 doctest pildriver threading
_sha256 dummy_threading pilfile thresholder
_sha512 eeprom pilfont time
_signal email pilprint timeit
_sitebuiltins encodings pipes tkinter
_smbc enhancer pkg_resources token
_socket enum pkgutil tokenize
_sqlite3 errno platform trace
_sre explode player traceback
_ssl faulthandler plistlib tracemalloc
_stat fcntl pn532emulate transit
_string fdxbnum pn532mitm tty
_strptime filecmp poplib turtle
_struct fileinput posix types
_symtable fnmatch posixpath typing
_sysconfigdata formatmifare1kvalue pprint unicodedata
_sysconfigdata_m formatter profile unique
_testbuffer fpectl pstats unittest
_testcapi fractions pty uno
_testimportmultiple froschtest pwd unohelper
_testmultiphase ftplib py_compile urllib
_thread functools pyasn1 urllib3
_threading_local gc pyatspi uu
_tkinter genericpath pyclbr uuid
_tracemalloc getopt pydoc venv
_warnings getpass pydoc_data viewer
_weakref gettext pyexpat warnings
_weakrefset gi pygtkcompat wave
abc gifmaker pylab weakref
aifc glob pyparsing webbrowser
antigravity grp pyqtgraph writelfx
apt gzip pytz writemifare1k
apt_inst hashid q5reset wsgiref
apt_pkg hashlib queue xdg
aptsources heapq quopri xdrlib
argparse hidprox random xml
array hitag2brute re xmlrpc
ast hitag2reset readlfx xxlimited
asynchat hmac readline xxsubtype
asyncio html readmifare1k zipapp
asyncore http readmifaresimple zipfile
atexit idlelib readmifareultra zipimport
audioop imaplib readtag zlib
အထက္ပါ စကားလံုးေတြက python ရဲ႕ module ေတြ ျဖစ္တာေၾကာင့္ variable နာမည္ေတြဟာ သူတို႔နဲ႔ မတူညီရပါဘူး။
သံုးမိခဲ့ရင္ ဒီတိုင္းစမ္းၾကည့္ရင္ေတာ့ ရေပမယ့္ module ေတြ run တဲ့အခါေတာ့ ရႈပ္သြားတတ္ပါတယ္။
........................................................................................
Symbols
!= *= << ^
" + <<= ^=
""" += <= _
% , <> __
%= - == `
& -= > b"
&= . >= b'
' ... >> j
''' / >>= r"
( // @ r'
) //= J |
* /= [ |=
** : \ ~
**= < ]
အထက္ပါ သေကၤတေတြဟာလည္း Symbols ေတြ ျဖစ္လို႔ variable နာမည္ မထည့္ရပါဘူး။
..............................................................................................
Topics
Here is a list of available topics.
ASSERTION DELETION LOOPING SHIFTING
ASSIGNMENT DICTIONARIES MAPPINGMETHODS SLICINGS
ATTRIBUTEMETHODS DICTIONARYLITERALS MAPPINGS SPECIALATTRIBUTES
ATTRIBUTES DYNAMICFEATURES METHODS SPECIALIDENTIFIERS
AUGMENTEDASSIGNMENT ELLIPSIS MODULES SPECIALMETHODS
BASICMETHODS EXCEPTIONS NAMESPACES STRINGMETHODS
BINARY EXECUTION NONE STRINGS
BITWISE EXPRESSIONS NUMBERMETHODS SUBSCRIPTS
BOOLEAN FLOAT NUMBERS TRACEBACKS
CALLABLEMETHODS FORMATTING OBJECTS TRUTHVALUE
CALLS FRAMEOBJECTS OPERATORS TUPLELITERALS
CLASSES FRAMES PACKAGES TUPLES
CODEOBJECTS FUNCTIONS POWER TYPEOBJECTS
COMPARISON IDENTIFIERS PRECEDENCE TYPES
COMPLEX IMPORTING PRIVATENAMES UNARY
CONDITIONAL INTEGER RETURNING UNICODE
CONTEXTMANAGERS LISTLITERALS SCOPING
CONVERSIONS LISTS SEQUENCEMETHODS
DEBUGGING LITERALS SEQUENCES
အထက္ပါ topic ေတြကိုလည္း variable name မွာ မသံုးသင့္ပါဘူး။။။။။။။။။။။။။။။။။။။။။။။။။။။။
....................................................................................................
မသံုးရမွာေတြက မ်ားလိုက္တာ ဘယ္လိုမွတ္မိမလဲ လို႔ ေမးစရာရွိပါတယ္။ ဒါဆိုရင္ေတာ့ ကြ်န္ေတာ္တို႔ ေရွ႕ပိုင္းမွာ ေလ့က်င့္ခဲ့တဲ့ သင္ခန္းစာေတြထဲက variables ေတြထဲမွာ ဒီစာလံုးေတြ တစ္လံုးမွ မပါခဲ့တာက သက္ေသပါပဲ။
တမင္သာမဟုတ္ရင္ ဒီစာလံုးေတြကို variable name ေပးမိဖို႔ေတာင္ မရွိပါဘူး။ Keywords ေတြသာ မွားႏိုင္ေျခရွိပါတယ္။ Keywords တစ္မ်ိဳးတည္းကိုသာ အေသမွတ္ထားပါ။
.......................................................................................................
Python Programming
.
Debugging
မမွန္ကန္တဲ့ variable name ကို သံုးမိရင္ အမ်ားဆံုး ေပၚေလ့ရွိတာက Syntax error ပါ။ IDLE3 မွာ ရိုက္ၾကည့္ပါ။
>>> kmn = 5 သတ္မွတ္လို႔ ရေပမယ့္
>>> class = 6
SyntaxError: invalid syntax
ဆိုျပီး ေပၚလာမွာျဖစ္ပါတယ္။ class ေရးကတည္းက အေရာင္ ေျပာင္းေနတာ သတိထားမိရင္ ခုလို ေပၚစရာ မရွိေတာ့ဘူးေပါ့။
ေနာက္တစ္ခု ၾကည့္ရေအာင္ပါ။ IDLE3 မွာပါပဲ။ ခုန ေအာက္မွာ ဆက္ရိုက္ၾကည့္ပါ။
>>>bag name = 5
SyntaxError: invalid syntax
>>> ဘာမွ မပါဘဲနဲ႔ ဘာျဖစ္တာလဲ ေမးစရာရွိပါလိမ့္မယ္။ variable name ေတြမွာ space ျခားထားလို႔ပါပဲ။ Space ျခားလိုက္တဲ့အတြက္ python က operand ၂ခု အေနနဲ႔ ျမင္သြားပါတယ္။ operator မပါတဲ့ operands အေနနဲဲ႔ ျမင္သြားလို႔ error တက္လာျခင္း ျဖစ္ပါတယ္။ ဥပမာေျပာရရင္ if နဲ႔ ဆင္တူပါတယ္။
name = "Aye Aye"
if name == "Mg Mg":
print "Mg Mg, you have no permission to enter."
elif name == "Ag Ag":
print "Ag Ag, you have no permission to enter."
elif name == "Ma Ma":
print "Ma Ma, you have no permission to enter."
elif name == "Aye Aye":
print "Hello! Aye Aye, welcome to our admin team."
else:
print "Sorry, you have no permission to enter."
ဒီနမူနာေလးကို ေရွ႕တုန္းက သင္ခဲ့ျပီးျပီေနာ္။ အေပၚေၾကာင္းပဲ ျဖတ္ျပီးရွင္းျပပါမယ္။
name = "Aye Aye" လို႔ variable သတ္မွတ္လိုက္တယ္။
if name == if ဆိုတဲ့ operator ေနာက္မွာ ခုန variable name အဲပံုစံနဲ႔ လုိက္ပါတယ္။ ဒါေၾကာင့္
bag name = ဆိုျပီး variable သတ္မွတ္လို႔ မရတာျဖစ္ပါတယ္။ ဒါဆို ဘယ္လိုလုပ္မလဲ။ variable ကိုလည္း bag name လို႔ ေပးမွ တြက္ရ ျပန္ရွာရ လြယ္မွာ/
မခက္ပါဘူး။ ဒီလို ေပးလိုက္ရင္ ရပါျပီ။
bag_name = 5 ဘာ error မွ မတက္ေတာ့ပါဘူး။ အဓိကကေတာ့ space မျခားဖို႔ပါပဲ။
SyntaxError: invalid syntax ျပီးျပီဆိုေတာ့ ဒီခါ Run Time Error အေၾကာင္း ဆက္ရေအာင္
...........................
RUN Time Error
ဒါကိုေတာ့ ကြန္ပ်ဴတာ သံုးသူေတြ ေတြ႔ဖူးေနက် ျဖစ္ႏိုင္ပါတယ္။ ေတြ႔ဖူးခ်င္မွလည္း ေတြ႔ဖူးပါလိမ့္မယ္။ ဂိမ္းကစားရင္း time limit ကုန္သြားတဲ့ RUN Time Error ကို ေျပာတာမဟုတ္ပါဘူး။
RUN တဲ့ အခ်ိန္(time) မွာ လြဲေခ်ာ္မႈေၾကာင့္ error တက္တာေပါ့။ ဥပမာ သင္က variable မသတ္မွတ္ရေသးခင္ variable ကို သံုးမိတယ္ဆိုပါေတာ့။ Run Time Error တက္လာမွာပါ။
နမူနာ စမ္းရေအာင္ ဖြင့္ထားတဲ့ IDLE ရွိရင္ ပိတ္။ IDLE အသစ္သံုးျပီး စမး္ရေအာင္။
>>> kmn
Traceback (most recent call last):
File "
kmn
NameError: name 'kmn' is not defined
kmn က ဘာ ဆိုတဲ့ သတ္မွတ္ခ်က္ မသတ္မွတ္ရေသးဘဲ ေခၚသံုးမိတာကိုး။
>>> if kmn == 5:
print ("Birthday")
*****enter ၂ခ်က္ ႏွိပ္မွ ရမယ္ေနာ္။******
Traceback (most recent call last):
File "
if kmn == 5:
NameError: name 'kmn' is not defined
>>> ဒါလည္း ထို႔အတူပါပဲ။ အစမွာ ဘာမွ မသတ္မွတ္ရေသးဘဲ သံုးမိတာကိုး။
တစ္ကယ္တမ္း ျဖစ္ရမွာက variable သတ္မွတ္ျပီးမွ ေခၚသံုးရမွာပါ ေအာက္ပါအတိုင္းေပါ့
ခုန IDLE 3 မွာပဲ ဆက္ရိုက္လည္း ရတယ္။ အသစ္မွာလည္း ရပါတယ္။
>>> kmn = 5 (သတ္မွတ္လိုက္တယ္)
>>> kmn
5 (ေခၚသံုးၾကည့္တာ အေျဖထြက္လာတယ္)
>>> if kmn == 2:
print ("Hello")
else:
print ("No")
No
................
if kmn == 2 လို႔ ေရးထားခဲ့လို႔ enter ၂ခ်က္ဆင္းေတာ့ else အေျဖ ထြက္တာပါ။ အေပၚမွာ သတ္မွတ္ခဲ့တာက kmn = 5 ျဖစ္လို႔ပါပဲ။ IDLE မွာ ေရးတဲ့ခါ else အေၾကာင္း မေရးခင္ ေရွ႕ကို ျပန္သြားဖို႔ မေမ့နဲ႔ေနာ္။
..................
ဒီခါ ကြ်န္ေတာ္ ေဆြးေႏြးသြားမွာက Python Strings ေတြကိုပါ။
.
Introduction to Strings
(Manipulating Strings)
Strings are lines of text that are declared with single quotes or double quotes. တဲ့။ သူ႔ရဲ႕ မူလ defination ကိုက ၾကည့္လိုက္တာနဲ႔ ရွင္းပါတယ္။
Strings ဆိုတာဟာ single quote ('abcd') or double quotes ("abcd") ထဲမွာ ေရးထားတဲ့ စာေတြကို ဆိုလိုပါတယ္တဲ့။
>>> "Happy" + " " + "Birthday!"
'Happy Birthday!'
>>> မ်က္ေတာင္အဖြင့္ အပိတ္လို႔ ကြ်န္ေတာ္တို႔ ေခၚခဲ့ၾကတဲ့ quotes ေတြထဲမွာ ေရးရျပီး အစိမ္းေရာင္ စာလံုးေလးေတြနဲ႔ IDLE 3 မွာ ျမင္ရမယ့္ စာေတြကို ဆိုလိုပါတယ္။
တစ္ခါတစ္ခါ string ေတြကို တစ္ေၾကာင္းတည္း တစ္ပံုစံတည္းေဖာ္ျပဖို႔ ခက္တဲ့အခါ ဒီပံုစံမ်ိဳး သံုးျပီး ေဖာ္ျပရပါေသးတယ္။
Triple quoted String
e.g.
>>> kmn = '''
There are many needs for large programs:
1. Hi
2. Hello
3. Hey
4. Wow!
'''
>>> print (kmn)
There are many needs for large programs:
1. Hi
2. Hello
3. Hey
4. Wow!
>>> kmn = ဆိုျပီးတဲ့ေနာက္မွာ triple quotes ကို အသံုးျပဳလိုက္ပါတယ္။ (' ' ') or (" " ") ပါ။ အဖြင့္နဲ႔ အပိတ္ တူဖို႔လိုပါတယ္။ ေနာက္ျပီး သံုးခုကို တစ္ဆက္တည္း ရိုက္သြားရပါမယ္။
...............................
Object Orientation
Python is an Object-Oriented Programming language (OOP). Every piece of data and even functions and types are objects.
Python သည္ bject-Oriented Programming language (OOP) ျဖစ္ပါတယ္။ ေဒတာ အပိုင္းအစေတြ ဖန္ရွင္ေတြနဲ႔ ပံုစံတိုင္းက Object ေတြ ျဖစ္ၾကပါတယ္
စာလံုး အႀကီးအေသး ေျပာင္းလဲ အသံုးျပဳႏိုင္တဲ့ function ေလးကို စမ္းၾကည့္ပါဦး။
>>> s="Hello!"
>>> s.upper()
'HELLO!'
>>> s.lower()
'hello!'
...........................
အထက္ပါ ဥပမာ ကို ရွင္းရရင္ upper ဆိုတာ method တစ္ခု ျဖစ္ျပီးေတာ့ string နဲ႔ တြဲဆက္နိုင္ string ထဲက စာေတြကို စာလံုးအႀကီးေတြခ်ည္း ေျပာင္းလဲေပးႏိုင္တဲ့ method ျဖစ္ပါတယ္။
အဲဒါကို သံုးႏိုင္ဖို႔အတြက္ variable သတ္မွတ္ရပါတယ္။ ျပီးရင္ေတာ့ variabel.upper() ပံုစံနဲ႔ အသံုးျပဳရတာျဖစ္ပါတယ္။ lower လည္း upper လိုပါပဲ။ စာလံုးႀကီးနဲ႔ အေသးသာ ကြာတာျဖစ္ပါတယ္။
ဒီေနရာမွာ ေတြးမိဖို႔ လိုတာက data type တိုင္းက သူတို႔ေပၚ သက္ေရက္မႈရွိမယ့္ operation (methods) ေတြကို သိၾကတယ္ ဆိုတာေပါ့။
String ေပၚ သက္ေရာက္ေသာ Methods မ်ား
Methods on Strings
Strings ေတြဟာ Operation ေပါင္းမ်ားစြာကို support ေပးပါတယ္။ ဒီ methods ေတြရဲ႕ list ကို dir("...") ဆိုတဲ့ built-in function ကို အသံုးျပဳရရွိႏိုင္ပါတယ္။
>>> dir ("")
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>>
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>>
...................................
Example
s.replace(sub, replacement, count) ဆိုတဲ့ ပံုစံက အလြန္ အသံုးမ်ားျပီး လိုအပ္တဲ့ ပံုစံ တစ္ခု ျဖစ္ပါတယ္။
s ဆိုတာက နမူနာ variable ပါ။ အေပၚမွာ s- "Hello!" ဆိုတာ ေျပာထားတာမို႔ ဆက္ေျပာလိုက္ျခင္း ျဖစ္ပါတယ္။
sub ကေတာ့ ကိုယ္ အစားထိုး ျဖည့္သြင္းမယ့္ sub လို႔ မွတ္ပါ။
replacement ဆိုတာကေတာ့ ကိုုယ္ အစားထိုး ျဖည့္သြင္းမယ့္ စကားလံုးပါ။
count ကေတာ့ အေရအတြက္ကို ျပတာေပါ့ဗ်ာ။
ကဲ ဒီတိုင္း နားမလည္ရင္ ဥပမာေလးနဲ႔ ၾကည့္ရေအာင္ဗ်
>>> s = '-123' ဒါက variable သတ္မွတ္တာ ရွင္းပါတယ္ေနာ္
>>> t = s.replace('-', '', 1) t ကို s က ကိန္းကိုပဲ အစားထိုးမယ္လို႔ ေျပာလိုက္တာ။ အဲမွာ ဆက္ရွင္းျပရရင္
s.replace('-', '', 1)
sကို အစားထိုးမယ္ ('-ေနရာကို', ' 'ဘာမွ မျဖည့္ထားတာနဲ႔ , တစ္ၾကိမ္ အစားထိုးမယ္ေပါ့။
>>> t tကို print ၾကည့္တဲ့အခါ
'123' - ေနရာ ဘာမွျဖည့္မထားတဲ့အတြက္ ဘာမွ မရွိေတာ့တာ ေတြ႕ရပါမယ္။
>>>
ရွင္းသြားေအာင္ ေနာက္တစ္ခု ထပ္ၾကည့္ရေအာင္ပါ။
>>> p = '1, 1, 2, 2, 2, 3' p ကို variable သတ္မွတ္လိုက္တယ္။
>>> q = p.replace('2', '3', 3) q က်ေတာ့ p တန္ဖိုးေတြထဲက 2 ကို 3 နဲ႔ 3 ခါ အစားထိုးမယ္လို႔ ဆိုလိုတာပါ။
>>> q print လိုက္တဲ့အခါမွာေတာ့ q တန္ဖိုးမွာ p မွာတုန္းက ရွိခဲ့တဲ့ 2 သံုးလံုးေနရာမွာ ၃ သံုးလံုး အစားထိုး ေရာက္လာတာကို ေတြ႕ရမွာျဖစ္ပါတယ္။
'1, 1, 3, 3, 3, 3'
............................
>>> s = '-123' ပထမဆံုးတစ္ခုပါပဲ
>>> t = s.replace('-', '', 1) - ေနရာမွာ ဘာမွမရွိတာနဲ႔ အစားထိုးတယ္
>>> t - ေပ်ာက္သြားျပီ
'123'
>>> o = s.replace('-', '+', 2) - ေနရာမွာ + နဲ႔ အစားထိုးတယ္။ ၂ႀကိမ္ အစားထိုးမယ္လို႔ ေရးမိထားတယ္။
>>> o
'+123' +123 ျဖစ္သြားျပီ။ + တစ္ခုပဲ အစားဝင္လာတယ္။ ၂ခုမလာဘူး။ အေၾကာင္းကေတာ့ အစားသြင္းစရာ ၂ ေနရာ မရွိလို႔ ျဖစ္တယ္။
........................
ရွင္းေလာက္ျပီလို႔ ယူဆပါတယ္။
ေနာက္တစ္ခု counting ထပ္လာပါမယ္။
s.count(sub) ပံုစံပါ။
ကဲ စျပီေနာ္
.....
>>> s = 'Once upon a time, there was a king in the forest. His name was King Naung.'
>>> s.count('o')
2
>>> s.count('o') ဆိုတာက s ဆိုတဲ့ string ထဲက o အေရအတြက္ကို ေရတြက္မယ္လို႔ ဆိုလိုတာပါ။ o အေသးေနာ္။ အႀကီးေရခ်င္ရင္ အႀကီး ေရးရမယ္။
>>> s.count('was')
2
အတြဲလိုက္ကိုလည္း ရွာေဖြ ေရတြက္ႏိုင္ပါတယ္။ စာေတြ အရမ္းမ်ားသြားရင္ ရွာရတာ အဆင္ေျပတာေပါ့။
>>> s.count('')
75
အားလံုးကို ေရတြက္တာပါ။ စာလံုးေရ ၇၅ လံုး ရွိတယ္လို႔ အေျဖထြက္ပါတယ္။ မယံုရင္ ေရၾကည့္ပါ။
>>>s.count(' ')
15
space bar ခ်ထားတဲ့အေရအတြက္ပါ။ အထက္ပါ ၂ခု မွားတတ္တယ္ေနာ္ ေသခ်ာၾကည့္ ေရးပံုလံုးဝ မတူပါ။ space ေရခ်င္ရင္ ' ' ၾကားမွာ space ျခားရပါမယ္။
ဒီေန႔ေတာ့ ဒီေလာက္ပဲ မွတ္ရေအာင္ပါ။ အရမ္းမ်ားေနရင္ မမွတ္မိမွာစိုးလို႔
Python3 Lesson 4 ၾကည့္ရန္ ဒီစာေၾကာင္းကို ႏွိပ္ပါ
Thanks
Khit Minnyo
No comments