Python Programming Language
Total Page:16
File Type:pdf, Size:1020Kb
ภาษาโปรแกรมมิ่งไพธอน Python programming language เอกวิทยาการคอมพิวเตอรì คณะวิทยาศาสตรì มหาวิทยาลัยนเรศวร 2 รายชื่อผูéจัดทำ ชื่อ รหัสนิสิต หนéาที่ดำเนินการ นายฉัตรชัย ดำดี 46320388 แบบฝกหัด นายทรงยศ คชนิล 46320511 จัดทำเอกสารการเรียน นางสาวธัญญากร แกéวประสงคì 46320610 ผูéชèวยสอน นายประจักษì เจตะภัย 46320693 ผูéชèวยสอนและแบบฝกหัด นายมารุต จันทรìบัว 46320818 แบบฝกหัด นางสาวศรินยา อยูèสุขดี 46320925 ผูéชèวยสอน นางสาวณัฐณิชา คงประกอบ 46321097 ผูéชèวยสอน นายอุทิศ ศักดิ์สิทธิ์ 46321139 ผูéชèวยสอนและแบบฝกหัด นายอรรณพ สุวัฒนพิเศษ 46321150 ผูéสอนและจัดทำเอกสารเรียน 3 4 คำนำ ภาษาไพธอนเปนภาษาที่ไดéรับความนิยมอยèางมากในปจจุบันเนื่องจากความสามารถที่สูง, การเรียนรูéที่ รวดเร็ว, การเขียนระบบที่เขéาใจงèาย และสามารถขยายขีดความสามารถในการสรéางโปรแกรมและซอฟตìแวรì ที่สูงมากขึ้นตลอดเวลา ทางทีมผูéจัดทำจึงเล็งเห็นวèาควรนำความรูé ความเขéาใจในการเขียนโปรแกรมดéวยภาษา ไพธอนมาเผยแพรè ดéวยจะไดéผูéอื่นไดéรับความรูéและไดéเขéาถึงภาษาที่เขียนใจงèาย, ทำงานรวดเร็ว และสามารถ สรéางสรรคìงานไดéอยèางมีความสามารถสูง อีกทั้งซอฟตìแวรìที่ใชéสรéางโปรแกรมและซอฟตìแวรìดéวยภาษาไพธอน นั้นมีทั้งแจกฟรี, รหัสเปด และเชิงธุรกิจ ซึ่งมีขีดความสามารถที่แตกตèางกัน แตèถึงแมéจะเปนซอฟตìแวรìที่ใชé เขียนโปรแกรมดéวยภาษาไพธอนจะแจกฟรี หรือเปนรหัสเปด ก็ไมèไดéดéอยไปกวèาเชิงธุรกิจเลย จึงเปนทางเลือก ที่ดีที่จะศึกษาเปนทางเลือกอีกทางหนึ่งนอกเหนือจากภาษาอื่น ๆ ที่ไดéรับความนิยมอยูèแลéว ทางทีมงานจึงหวังวèาทèานผูéที่นำเอกสารนี้ไปใชéในการศึกษาจะไดéรับประโยชนìสูงสุดในการเขียนโปรแกรม และซอฟตìแวรìดéวยภาษาไพธอน ทีมผูéจัดทำ 5 6 สารบัญ 1 แนะนำภาษาไพธอน 13 1.1 ประวัติ . 13 1.1.1 Python 1.0 . 13 1.1.2 Python 2.0 . 14 1.1.3 อนาคต . 14 1.2 หลักปรัชญาของภาษาไพธอน . 15 1.3 Language Evaluation Criteria . 15 1.4 ขéอเดèนของภาษาไพธอน . 15 1.5 Category และ Application Domains . 16 1.5.1 Web และ Internet Development . 16 1.5.2 Database Access . 16 1.5.3 Desktop GUI . 17 1.5.4 Scientific และ Numeric computation . 17 1.5.5 Education . 17 1.5.6 Network programming . 17 1.5.7 Software builder และ Testing . 17 1.5.8 Game และ 3D Graphics Rendering . 17 1.6 ซอฟตìแวรìที่เขียนดéวยไพธอน . 17 1.7 ตัวอยèางความสำเร็จของไพธอน . 18 2 การแสดงผลเบื้องตéน (Printing) 21 3 การตั้งตัวชื่อแปร และคำสงวน (Reserved word หรือ Keywords) 23 3.1 การตั้งตัวชื่อแปร . 23 3.2 คำสงวนในการใชéงาน (Reserved words, Keywords) . 23 4 การคำนวณทางคณิตศาสตรì (Arithmetic Mathematics) 25 4.1 การคำนวณพื้นฐาน (normal arithmetic operators) . 25 4.2 การคำนวณผèานฟงกìชั่นภายใน (Built-in Math Functions) . 26 4.2.1 การหาคèาสัมบูรณì (absolute value) . 26 4.2.2 จำนวนที่นéอยที่สุด และมากที่สุดในกลุèม (smallest or largest values) . 26 4.2.3 กำหนดจำนวนตัวเลขทศนิยม (specified number of digits) . 27 4.2.4 หาผลรวมทั้งหมดในชุดขéอมูล (adds numbers in a sequence.) . 27 4.2.5 ชèวงของขéอมูลตัวเลข (range of numbers.) . 27 7 8 สารบัญ 5 ชนิดของตัวแปร (Data type) 29 5.1 ตัวเลข (Numbers) . 29 5.1.1 จำนวนเต็ม(Integers) . 29 5.1.2 จำนวนจริง (Floating-point numbers) . 30 5.1.3 จำนวนเชิงซéอน (Complex Numbers) . 31 5.2 ชนิดขéอมูลแบบการรวมกลุèมขéอมูล (Collection Data Types) . 32 5.2.1 ลิสตì (List) . 32 5.2.2 ดิกชันนารี (Dictionary หรือ Groupings of Data Indexed by Name) . 33 5.2.3 ทับเบิ้ล (Tuples) และ อนุกรม (Sequences) . 34 5.2.4 เซ็ต (Sets) . 34 5.2.5 ฟงกìชั่นที่นèาสนใจเกี่ยวขéองกับลิสตìและดิกชันนารี . 35 5.3 สายอักขระ (String หรือ Array of Characters) . 39 5.3.1 ฟงกìชั่นที่นèาสนใจเกี่ยวขéองกับสายอักขระ . 42 6 การเปรียบเทียบ (Comparisons) 45 7 นิพจนìทางตรรกะศาสตรì (Boolean Expressions) 47 7.1 AND (และ) . 47 7.2 OR (หรือ) . 47 7.3 NOT (ไมè) . 48 8 ชèวงของการทำงาน (Statement block) และ ชèวงชีวิตของตัวแปร (Life time หรือ Variable scope) 49 8.1 ชèวงของการทำงาน (Statement block) . 49 8.2 ชèวงชีวิตของตัวแปร (Life time หรือ Variable scope) . 49 9 การควบคุมทิศทางของโปรแกรม (Control flow, Flow of Control หรือ Alternatively) 51 9.1 การตัดสินใจ (Decisions, Choice หรือ Selection) . 51 9.1.1 if Statements . 51 9.1.2 switch Statements . 53 9.2 การวนทำซ้ำ (Loop) . 53 9.2.1 while Statements . 53 9.2.2 for Statements . 53 9.2.3 pass, break, continue และ else Clauses Statements . 54 9.2.4 do-while Statements . 55 9.3 การจัดการความผิดปกติของโปรแกรม (Error Checking) . 55 9.3.1 assert Statements . 55 9.3.2 try-except และ raise Statements (Exception handling) . 56 10 การสรéางฟงกìชั่น (Defined Function) 59 10.1 การรับคèาของฟงกìชั่น, คืนคèากลับ และคèามาตรฐานของการรับคèา . 60 10.2 ตัวแปรแบบ Global (ทั่วไป) และ Local (เฉพาะสèวน) . 62 11 การใสèขéอมูลผèานคียìบอรìด (Input Data from Keyboard) 63 สารบัญ 9 ก เรื่องที่หéามลืมใน Python 67 ข การติดตั้ง Python, wxPython และ Stani’s Python Editor 69 ข.1 การติดตั้ง Python . 69 ข.2 การติดตั้ง wxPython . 72 ข.3 การติดตั้ง Stani’s Python Editor . 75 ค อธิบายสèวนตèาง ๆ พอสังเขปของโปรแกรม SPE 79 ค.0.1 Sidebar . 80 ค.0.2 Source . 81 ค.0.3 Tools . 81 ง การเขียน, Debug และสั่งใหéโปรแกรมทำงาน 85 ง.1 การเขียนโปรแกรมใน SPE และสั่งใหéโปรแกรมทำงาน . 85 ง.2 การ Debug โปรแกรม . 86 จ ขéอมูลอéางอิง 87 10 สารบัญ สารบัญรูป 1.1 Guido van Rossum . 14 ข.1 เลือกดาวนìโหลด Python 2.4 สำหรับ Windows . 69 ข.2 ขั้นตอนที่ 1 : ดับเบิลคลิ้กที่ไฟลìติดตั้ง . 70 ข.3 ขั้นตอนที่ 2 : เลือก "Install for all users" . 70 ข.4 ขั้นตอนที่ 3 : ใหéเลือกที่ติดตั้งที่ C:\Python24\ ..................... 70 ข.5 ขั้นตอนที่ 4 : เลือกติดตั้งทุกตัวเลือก . 71 ข.6 ขั้นตอนที่ 5 : ดำเนินการติดตั้ง . 71 ข.7 ขั้นตอนที่ 6 : เสร็จสิ้นการติดตั้ง . 71 ข.8 เลือกดาวนìโหลด wxPython runtime for Python 2.4 . 72 ข.9 เลือกสถานที่ดาวนìโหลด . 72 ข.10 ขั้นตอนที่ 1 : ดับเบิลคลิ้กที่ไฟลìติดตั้ง . 73 ข.11 ขั้นตอนที่ 2 : หนéาตéอนรับการติดตั้งใหé กด Next . 73 ข.12 ขั้นตอนที่ 3 : หนéายอมรับขéอตกลงใหé กด Yes . 73 ข.13 ขั้นตอนที่ 4 : หนéาเลือกสถานที่ติดตั้ง ใหéเลือกตามที่โปรแกรมไดéกำหนดไวéแตèแรก . 73 ข.14 ขั้นตอนที่ 5 : หนéาเลือก component ใหéเลือกทั้งหมด แลéวกด Next . 74 ข.15 ขั้นตอนที่ 6 : เขéาสูèขั้นตอนการติดตั้งและเมื่อเสร็จแลéวใหéเลือก checkbox ทั้งหมดเพื่อใหé โปรแกรมติดตั้งทำการดัดแปลงระบบเพิ่มเติมแลéวกด Finish . 74 ข.16 ดาวนìโหลด Stani´s Python Editor Version 0.8.2.a สำหรับ Windows ไดéจากลิงสì Source- Forge (mirror) . 75 ข.17 เลือกสถานที่ดาวนìโหลด . 75 ข.18 ขั้นตอนที่ 1 : ดับเบิลคลิ้กที่ไฟลìติดตั้ง . 76 ข.19 ขั้นตอนที่ 2 : หนéาตéอนรับการติดตั้งใหé กด Next . 76 ข.20 ขั้นตอนที่ 3 : หนéาเลือกสถานที่ติดตั้ง ใหéเลือกตามที่โปรแกรมไดéกำหนดไวéแตèแรก . 76 ข.21 ขั้นตอนที่ 4 : เขéาสูèขั้นตอนการติดตั้งโดยกด Next เพื่อเริ่มการติดตั้ง . 77 ข.22 ขั้นตอนที่ 5 : เขéาสูèขั้นตอนการติดตั้ง และเสร็จสิ้นการติดตั้ง . 77 ค.1 เปดโปรแกรม Stani’s Python Editor หรือเรียกสั้น ๆ วèา SPE ขึ้นมา . 79 ค.2 หนéาตèางโปรแกรม Stani’s Python Editor (SPE) . 80 ค.3 Shell . 81 ค.4 Local object browser . 82 ค.5 Session . 82 ค.6 Output . 82 11 12 สารบัญรูป ง.1 สั่งใหéโปรแกรมทำงาน . 85 ง.2 ผลการทำงาน . 85 ง.3 การแจéง Error เพื่อใชéประกอบการ Debug . 86 บทที่ 1 แนะนำภาษาไพธอน ไพธอน (Python) เปนภาษาโปรแกรมในลักษณะภาษาอินเตอรìพรีเตอรìโปรแกรมมิ่ง (Interpreted pro- gramming language) ผูéคิดคéนคือ Guido van Rossum ในป 1990 ซึ่งไพธอนเปน การจัดการชนิดของ ตัวแปรแบบแปรผันตามขéอมูลที่บรรจุอยูè (Fully dynamically typed) และใชéการจัดการหนèวยความจำเปน อัตโนมัติ (Automatic memory management) โดยไดéเปนการพัฒนาและผสมผสานของภาษาอื่น ๆ ไดéแกè ABC, Modula-3, Icon, ANSI C, Perl, Lisp, Smalltalk และ Tcl และภาษาไพธอนยังเปนแนวคิดที่ทำใหé เกิดภาษาใหมè ๆ ซึ่งไดéแกè Ruby และ Boo เปนตéน ไพธอนนั้นพัฒนาเปนโครงการ Open source โดยมีการจัดการแบบไมèหวังผลกำไรโดย Python Software Foundation และสามารถหาขéอมูลและตัวแปรภาษาไดéจากเว็บไซตìของไพธอนเอง ที่ http://www.python.org/ ซึ่งในปจจุบัน (ณ.วันที่ 25 กันยายน 2549) ไพธอนไดéพัฒนาถึงรุèนที่ 2.5 (ออกวันที่ 19 กันยายน 2549) * เอกสารเลèมนี้ยึดตามไพธอนรุèนที่ 2.4.3 (ออกวันที่ 29 มีนาคม 2549) 1.1 ประวัติ 1.1.1 Python 1.0 ไพธอนสรéางขึ้นครั้งแรกในป 1990 โดย Guido van Rossum ที่ CWI (National Research Insti- tute for Mathematics and Computer Science) ในประเทศเนเธอรìแลนดì โดยไดéนำความสำเร็จของภาษา โปรแกรมมิ่งที่ชื่อ ABC มาปรับใชéกับ Modula-3, Icon, C, Perl, Lisp, Smalltalk และ Tcl โดย Dui- do van Rossim ถือวèาเปนผูéริเริ่มและคิดคéน แตèเคéาก็ยังคิดวèาผลงานอยèางไพธอนนั้น เปนผลงานความรูéที่ ทำขึ้นเพื่อความสนุกสนานโดยไดéอéางอิงงานชิ้นนี้ของเขาวèาเปน Benevolent Dictator for Life (BDFL) ซึ่ง ผลงานที่ถูกเรียกวèาเกิดจากความสนุกสนานเหลèานี้นั้นมักถูกเรียกวèา BDFL เพราะมักเกิดจากความไมèตั้งใจ และความอยากที่จะทำอะไรที่เปนอิสระนั้นเอง ซึ่งคนที่ถูกกลèาวถึงวèาทำในลักษณะแบบนี้ก็ไดéแกè Linus Tor- valds ผูéสรéาง Linux kernel, Larry Wall ผูéสรéาง Perl programming language และคนอื่น ๆ อีกมากมาย โดยที่ในไพธอน 1.2 นั้นไดéถูกปลèอยออกมาในป 1995 โดย Guido ไดéกลับมาพัฒนาไพธอนตèอที่ Corpo- ration for National Research Initiatives (CNRI) ที่ เรสตัน, มลรัฐเวอรìจิเนีย ประเทศสหรัฐอเมริกา โดย ที่ในขณะเดียวกันก็ไดéปลèอยรุèนใหมè ในหมายเลขรุèน 1.6 ออกมาโดยอยูèที่ CNRI เชèนกัน ซึ่งหลังจากปลèอยรุèน 1.6 ออกมาแลéว Guido van Rossum ก็ไดéออกจาก CNRI เพื่อทำงานใหéการทำธุรกิจ พัฒนาซอฟตìแวรìแบบเต็มตัว โดยกèอนที่จะเริ่มทำงานธุรกิจ เขาก็ไดéทำใหéไพธอนนั้นอยูèบนสัญญาลิขสิทธิ์ แบบ General Public License (GPL) โดยที่ CNRI และ Free Software Foundation (FSF) ไดéรวม กันเปดเผยรหัสโปรแกรมทั้งหมด เพื่อใหéไพธอนนั้นไดéชื่อวèาเปนซอฟตìแวรìเสรี และเพื่อใหéตรงตามขéอกำหนด 13 14 แนะนำภาษาไพธอน รูปที่ 1.1: Guido van Rossum ของ GPL-compatible ดéวย (แตèยังคงไมèสมบูรณìเพราะการพัฒนาในรุèน 1.6 นั้นออกมากèอนที่จะใชéสัญญา ลิขสิทธิ์แบบ GPL ทำใหéยังมีบางสèวนที่ยังเปดเผยไมèไดé) และในปเดียวกันนั้นเอง Guido van Russom ก็ไดéรับรางวัลจาก FSF ในชื่อวèา "Advancement of Free Software" โดยในปนั้นเองไพธอน 1.6.1 ก็ไดéออกมาเพื่อแกéปญหาขéอผิดพลาดของตัวซอฟตìแวรìและใหéเปนไปตาม ขéอกำหนดของ GPL-compatible license อยèางสมบูรณì 1.1.2 Python 2.0 ในป 2000 Guido และ Python Core Development team ไดéยéายการทำงานไป BeOpen.com โดยที่ พวกเขาไดéยéายจาก BeOpen PythonLabs team โดยในไพธอนรุèนที่ 2.0 นั้นไดéถูกนำออกเผยแพรèตèอบุคคล ทั่วไปจากเว็บไซตì BeOpen.com และหลังจากที่ไพธอนออกรุèนที่ 2.0 ที่