python programming language

91
Python programming language

Upload: ford-antitrust

Post on 11-Aug-2015

2.297 views

Category:

Documents


2 download

DESCRIPTION

ภาษาโปรแกรมมิ่งไพธอนPython programming languageเอกวิทยาการคอมพิวเตอร์คณะวิทยาศาสตร์มหาวิทยาลัยนเรศวร

TRANSCRIPT

Page 1: Python programming language

ภาษาโปรแกรมมงไพธอนPython programming language

เอกวทยาการคอมพวเตอร คณะวทยาศาสตร มหาวทยาลยนเรศวร

Page 2: Python programming language

2

Page 3: Python programming language

รายชอผจดทำ

ชอ รหสนสต หนาทดำเนนการนายฉตรชย ดำด 46320388 แบบฝกหดนายทรงยศ คชนล 46320511 จดทำเอกสารการเรยนนางสาวธญญากร แกวประสงค 46320610 ผชวยสอนนายประจกษ เจตะภย 46320693 ผชวยสอนและแบบฝกหดนายมารต จนทรบว 46320818 แบบฝกหดนางสาวศรนยา อยสขด 46320925 ผชวยสอนนางสาวณฐณชา คงประกอบ 46321097 ผชวยสอนนายอทศ ศกดสทธ 46321139 ผชวยสอนและแบบฝกหดนายอรรณพ สวฒนพเศษ 46321150 ผสอนและจดทำเอกสารเรยน

3

Page 4: Python programming language

4

Page 5: Python programming language

คำนำ

ภาษาไพธอนเปนภาษาทไดรบความนยมอยางมากในปจจบนเนองจากความสามารถทสง, การเรยนรทรวดเรว, การเขยนระบบทเขาใจงาย และสามารถขยายขดความสามารถในการสรางโปรแกรมและซอฟตแวรทสงมากขนตลอดเวลา ทางทมผจดทำจงเลงเหนวาควรนำความร ความเขาใจในการเขยนโปรแกรมดวยภาษาไพธอนมาเผยแพร ดวยจะไดผอนไดรบความรและไดเขาถงภาษาทเขยนใจงาย, ทำงานรวดเรว และสามารถสรางสรรคงานไดอยางมความสามารถสง อกทงซอฟตแวรทใชสรางโปรแกรมและซอฟตแวรดวยภาษาไพธอนนนมทงแจกฟร, รหสเปด และเชงธรกจ ซงมขดความสามารถทแตกตางกน แตถงแมจะเปนซอฟตแวรทใชเขยนโปรแกรมดวยภาษาไพธอนจะแจกฟร หรอเปนรหสเปด กไมไดดอยไปกวาเชงธรกจเลย จงเปนทางเลอกทดทจะศกษาเปนทางเลอกอกทางหนงนอกเหนอจากภาษาอน ๆ ทไดรบความนยมอยแลว

ทางทมงานจงหวงวาทานผทนำเอกสารนไปใชในการศกษาจะไดรบประโยชนสงสดในการเขยนโปรแกรมและซอฟตแวรดวยภาษาไพธอน

ทมผจดทำ

5

Page 6: Python programming language

6

Page 7: Python programming language

สารบญ

1 แนะนำภาษาไพธอน 131.1 ประวต . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.1.1 Python 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.1.2 Python 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.1.3 อนาคต . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.2 หลกปรชญาของภาษาไพธอน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.3 Language Evaluation Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.4 ขอเดนของภาษาไพธอน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.5 Category และ Application Domains . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.5.1 Web และ Internet Development . . . . . . . . . . . . . . . . . . . . . . . . 161.5.2 Database Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.5.3 Desktop GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.5.4 Scientific และ Numeric computation . . . . . . . . . . . . . . . . . . . . . 171.5.5 Education . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.5.6 Network programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.5.7 Software builder และ Testing . . . . . . . . . . . . . . . . . . . . . . . . . 171.5.8 Game และ 3D Graphics Rendering . . . . . . . . . . . . . . . . . . . . . . 17

1.6 ซอฟตแวรทเขยนดวยไพธอน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.7 ตวอยางความสำเรจของไพธอน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 การแสดงผลเบองตน (Printing) 21

3 การตงตวชอแปร และคำสงวน (Reserved word หรอ Keywords) 233.1 การตงตวชอแปร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.2 คำสงวนในการใชงาน (Reserved words, Keywords) . . . . . . . . . . . . . . . . . . . 23

4 การคำนวณทางคณตศาสตร (Arithmetic Mathematics) 254.1 การคำนวณพนฐาน (normal arithmetic operators) . . . . . . . . . . . . . . . . . . . 254.2 การคำนวณผานฟงกชนภายใน (Built-in Math Functions) . . . . . . . . . . . . . . . 26

4.2.1 การหาคาสมบรณ (absolute value) . . . . . . . . . . . . . . . . . . . . . . . 264.2.2 จำนวนทนอยทสด และมากทสดในกลม (smallest or largest values) . . . . . . 264.2.3 กำหนดจำนวนตวเลขทศนยม (specified number of digits) . . . . . . . . . . . 274.2.4 หาผลรวมทงหมดในชดขอมล (adds numbers in a sequence.) . . . . . . . . . 274.2.5 ชวงของขอมลตวเลข (range of numbers.) . . . . . . . . . . . . . . . . . . . . 27

7

Page 8: Python programming language

8 สารบญ

5 ชนดของตวแปร (Data type) 295.1 ตวเลข (Numbers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.1.1 จำนวนเตม(Integers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.1.2 จำนวนจรง (Floating-point numbers) . . . . . . . . . . . . . . . . . . . . . 305.1.3 จำนวนเชงซอน (Complex Numbers) . . . . . . . . . . . . . . . . . . . . . . 31

5.2 ชนดขอมลแบบการรวมกลมขอมล (Collection Data Types) . . . . . . . . . . . . . . . 325.2.1 ลสต (List) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.2.2 ดกชนนาร (Dictionary หรอ Groupings of Data Indexed by Name) . . . . . 335.2.3 ทบเบล (Tuples) และ อนกรม (Sequences) . . . . . . . . . . . . . . . . . . . 345.2.4 เซต (Sets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.2.5 ฟงกชนทนาสนใจเกยวของกบลสตและดกชนนาร . . . . . . . . . . . . . . . . . 35

5.3 สายอกขระ (String หรอ Array of Characters) . . . . . . . . . . . . . . . . . . . . . 395.3.1 ฟงกชนทนาสนใจเกยวของกบสายอกขระ . . . . . . . . . . . . . . . . . . . . . 42

6 การเปรยบเทยบ (Comparisons) 45

7 นพจนทางตรรกะศาสตร (Boolean Expressions) 477.1 AND (และ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477.2 OR (หรอ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477.3 NOT (ไม) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

8 ชวงของการทำงาน (Statement block) และ ชวงชวตของตวแปร (Life time หรอ Variablescope) 498.1 ชวงของการทำงาน (Statement block) . . . . . . . . . . . . . . . . . . . . . . . . . . 498.2 ชวงชวตของตวแปร (Life time หรอ Variable scope) . . . . . . . . . . . . . . . . . . 49

9 การควบคมทศทางของโปรแกรม (Control flow, Flow of Control หรอ Alternatively) 519.1 การตดสนใจ (Decisions, Choice หรอ Selection) . . . . . . . . . . . . . . . . . . . . 51

9.1.1 if Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519.1.2 switch Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

9.2 การวนทำซำ (Loop) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539.2.1 while Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539.2.2 for Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539.2.3 pass, break, continue และ else Clauses Statements . . . . . . . . . . . . . . 549.2.4 do-while Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

9.3 การจดการความผดปกตของโปรแกรม (Error Checking) . . . . . . . . . . . . . . . . . 559.3.1 assert Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559.3.2 try-except และ raise Statements (Exception handling) . . . . . . . . . . . . 56

10 การสรางฟงกชน (Defined Function) 5910.1 การรบคาของฟงกชน, คนคากลบ และคามาตรฐานของการรบคา . . . . . . . . . . . . . 6010.2 ตวแปรแบบ Global (ทวไป) และ Local (เฉพาะสวน) . . . . . . . . . . . . . . . . . . 62

11 การใสขอมลผานคยบอรด (Input Data from Keyboard) 63

Page 9: Python programming language

สารบญ 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

Page 10: Python programming language

10 สารบญ

Page 11: Python programming language

สารบญรป

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 ดาวนโหลด Stanis 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

Page 12: Python programming language

12 สารบญรป

ง.1 สงใหโปรแกรมทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85ง.2 ผลการทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85ง.3 การแจง Error เพอใชประกอบการ Debug . . . . . . . . . . . . . . . . . . . . . . . . 86

Page 13: Python programming language

บทท 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 SoftwareFoundation และสามารถหาขอมลและตวแปรภาษาไดจากเวบไซตของไพธอนเอง ท 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

Page 14: Python programming language

14 แนะนำภาษาไพธอน

รปท 1.1: Guido van Rossum

ของ GPL-compatible ดวย (แตยงคงไมสมบรณเพราะการพฒนาในรน 1.6 นนออกมากอนทจะใชสญญาลขสทธแบบ GPL ทำใหยงมบางสวนทยงเปดเผยไมได)

และในปเดยวกนนนเอง Guido van Russom กไดรบรางวลจาก FSF ในชอวา "Advancement of FreeSoftware"

โดยในปนนเองไพธอน 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 ท BeOpen.com แลว Guido และนกพฒนาคนอน ๆ ในทม PythonLabs กไดเขารวมกบทมงาน Digital Creations

ไพธอนรน 2.1 ไดสบทอนการทำงานและพฒนามาจาก 1.6.1 มากกวาไพธอนรน 2.0 และไดทำการเปลยนชอสญญาลขสทธใหมเปน Python Software Foundation License โดยทในไพธอนรน 2.1 alphaนนกไดเรมชอสญญาสขสทธนและผเปนเจาของคอ Python Software Foundation (PSF) โดยทเปนองคกรทไมหวงผลกำไรเชนเดยวกบ Apache Software Foundation

1.1.3 อนาคต

ผพฒนาไพธอนมการประชมและถกเถยงกนในเรองของความสามารถใหม ๆ ในไพธอนรนท 3.0 โดยมชอโครงการวา Python 3000 (Py3K) โดยทจะหยดการสนบสนนโคดโปรแกรมจากรน 2.x โดยททำแบบนเพอทำการปรบปรงเปลยนแปลงการทำงานของภาษาใหดยงขนตามคำแนะนำทวา "reduce feature duplicationby removing old ways of doing things" (ลดทอนคณสมบตทซำซอนดวยการยกเลกเสนทางทเดนผานมาแลว) โดยในตอนนนยงไมมตารางงานของไพธอน รน 3.0 แตอยางใด แต Python Enhancement Proposal(PEP) ไดมการวางแผนไวแลว โดยไดวางแผนไวดงน

• ทำการเพอสวนสนบสนนชนดตวแปรใหมากขน

Page 15: Python programming language

1.2 หลกปรชญาของภาษาไพธอน 15

• สนบสนนการทำงานของชนดตวแปรแบบ unicode/str และ separate mutable bytes type

• ยกเลกการสนบสนนคณสมบตของ classic class, classic division, string exceptions และ implicitrelative imports

• ฯลฯ

1.2 หลกปรชญาของภาษาไพธอน

ไพธอนเปนภาษาทสามารถสรางงานไดหลากหลายกระบวนทศน (Multi-paradigm language) โดยจะมองอะไรทมากกวาการ coding เพอนำมาใชงานตามรปแบบเดม ๆ แตจะเปนการนำเอาหลกการของกระบวนทศน (Paradigm) แบบ Object-oriented programming, Structured programming, Functional program-ming และ Aspect-oriented programming นำเอามาใชทงแบบเดยว ๆ และนำมาใชรวมกน ซงไพธอนนนเปน ภาษาทมการตรวจสอบชนดตวแปรแบบยดหยน (dynamically type-checked) และใช Garbage col-lection ในการจดการหนวยความจำ

1.3 Language Evaluation Criteria

ดวยความทไพธอนนนผสมผสานการสรางภาษาทสวยงาม ทำใหการอานหรอเขาใจโคด (Readability)ตาง ๆ นนทำไดงาย รวมถงการเขยนโคด (Writability) ทกระชบและสนในการเขยน รวมถงมประสทธภาพทำใหมเสถยรภาพ (Reliability) สงขนและมความรวดเรวในการทำงานอกดวย และในดานคาใชจาย (Cost)ในการพฒนาซอฟตแวรจากไพธอนนนในประเทศไทยนนยงตองใชคาใชจายคอนขางสง เพอใหไดมาซงซอฟตแวรทด เพราะผเชยวชาญทเขยนไพธอนไดมเสถยรภาพนนยงมนอย ทำใหคาตวสำหรบผพฒนานนสงตามไปดวยถงแมวาเครองมอในการพฒนานนจะฟร และเปน Open source กตาม แตคาใชจายในดานบคลากรนนมมากกวาคาเครองมอพฒนา

1.4 ขอเดนของภาษาไพธอน

1. งายตอการเรยนร โดยภาษาไพธอนมโครงสรางของภาษาไมซบซอนเขาใจงาย ซงโครงสรางภาษาไพธอนจะคลายกบภาษาซมาก เพราะภาษาไพธอน สรางขนมาโดยใชภาษาซ ทำใหผทคนเคยภาษาซ อยแลวใชงานภาษาไพธอนไดไมยาก นอกจากนโดยตวภาษาเองมความยดหยนสงทำใหการจดการกบงานดานขอความ และ Text File ไดเปนอยางด

2. ไมตองเสยคาใชจายใดๆ ทงสน เพราะตวแปรภาษาไพธอนอยภายใตลขสทธ Python Software Foun-dation License (PSFL) ซงเปนของ Python Software Foundation (PSF) ซงมลกษณะคลายกบลขสทธแมแบบอยาง General Public License (GPL) ของ Free Software Foundation (FSF)

3. ใชไดหลายแพลตฟอรม ในชวงแรกภาษาไพธอนถกออกแบบใชงานกบระบบ Unix อยกจรง แตในปจจบนไดมการพฒนาตวแปลภาษาไพธอน ใหสามารถใชกบระบบปฏบตการอนๆ อาทเชน LinuxPlatform, Windows Platform, OS/2, Amiga, Mac OS X และรวมไปถงระบบปฎบตการท .NETFramework, Java virtual machine ทำงานได ซงใน Nokia Series 60 กสามารถทำงานไดเชนกน

Page 16: Python programming language

16 แนะนำภาษาไพธอน

4. ภาษาไพธอนถกสรางขนโดยไดรวบรวมเอาสวนดของภาษาตางๆ เขามาไวดวยกน อาทเชน ภาษา ABC,Modula-3, Icon, ANSI C, Perl, Lisp, Smalltalk และ Tcl

5. ไพธอนสามารถรวมการพฒนาของระบบเขากบ COM, .NETและ CORBA objects

6. สำหรบ Java libraries แลวสามารถใช Jython เพอทำการพฒนาซอฟตแวรจากภาษาไพธอนสำหรบJava Virtual Machine

7. สำหรบ .NET Platform แลว สามารถใช IronPython ซงเปนการพฒนาของ Microsoft เพอจะทำใหไพธอนนนสามารถทำงานไดบน .Net Framework ซงใชชอวา Python for .NET

8. ไพธอนนนสนบสนน Internet Communications Engine (ICE) และการรวมกนของเทคโนโลยอนๆ อกมากมายในอนาคต

9. บางครงนกพฒนาอาจจะพบวาไพธอนไมสามารถทำงานบางอยางได แตนกพฒนาตองการใหมนทำงานได กสามารถพฒนาเพมไดในรปแบบของ extension modules ซงอยในรปแบบของโคด C หรอ C++หรอใช SWIG หรอ Boost.Python

10. ภาษาไพธอนเปนสามารถพฒนาเปนภาษาประเภท Server side Script คอการทำงานของภาษาไพธอนจะทำงานดานฝง Server แลวสงผลลพธกลบมายง Client ทำใหมความปลอดภยสง และยงใชภาษาไพธอนนำมาพฒนาเวบเซอรวสไดอกดวย

11. ใชพฒนาระบบบรหารการสรางเวบไซตสำเรจรปทเรยกวา Content Management Systems (CMS) ซงCMS ทมชอเสยงมาก และเบองหลงทำงานดวยไพธอนคอ Plone http://www.plone.org/

1.5 Category และ Application Domains

ภาษาไพธอนนน จดอยใน Category ภาษาทสามารถสรางงานไดหลากหลายกระบวนทศน (Multi-paradigmlanguage) โดยรองรบทง Object-oriented programming, Imperative, Functional programming และLogic programming ซงไพธอนสามารถนำไปพฒนาซอฟตแวรประยกตไดมากมาย ไดแก

1.5.1 Web และ Internet Development

ไพธอนนนมการสนบสนนในดานของ Web Development ในโซลชนระดบสงดวย Zope, mega frame-works อยาง Django และ TurboGears และรวมไปถง Content Management Systems ขนสงอยาง Ploneและ CPS จงทำใหไพธอนนนเปน Common Gateway Interface (CGI) ระดบสงทมประสทธภาพทดทสดตวหนงในตลาด

1.5.2 Database Access

ไพธอนนนสนบสนนการเขาถงขอมลในฐานขอมลของผผลตฐานขอมลตาง ๆ มากมาย โดยผานทาง ODBCInterfaces และ Database Connection Interface อน ๆ ซงสามารถทำงานรวมกบ MySQL, Oracle, MSSQL Server, PostgreSQL, SybODBC และอน ๆ ทจะมมาเพมเตมอกในอนาคต

Page 17: Python programming language

1.6 ซอฟตแวรทเขยนดวยไพธอน 17

1.5.3 Desktop GUI

เมอไพธอนไดตดตงลงบนเครองของคณแลว จะม Tk GUI development library ซงเปน libraries ทมความสามารถเทยบเทา Microsoft Foundation Classes (MFC, ซงคลาย ๆ กบ win32 extensions),wxWidgets, GTK, Qt, Delphi และอน ๆ ทำใหสามารถพฒนาซอฟตแวรประยกตตาง ๆ แบบ Graphicuser interface ได

1.5.4 Scientific และ Numeric computation

ไพธอนรองรบการทำงานของนกวทยาศาสตรในเรองของทฤษฎการคำนวณ, Bioinformatics และ Physic-s เปนตน

1.5.5 Education

ไพธอนนนเปนภาษาทเหมาะกบการเรยนการสอนในวชา programming อยางมาก โดยสามารถนำไปใชในระดบเบองตนถงระดบสง ซง Python Software Foundation นนไดมหลกสตรสำหรบการเรยนการสอนในดานนอยแลว ซงสามารถนำเอา pyBiblio และ Software Carpentry Course มาเรยนเพอเสรมความรได

1.5.6 Network programming

เปนการเพมความามารถจาก Web และ Internet Development ไพธอนนนสนบสนนในการเขยนโปรแกรมในระดบตำในดานของ network programming ทงายตอการพฒนา sockets และ รวมไปถงการทำงานรวมกบ mudules อยาง Twisted และ Framework สำหรบ Asyncronous network programming

1.5.7 Software builder และ Testing

ไพธอนนนสนบสนนการพฒนาซอฟตแวรทมการควบคมการพฒนาและจดการระบบทดสอบตาง ๆ โดยใชเครองมอในการพฒนาทสนบสนนการเขยนโปรแกรมในไพธอนเอง ซงตวไพธอนนนไดมาพรอมกบ

• Scons สำหรบ build โปรแกรม

• Buildbot และ Apache Gump ทใชสำหรบงาน Automated continuous compilation และ Testing

• Roundup หรอ Trac สำหรบ bug tracking และ project management

1.5.8 Game และ 3D Graphics Rendering

ไพธอนนนไดถกใชในตลาดพฒนาเกมสทงเชงธรกจและสมครเลน โดยมการสราง Framework สำหรบพฒนา Game บนไพธอนซงชอวา PyGame และ PyKyra ซงยงรวมไปถงการทำ 3D Graphics Renderingทไพธอนม libraries ทางดานงานนอยมากมาย

1.6 ซอฟตแวรทเขยนดวยไพธอน

• BitTorrent เปนการพฒนาโดยระบบการจดการไฟล BitTorrent, การจดการ การกระจายตวของ Pack-age ขอมลใน Tracker และการเขารหสสวนขอมลตาง ๆ

Page 18: Python programming language

18 แนะนำภาษาไพธอน

• Blender ซอฟตแวร open source สำหรบทำ 3D modeling

• Chandler ซอฟตแวรจดการขอมลสวนบคคล (Personal Information Manager, PIM) โดยมสวนเพมเตมทงงานปฎทน, อเมล, ตารางงาน และขอมลโนตตาง ๆ ซงทำงานคลาย ๆ กบ Outlook ของMicrosoft

• Civilization IV วดโอเกมส และยงเปนเกมสทใช boost.python เพอทำการควบคมสวนประกอบตางๆ ภายในเกมส ซงรวมไปถงรปแบบ, หนาตา และเนอหาของเกมสดวย

• Mailman หนงในซอฟตแวร E-Mail mailing lists ทไดรบความนยมสงสด

• Kombilo ระบบจดการฐานขอมลของเกมสโกะ

• MoinMoin ระบบ Wiki ทไดรบความนยมสงตวหนง

• OpenRPG ระบบเกมสเสมอนแบบ Role Playing Games ลน Internet

• Plone ระบบ Content Management System

• Trac ระบบตดตามตดตามขอผดพลาดและจดการขอมลดานการพฒนาซอฟตแวรดวย MoinMoin ทเปน wiki และ Subversion เพอทำระบบ Source version control

• Turbogears ระบบพฒนาซอฟตแวร Framework โดยรวมเอา Cherrypy, SQLObject, MochiKitและ KID templates

• ViewVC ระบบ Web-based สำหรบจดการดาน CVS และ SVN repositories

• Zope ระบบพฒนาซอฟตแวรบนอนเทอรเนตแบบ web-application platform

• Battlefield 2 เกมส First Person Shooter ทไดใชไพธอนในการทำ Configuration scripts

• Indian Ocean Tsunami Detector ซอฟตแวรสำหรบมอถอเพอแจงเตอน Tsunami

• EVE Online เกมสแบบ Multi Massive Online Role Playing Game ซงเปนเกมสทไดรบอนดบสงมากบน MMORPG.com

• SPE - Stani’s Python Editor เปน Free และ open-source สำหรบงานพฒนาซอฟตแวรดวยไพธอน โดยมทงแบบ Python IDE for Windows, Linux & Mac with wxGlade (GUI designer),PyChecker (Code Doctor) และ Blender (3D)

• ฯลฯ

1.7 ตวอยางความสำเรจของไพธอน

Industrial Light & Magic "ไพธอนเปนกญแจสำหรบการสรางผลงานทด ถาไมมมนแลวงานอยาง StarWars: Episode II กเปนเรองทยากมากทจะสำเรจ ดวยวธการ crowd rendering เพอสงไปทำการbatch processing ในการ compositing video นนเปนเรองทงายไปเลยเมอใชการพฒนาระบบดวยไพธอน" Tommy Burnette, Senior Technical Director, Industrial Light & Magic"ไพธอนอยทก ๆ ทใน ILM มนชวยใหเราสามารถทจะทำงานกบภาพกราฟฟกทถกสรางสรรคไดงาย

Page 19: Python programming language

1.7 ตวอยางความสำเรจของไพธอน 19

และรวดเรว"Philip Peterson, Principal Engineer, Research & Development, IndustrialLight & Magic

Google "ไพธอนมความสำคญตอ Google มาก เพราะตงแตเรมม Google เรากใชมนสรางระบบของเราและยงคงเปนสวนสำคญจนทกวนน โดยในทก ๆ วนเหลาวศวะกรของ Google ใชไพธอนในการทำงานอยตลอดเวลา เพอคนหาขอมลบนโลกของอนเทอรเนตอยางไมมทสนสด" Peter Norvig, Di-rector of Search Quality, Google, Inc.

NASA "NASA ใชไพธอนในการพฒนา การจดการ Model, Integration และ ระบบ Transformationในงาน CAD/CAE/PDM โดยพวกเราเลอกไพธอนเพราะมความสามารถในการสรางงานใหออกมาไดอยางรวดเรวและมประสทธภาพสง โดยสงทสำคญคอ code ในการเขยนนนสะอาดและงายตอการจดการดแลในภายหลง อกทงยงม libraries ใหใชอยางมากมายทำการ Integration ของระบบนนเปนไปอยางชาญฉลาดและรวดเรวแถมยงทำระบบทสามารถเชอมตอการกบระบบอน ๆ ไดอยางด ซงไพธอนนนตอบโจทยของเราไดทงหมด" Steve Waterbury, Software Group Leader, NASASTEP Testbed

Page 20: Python programming language

20 แนะนำภาษาไพธอน

Page 21: Python programming language

บทท 2

การแสดงผลเบองตน (Printing)

การแสดงผลออกทางหนาจอของไพธอนนนใชคำสง print แลวตามดวย ’String’ หรอ "String" โดยแทนท String ดวยขอความใด ๆ เชน

* ในภาษา C/C++, Java, ฯลฯ เครองหมายทบอกการจบ ของ คำสงคอ ; (Semi-colon Symbol) แตPython ใชการจบบรรทดแทน

>>> print "Hello, World!"

และไดผลการทำงาน

Hello, World!

ทดสอบการพมพหลาย ๆ บรรทด

>>> print "Jack and Jill went up a hill"

>>> print "to fetch a pail of water;"

>>> print "Jack fell down, and broke his crown,"

>>> print "and Jill came tumbling after."

ผลการทำงาน

Jack and Jill went up a hill

to fetch a pail of water;

Jack fell down, and broke his crown,

and Jill came tumbling after.

ซงบางครงเราตองการพมพชดขอความซำ ๆ กนเราสามารถใชสญลกษณ * (Repetition Symbol) เพอทำการพมพชดขอความนนได

>>> print "Hello, World!"*5

ผลการทำงาน

Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!

21

Page 22: Python programming language

22 การแสดงผลเบองตน (Printing)

* ภาษาไพธอน ใช "#" บอกจดเรมตนของ Comment ไปจนสดบรรทด โดย Comment เขยนไวเตอนความจำ ไมใชสวนทเอาไป Execute Program

ตวอยาง

>>> print "Foo"

# Test Comment

>>> print "Bar"

ผลการทำงาน

Foo

Bar

Page 23: Python programming language

บทท 3

การตงตวชอแปร และคำสงวน (Reserved wordหรอ Keywords)

3.1 การตงตวชอแปร

1. ขนตนดวยตวอกษรในภาษาองกฤษ ตามดวยตวอกษรหรอตวเลขใดๆ กได

2. หามเวนชองวาง และหามใชสญลกษณพเศษนอกเหนอจาก underscore ( ) เทานน

3. ตวอกษรของชอจะคำนงถงความแตกตางระหวางอกษรตวพมพใหญกบตวพมพเลก

4. การตงชอมขอพงระวงวา จะตองไมซำกบคำสงวน(Reserved words, Keywords)

5. ควรจะตงชอโดยใหชอนนมสอความหมายใหเขากบขอมล สามารถอานและเขาใจได

3.2 คำสงวนในการใชงาน (Reserved words, Keywords)

and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if,import, in, is, lambda, not, or, pass, print, raise, return, try, while, yield, as (ไพธอน 2.5) และ with(ไพธอน 2.5)

* อางองจากเอกสารไพธอน รน 2.4.3 และ 2.5 (Python Reference Manual Release 2.4.3, docu-mentation updated on 29 March 2006 and Python Reference Manual Release 2.5, documentationupdated on 19 September 2006)

23

Page 24: Python programming language

24 การตงตวชอแปร และคำสงวน (Reserved word หรอ Keywords)

Page 25: Python programming language

บทท 4

การคำนวณทางคณตศาสตร (ArithmeticMathematics)

4.1 การคำนวณพนฐาน (normal arithmetic operators)

ไพธอนนนมสญลกษณการคำนวณพนฐาน (normal arithmetic operators) ซงไดแก

• ** (ยกกำลง, Exponentiation)

• * (คณ, multiplication)

• / (หาร, division)

• % (หารเอาเศษ, remainder หรอ modulo)

• + (บวก, addition)

• - (ลบ, subtraction)

โดยอนดบความสำคญของการคำนวณเหมอนกบคณศาสตรโดยมความสำคญดงตอไปน

1. วงเลบ (parentheses "()")

2. ยกกำลง (exponents "**" )

3. คณ (multiplication "*" ), หาร (division "/" ) และหารเอาเศษ (remainder/modulo "%" )

4. บวก (addition "+") และ ลบ (subtraction "-")

ทดสอบการคำนวณไดจากการคำนวณดานลางน

>>> i = 10

>>> f = 6.54

>>> print i + f

16.54

25

Page 26: Python programming language

26 การคำนวณทางคณตศาสตร (Arithmetic Mathematics)

อธบายโปรแกรมดานบนไดวาตวแปร i ถกตงคาเรมตนไวท 10 และตวแปร f ถกตงคาเรมตนเปน 6.54 โดยท i มชนดตวเปน integer

และ f เปน float โดยเรานำมาบวกกนจะไดคำตอบคอ 16.54ทดสอบการบวกโดยใหนำคาททำการคำนวณสงกลบตวแปรเดม จากคำสงการทำงานดานลางน

>>> i = 10

>>> i = i + 6

>>> i = i / 2

>>> print i

8

จะเหนวาชดคำสงทใชมความยาวกวาปกต แตอานงายกวา ซงเราสามารถยอรปการคำนวณตาง ๆ เหลานไดดงตวอยางดงดานลาง

>>> i = 10

>>> i += 6

>>> i /= 2

>>> print i

8

ซงการยอรปแบบนเปนไปตามรปแบบดงเดมของภาษา C นนเอง

4.2 การคำนวณผานฟงกชนภายใน (Built-in Math Functions)

4.2.1 การหาคาสมบรณ (absolute value)

มรปแบบ Function คอ abs(var) เปน function ทใชหาคาสมบรณ โดนทคา var เปนตวแปรหรอจำนวนทตองการหาคา

>>> print abs(-6.5)

6.5

4.2.2 จำนวนทนอยทสด และมากทสดในกลม (smallest or largest values)

ฟงกชนหาจำนวนทนอยทสด มรปแบบฟงกชน คอ min(var) เปนฟงกชนทใชในการหาจำนวนทนอยทสดในกลมของชดขอมลชนดตาง ๆ เชน list, set หรอแมแตตวเลขทวไป โดยทคา var เปนตวแปร, จำนวนหรอชดของจำนวนทตองการหาคา

ฟงกชนหาจำนวนทมากทสด มรปแบบฟงกชน คอ max(var) เปนฟงกชนทใชในการหาจำนวนทมากทสดในกลมของชดขอมลชนดตาง ๆ เชน list, set หรอแมแตตวเลขทวไป โดยทคา var เปนตวแปร, จำนวนหรอชดของจำนวนทตองการหาคา

>>> print min(6, 7, 2, 8, 5)

2

>>> print max(6, 7, 2, 8, 5)

Page 27: Python programming language

4.2 การคำนวณผานฟงกชนภายใน (Built-in Math Functions) 27

8

>>> print min([0, 43.5, 19, 5, -6])

0

>>> print max([0, 43.5, 19, 5, -6])

43.5

4.2.3 กำหนดจำนวนตวเลขทศนยม (specified number of digits)

มรปแบบฟงกชน คอ round(var, digits) เปนฟงกชนทใชในการเพมหรอลดจำนวนตวเลขทศนยมทจะนำมาแสดง โดย

>>> print round(1234.56789, 2)

1234.57

>>> print round(1234.56789, -2)

1200.0

4.2.4 หาผลรวมทงหมดในชดขอมล (adds numbers in a sequence.)

มรปแบบฟงกชน คอ sum(sequence) เปนฟงกชนทใชในการหาผลรวมของชดขอมลตวเลขหนง ๆ โดยทใสคาของชดจำนวนเขาไปในรปแบบของ sequence of numbers เชน (1,2,3,4,5) ซงหมายถงจำนวนตงแต 1- 5 เปนตน ลงไปในฟงกชน sum เพอทำการคำนวณหาผลรวมของชดขอมลดงกลาว

>>> print sum((1, 2, 3, 4, 5))

15

4.2.5 ชวงของขอมลตวเลข (range of numbers.)

มรปแบบฟงกชน คอ range(start, end [,step]) เปนฟงกชนทใชในการสงคาชวงของขอมลตวเลขทตองการออกมาเชนตองการตวเลขตงแต 1 - 500 เราสามารถทำไดตามตวอยางดานลางน

>>> print range(1, 6)

[1, 2, 3, 4, 5]

ซงเราสามารถนำความสามารถนมาใชรวมกบฟงกชนหาผลรวมทงหมดได โดยดงตวอยางดานลางน

>>> print sum(range(1, 6))

15

จากตวอยางทงสองนน โดยชวงของขอมลนนคอ 1 - 6 ซงไดขอมลคอ 1, 2, 3, 4, 5 ซงเรานำมาซงสตรคอm ถง ( n -1) โดยท m และ n คอจำนวนเตมบวก และ m มคานอยกวา n หรอบางครงเราอยากเพมคาทละ2 กสามารถทำไดดวย

>>> print range(1, 6, 2)

[1, 3, 5]

Page 28: Python programming language

28 การคำนวณทางคณตศาสตร (Arithmetic Mathematics)

Page 29: Python programming language

บทท 5

ชนดของตวแปร (Data type)

ดงทเราไดทราบไปแลววาภาษาไพธอนเปนภาษาทเปน Interpreter Programming ซงเราไมจำเปนตองสนใจ Data type แตบางครงการทเรารจก Data type ตาง ๆ และนำมาใชงานไดอยางเหมาะสมทำใหการเขยนโปรแกรมมประสทธภาพมากขน โดย Data type ตาง ๆ นนมจดเดนในแบบชนดของตวมนเอง

ซงในการแสดงผลการทำงานของขอมลตาง ๆ ในไพธอนนนมหลากหลายรปแบบ เราจะมาพดกนในเรองนเชนเดยวกน

โดยในหลาย ๆ ภาษานน ๆ เราจำเปนตองประกาศชนดตวแปร (Data type) กอน แลวจงตงชอตวแปร ซงหลาย ๆ ครงสรางความสบสนในการจดจำ แตในภาษาไพธอนนนเราไมจำเปนตองประกาศชนดของตวแปรกอนการใชงานแตอยางใด โดยในบทนเราจะพดถงชนดของตวแปรตาง ๆ

5.1 ตวเลข (Numbers)

5.1.1 จำนวนเตม(Integers)

จำนวนเตมธรรมดา (Plain Integer)

Plain Integers มคำยอสำหรบเขยนในโปรแกรมคอ int เปนการบงบอกคณสมบตของตวแปรทใชเกบขอมลตวเลขแบบจำนวนเตมทเปนตวเลขแบบ signed integer เกบขอมล 32 bits ตงแต -2147483648 ถง+2147483647

ทดสอบโดยการพมพคำสงโปรแกรมดงน

>>> x = 42

>>> type(x)

จะไดผลการทำงานโดยแสดงเปนชนดของตวแปรนนคอ

<type ’int’>

* function type(var) เปน function ทใชในการแสดงชนดของตวแปรนน ๆ โดยทตวแปร var เปนชอตวแปรทตองการแสดงชนดของตวแปรนน ๆ ดงตวอยางทไดทำดานบน

การทดสอบตอมาเราจะทำการ casting data ผาน function int เพอทำการแปลงขอมลเปน intergernumbers ตวอยางเชน

29

Page 30: Python programming language

30 ชนดของตวแปร (Data type)

>>> x = int("17")

>>> y = int(4.8)

>>> print x, y, x - y

ผลการทำงาน

17 4 13

* function int(var) เปน function ทใชในการแปลงชนดของขอมลของตวแปรอน ๆ มาเปนชนดตวแปรแบบ integer โดยทตวแปร var เปนชอตวแปรทตองการแปลงชนดขอมลของตวแปรนน ๆ

จำนวนเตมแบบยาว (Long integer)

Long integers มคำยอสำหรบเขยนในโปรแกรมคอ long เปนการบงบอกคณสมบตของตวแปรทใชเกบขอมลตวเลขแบบจำนวนเตม ทเปนตวเลขแบบ signed integer เกบขอมลทมากกวาตวเลขท Integer เกบไดหรอมจำนวนทมากกวา - 2147483647 ถง + 2147483647 นนเอง โดยสามารถใชคำตวอกษร L ตอทายตวเลขนน ๆ เพอบอกวาจำนวนนนเปนจำนวน Long Integer เชน 234187626348292917L หรอ 7L

>>> googol = 10 ** 100

>>> print googol

>>> type(googol)

ผลการทำงาน (Operator ** มความหมายในการคำนวณคอ ยกกำลง )

10000000000000000000000000000000000000000000000000000000000000

000000000000000000000000000000000000000

<type ’long’>

ผลจากการทำงานนนจะทำการแสดงคาของตวแปร googol และบอกชนดของตวแปรวาเปน long นนเอง

จำนวนตรรกะ (Boolean)

Boolean มคำยอสำหรบเขยนในโปรแกรมคอ bool ความจรงแลวขอมลชนดตรรกะในไพธอนไมมอยจรงเพราะไมจำเปนตองมนนเอง สงทไพธอนมใหนนเปนเพยงคาคงทเพอใชแทนตรรกะ จรง และ เทจ เทานนไดแก

• True - แทนคาจรง มคาเปน 1

• False - แทนคาเทจ มคาเปน 0

5.1.2 จำนวนจรง (Floating-point numbers)

Floating-point มคำยอสำหรบเขยนในโปรแกรมคอ float เปนการบงบอกคณสมบตของตวแปรทใชเกบขอมลตวเลขแบบจำนวนจรงแบบ 64 bit double precision ทมความหมายรวบรดรวมกนเลยทง float และdouble ในหลายๆ ภาษา แตในไพธอนจะใช float เพยงอยางเดยว ซงมชวงตงแต 1.23 ไปจนถง 7.8 x 10-28

Page 31: Python programming language

5.1 ตวเลข (Numbers) 31

>>> debt = 7784834892156.63

>>> print debt

>>> type(debt)

ภาษาไพธอนนนจะทำการยอขนาดของจำนวนใหอยในรปแบบขนาดยอทางคณตศาสตรจะไดผลการทำงานโดยแสดงเปนชนดของตวแปรนนคอ

7.78483489216e+012

<type ’float’>

โดยมความหมายวา 7.78483489216 x 10 12

เราสามารถทำใหจำนวนชนด ๆ เปลยนเปนจำนวนจรงไดโดยใช function float

>>> x = float(17)

>>> y = float("4")

>>> print x, y, x - y

ผลการทำงาน

17.0 4.0 13.0

* function float(var) เปน function ทใชในการแปลงชนดของขอมลของตวแปรอน ๆ มาเปนชนดตวแปรแบบ floating-point โดยทตวแปร var เปนชอตวแปรทตองการแปลงชนดขอมลของตวแปรนน ๆ

5.1.3 จำนวนเชงซอน (Complex Numbers)

มคำยอสำหรบเขยนในโปรแกรมคอ complex จำนวนเชงซอนคอเซตทตอเตมจากเซตของจำนวนจรงโดยเพมจำนวน j เขาไปในตวเลขจำนวนจรงจนไดเปน จำนวนจนตภาพ (imaginary number) จนทำใหสมการj2 + 1 = 0 เปนจรง และหลงจากนนเพมสมาชกตวอนๆ เขาไปจนกระทงเซตทไดใหมมสมบตปดภายใตการบวกและการคณ จำนวนเชงซอน z ทกตวสามารถเขยนอยในรป x + iy โดยท x และ y เปนจำนวนจรงโดยเราเรยก x และ y วาสวนจรงและสวนจนตภาพของ z ตามลำดบ

เราสามารถนำมาเขยนเปนสมการในการเขยนชดคำสงไดดงน

>>> imaginary_number = 16j

>>> complex_number = 6 + 4j

>>> print complex_number

(6+4j)

>>> print type(complex_number)

<type ’complex’>

หรอเราอาจจะไมตองใชจำนวน j เพอทำใหตวเลขนนเปนจำนวนจนตภาพ ไดจาก function ทชอวา com-plex(real, [imag]) ดงตวอยางดานลางน

* function complex(real, imag) เปน function ทใชในการแปลงชนดของขอมลของตวแปรอน ๆ มาเปนชนดตวแปรแบบ complex โดยทตวแปร real เปนจำนวนทเปนจำนวนจรง และ imag คอจำนวนจนตภาพ

Page 32: Python programming language

32 ชนดของตวแปร (Data type)

>>>complex_number = complex(6, 4)

>>>type(complex_number)

<type ’complex’>

>>>print(complex_number)

(6+4j)

5.2 ชนดขอมลแบบการรวมกลมขอมล (Collection Data Types)

5.2.1 ลสต (List)

ในไพธอนนนชนดตวแปรทถกนำมารวมกนอยในชอเดยวกบเลยคอ อารเรย (Array) และ ลสต (List)แตถานกพฒนาตองการใช อารเรยแบบทคนเคยจรง ๆ จำเปนตอง import module array ของไพธอนเขามาซงยงยากและทำงานชากวาทควรจะเปน

ลสตมคำยอสำหรบเขยนในโปรแกรมคอ list การทำงานของลสตนนเปนการนำขอมลหลาย ๆ ชนดมาเรยงตอกนในลสตของตวแปรนน ๆ ซงแตกตางจากอารเรยทขอมลทนำมาเรยงตอกนตองเปนชนดเดยวกนและนคงเปนสาเหตททำใหอารเรย ถกตดทงไปจากชนดของตวแปรพนฐานของไพธอนเพราะดวยเหตผลดานความยดหยนของชนดของตวแปรนนเอง โดยลสตนนจะมขอมลเรยงกนหลาย ๆ ตว ครอบดวยเครองหมายsquare brackets "[" และ "]" เชน

>>> i = [1, 2, 3, 4, ’Foo’, 5, ’Bar’]

>>> print i

>>> type(i)

ผลทไดคอ

[1, 2, 3, 4, ’Foo’, 5, ’Bar’]

<type ’list’>

เราสามารถเขาถงขอมลในแตละลสตได ผานทางหมายเลขสมาชก (index key) เชน

>>> print i[6]

ผลการทำงานคอ

Bar

โดยหมายเลขสมาชกเรมตงแต 0 ไปจนถงจำนวนขอมลทมอยในลสตลบดวยหนง หรออธบายใหเหนภาพกคอ

0, 1, 2, 3, 4 , .... , n - 1

เมอ n คอจำนวนของขอมลในลสตเราสามารถเขาถงสมาชกของ list เปนกลมๆ ได โดยใชคำสง : (Colon Symbol) เพอคนระหวางหมายเลข

สมาชกทตองการ เชน

>>> x = [1, 2, 3, 4, ’Foo’, 5, ’Bar’]

>>> print x[3:5]

Page 33: Python programming language

5.2 ชนดขอมลแบบการรวมกลมขอมล (Collection Data Types) 33

ผลการทำงาน

[4, ’Foo’]

เราสามารถเลอกสมาชกบางตวอยางมเงอนไขได เชน

>>> y = [10, 3, 5, 25, 7, 9]

>>> z = [x for x in y if x >= 9]

>>> print z

ผลการทำงานคอ

[10, 25, 9]

จากชดคำสงดานบนนนเปนการเลอกสมาชกภายในลสตทมคามากกวาหรอเทากบ 9 นนเอง

5.2.2 ดกชนนาร (Dictionary หรอ Groupings of Data Indexed by Name)

ดกชนนาร (Dictionary หรอ Groupings of Data Indexed by Name) มคำยอสำหรบเขยนในโปรแกรมคอ dict เปนอนกรมอกอนหนง มสภาพเหมอนอาเรย ทมสมาชกทง keys และ value โดยท นนจะใชชออางองสมาชก (associated key) แทนการใชหมายเลขสมาชก (index key) ซงจะซำกนไมได (ถากำหนดคาซำ มนจะลบคาเกา และใชคาใหมแทน) โดยใชการจดเรยงขอมลและแกไขคาไมได (จงสามารถใช tuple เปนkeys ได ถาชนดของขอมลสมาชกเปนชนดเดยวกน แตใช list เปน keys ไมได) แตลบ keys:value ได เวลาเรยกขอมล value จะคนจาก keys ถาคนไมพบจะเกดขอผดพลาด

>>> i = {’first’:’alpha’,’last’:’omega’}

>>> print i

>>> print i[’first’]

>>> type(i)

ผลการทำงานคอ

{’last’: ’omega’, ’first’: ’alpha’}

’alpha’

<type ’dict’>

โดยการเขาถงขอมลของดกชนนาร นนสามารถทำไดโดยการอางองจากชออางองสมาชก ดงในตวอยางขางตนนนไดอางองถง first ดวยรปแบบ

>>> print i[’first’]

เรากจะไดขอมล ’alpha’ ออกมาโดยเราสามารถใสสมาชกลงไปไดเรอย ๆ จากตวอยางตอไปน

>>> menus_specials = {}

>>> menus_specials[“breakfast”] = “canadian ham”

>>> menus_specials[“lunch”] = “tuna surprise”

>>> menus_specials[“dinner”] = “Cheeseburger Deluxe”

>>> print menus_specials[’breakfast’]

ผลการทำงาน

canadian ham

Page 34: Python programming language

34 ชนดของตวแปร (Data type)

5.2.3 ทบเบล (Tuples) และ อนกรม (Sequences)

ทบเบล (นองลสต, Tuples) มคำยอสำหรบเขยนในโปรแกรมคอ tuple ขอมลจะอยภายในวงเลบ () แตตอนกำหนดคา ถาอยโดดๆ อาจไมใสวงเลบกได โดยใชหลกคลายกบลสต (แตไมเหมอนกนทงหมด) เพยงแตเราสามารถนำลสตหลาย ๆ ลสตมาบรรจลงในลสตเดยวกนเองไดโดยไมตองแยกตวแปร เชน

>>> t = 12345, 54321, ’hello!’

>>> type(t)

<type ’tuple’>

>>> t[0]

12345

>>> t

(12345, 54321, ’hello!’)

>>> # Tuples may be nested:

... u = t, (1, 2, 3, 4, 5)

>>> u

((12345, 54321, ’hello!’), (1, 2, 3, 4, 5))

แตสมาชกในทบเบลเปลยนคาไมได ซงเหมอนกบเหมอนสตรง ไมเหมอนลสท ซงการกำหนดคาใหทบเบลทมสมาชกเดยว ยงยากขนเลกนอย เพราะตองใช "," ชวย

>>> empty = ()

>>> singleton = ’hello’, # <-- note trailing comma

>>> len(empty)

0

>>> len(singleton)

1

>>> singleton

(’hello’,)

การกำหนดคาให tuple เชน t = 12345, 54321, ’hello!’ เรยกวาการแพค (packing) ใชไดกบ tupleอยางเดยว สวนการกำหนดคาแบบยอนกลบ เรยกวาการ อนแพค (unpacking) อนนใชไดกบทกอนกรม คอทงลสท และทเปล

* function len(var) เปน function ทใชในการหนาจำนวนสมาชก, ความยาวของสายอกขระ และกลมของขอมลตาง ๆ โดยท var นนคอชอของตวแปรทเราตองการหานนเอง

>>> x, y, z = t

* ในตวอยางน t ตองมสมาชกอยางนอย 3 คา มเชนนนจะเกดขอผดพลาด เนองจากไมสามารถใหคาไดกบ 3 ตวแปรทตองการสงคาไปให

5.2.4 เซต (Sets)

เซต เปรยบเสมอนสวนขยายของลสท(และสตรงดวย) และจะไมมสมาชกทมคาซำกน ใชประโยขนเหมอนกบ เรองเซทในวชาคณตศาสตร

Page 35: Python programming language

5.2 ชนดขอมลแบบการรวมกลมขอมล (Collection Data Types) 35

มคำยอสำหรบเขยนในโปรแกรมคอ set แตการทจะไดชนดขอมลแบบเซตนนตองทำผาน function setเพอใหไดเซตออกมา ซงสวนมากแลวจะใช List มาทำการแปลงชนดตวแปรเปนเซตอกท ดงตวอยางดานลาง

* function set(var) เปน function ทใชในการแปลงชนดของขอมลของตวแปรอน ๆ มาเปนชนดตวแปรแบบ set โดยทตวแปร var เปนชอตวแปรทตองการแปลงชนดขอมลของตวแปรนน ๆ

>>> basket = [’apple’, ’orange’, ’apple’, ’pear’, ’orange’, ’banana’]

>>> fruit = set(basket) # create a set without duplicates

>>> type(fruit)

<type ’set’>

>>> fruit

set([’orange’, ’pear’, ’apple’, ’banana’])

>>> ’orange’ in fruit # fast membership testing

True

>>> ’crabgrass’ in fruit

False

>>> # Demonstrate set operations on unique letters from two words

...

>>> a = set(’abracadabra’)

>>> b = set(’alacazam’)

>>> a # unique letters in a

set([’a’, ’r’, ’b’, ’c’, ’d’])

>>> a - b # letters in a but not in b

set([’r’, ’d’, ’b’])

>>> a | b # letters in either a or b

set([’a’, ’c’, ’r’, ’d’, ’b’, ’m’, ’z’, ’l’])

>>> a & b # letters in both a and b

set([’a’, ’c’])

>>> a ^ b # letters in a or b but not both

set([’r’, ’d’, ’b’, ’m’, ’z’, ’l’])

5.2.5 ฟงกชนทนาสนใจเกยวของกบลสตและดกชนนาร

* การเรยกใชฟงคชนของลสตและดกชนนารนนทำคลาย ๆ กบการเรยกใชเมธอดในภาษา Java เชน

>>> i = [1,2,3,4]

>>> print i.pop()

4

>>> j = {’first’:’alpha’,’last’:’omega’}

>>> print j.pop(’first’)

alpha

Page 36: Python programming language

36 ชนดของตวแปร (Data type)

ฟงกชน pop - [ลสต/ดกชนนาร]

รปแบบฟงกชน Object.pop([key]) ในลสตนนเราไมจำเปนตองกำหนดหมายเลขสมาชก (index key)กอนการ pop เพราะเมธอดจะนำคาบนสดมาใหเรา แตถาตองการ pop ในหมายเลขสมาชกทตองการกเพยงแตใสหมายเลขสมาชกเทานน แตในดกชนนารเราจำเปนตองกำหนดชออางองสมาชก (associated key)กอนการ pop เพราะมเชนนนเมธอดจะไมสามารถนำคาของสมาชกนน ๆ มาใหเราได

>>> i = [1,2,3,4]

>>> print i.pop()

4

>>> j = {’first’:’alpha’,’last’:’omega’}

>>> print j.pop(’first’)

alpha

ฟงกชน append - [ลสต]

รปแบบฟงกชน Object.append([object]) เปนฟงกชนทใชในการเพมขอมลสมาชกลงไปในลสตโดยจะนำไปตอทายลสตเสมอ

>>> i = [1,2,3,4]

>>> print i.pop()

4

>>> i.append(5)

>>> print i

[1,2,3,5]

ฟงกชน insert - [ลสต]

รปแบบฟงกชน Object.insert(index, object) เปนฟงกชนทใชในการเพมขอมลสมาชกลงไปในลสตโดยจะนำไปใสในลำดบสมาชกทเราตองการ

>>> print i

[1, 3]

>>> i.insert(4, 5)

>>> print i

[1, 3, 5]

>>> i.insert(2, 6)

>>> print i

[1, 3, 6, 5]

ฟงกชน count - [ลสต]

รปแบบฟงกชน Object.count([object]) เปนฟงกชนทใชในการนบขอมลสมาชกทตองการคนหา

>>> i = [1,2,3,4]

>>> print i.count(5)

Page 37: Python programming language

5.2 ชนดขอมลแบบการรวมกลมขอมล (Collection Data Types) 37

0

>>> print i.count(4)

1

ฟงกชน index - [ลสต]

รปแบบฟงกชน Object.index(value, [ start , stop ]) เปนฟงกชนทใชในการหาคาของหมายเลขสมาชก(index key) วาขอมลทเราตองการนนอยทหมายเลขสมาชกทเทาใด

>>> i = [1,2,3,4]

>>> print i.index(4)

3

>>> print i.index(1)

0

ฟงกชน extend - [ลสต]

รปแบบฟงกชน Object.extend(list|dict) เปนฟงกชนทใชในเพมสมาชกทงหมดจากอกลสตหรอดกชนนาร จากตวแปรอน ๆ มาไวทตวแปรตงตน

>>> j = {’last’: ’omega’}

>>> i = [1,2,3,4]

>>> i.extend(j)

>>> print i

[1, 2, 3, 4, ’last’]

ฟงกชน remove - [ลสต]

รปแบบฟงกชน Object.remove(value) เปนฟงกชนทใชในการลบคาทกำหนดไวในพารามเตอรออกไปจากลสต

>>> print i

[1, 2, 3, 4, ’last’]

>>> i.remove(1)

>>> print i

[3, 6, 5, ’last’]

ฟงกชน sort - [ลสต]

รปแบบฟงกชน Object.sort() เปนฟงกชนทใชในการจดเรยงขอมล (sort) ภายในลสตโดยสามารถทจะจดเรยงไดทงตามหมายเลขสมาชก หรอจดเรยงตามขอมลของสมาชก

>>> a = [5, 2, 3, 1, 4]

>>> a.sort()

>>> print a

[1, 2, 3, 4, 5]

Page 38: Python programming language

38 ชนดของตวแปร (Data type)

>>> i = [’a’,’r’,’b’,’i’,’z’]

>>> print i

[’a’, ’r’, ’b’, ’i’, ’z’]

>>> i.sort()

>>> print i

[’a’, ’b’, ’i’, ’r’, ’z’]

ฟงกชน reverse - [ลสต]

รปแบบฟงกชน Object.reverse() เปนฟงกชนทใชในการจดเรยงขอมล (sort) ภายในลสตแบบยอนกลบ

>>> a = [5, 2, 3, 1, 4]

>>> a.sort()

>>> print a

[1, 2, 3, 4, 5]

>>> i.reverse()

>>> print i

[5, 4, 3, 2, 1]

ฟงกชน clear - [ดกชนนาร]

รปแบบฟงกชน Object.clear() เปนฟงกชนทใชในการลบขอมลภายในดกชนนารทงหมด

>>> j = {’first’:’a’, ’second’:’b’}

>>> print j

{’second’: ’b’, ’first’: ’a’}

>>> j.clear()

>>> print j

{}

ฟงกชน get - [ดกชนนาร]

รปแบบฟงกชน Object.get(key) เปนฟงกชนทใชในเรยกขอมลจากชออางองสมาชกภายในดกชนนาร

>>> j = {’first’:’a’, ’second’:’b’}

>>> print j

{’second’: ’b’, ’first’: ’a’}

>>> j.get(’first’)

’a’

ฟงกชน has key - [ดกชนนาร]

รปแบบฟงกชน Object.has key(key) เปนฟงกชนทใชในการตรวจสอบชออางองสมาชก (associated key)วามอยหรอไม

Page 39: Python programming language

5.3 สายอกขระ (String หรอ Array of Characters) 39

>>> j = {’first’:’a’, ’second’:’b’}

>>> print j

{’second’: ’b’, ’first’: ’a’}

>>> j.has_key(’first’)

True

>>> j.has_key(’last’)

False

ฟงกชน items - [ดกชนนาร]

รปแบบฟงกชน Object.items(key) เปนฟงกชนทใชในการแสดงรายการชออางองสมาชกและขอมลทงหมดในดกชนนาร

>>> j = {’first’:’a’, ’second’:’b’}

>>> print j

{’second’: ’b’, ’first’: ’a’}

>>>>>> j.items()

[(’second’, ’b’), (’first’, ’a’)]

ฟงกชน keys - [ดกชนนาร]

รปแบบฟงกชน Object.keys() เปนฟงกชนทใชในการแสดงรายการชออางองสมาชกทงหมดในดกชนนาร

>>> j = {’first’:’a’, ’second’:’b’}

>>> print j

{’second’: ’b’, ’first’: ’a’}

>>>>>> j.keys()

[’second’, ’first’]

ฟงกชน values - [ดกชนนาร]

รปแบบฟงกชน Object.values() เปนฟงกชนทใชในการแสดงรายการขอมลทงหมดในดกชนนาร

>>> j = {’first’:’a’, ’second’:’b’}

>>> print j

{’second’: ’b’, ’first’: ’a’}

>>>>>>>>> j.values()

[’b’, ’a’]

5.3 สายอกขระ (String หรอ Array of Characters)

สายอกขระ (Strings) เปนการเรยงตวของอกขระมาตอกนมากกวา 1 ตวจนกลายเปนเสนสาย หรอเรยกอกอยางวาลำดบของอกขระ (Array of Characters) โดยเราสามารถกำหนดคาตวแปรไดโดยใชเครองหมาย

Page 40: Python programming language

40 ชนดของตวแปร (Data type)

single quotation (’.....’) หรอ double quotation (" .... ") ครอบอกขระ, สายอกจระ หรอแมแตตวเลข และรวมไปถงสญลกษณพเศษตาง ๆ โดยในไพธอนนนจะเกบขอมลแบบ 8-bit strings หรอ Unicode objectsขนอยกบขอมลทจดเกบอยในขณะนน ดงตวอยางตอไปน

>>> print "Hello, World!"

และไดผลการทำงาน

Hello, World!

ซงบางครงเราตองการพมพคาของตวแปรนนไปพรอมกบขอความใน function print นนสามารถใชสญลกษณ, (Concatenation Symbol) ดานหลงชดขอความนน ๆ กอน แลวจงพมพชอตวแปรนน ๆ ตอทาย

>>> i = 5

>>> print "14 / 3 = ",14 / 3

>>> print "14 % 3 = ",14 % 3

>>> print "14.0 / 3.0 =",14.0 / 3.0

>>> print "hello", "hello", i

ผลการทำงาน

14 / 3 = 4

14 % 3 = 2

14.0 / 3.0 = 4.66666666667

hello hello 5

ซงการใช Concatenation Symbol นนสามารถทจะนำมาประยกตใชงาน อน ๆ ไดอกนอกจาก printแตถาตองการใหขอความนนตอกนใหใชสญลกษณ + (String Concatenation Symbol) เพอเชอมขอความ

แตละชดเขาดวยกน

>>> print "Jack and Jill went up a hill" + "to fetch a pail of water;" +

"Jack fell down, and broke his crown," + "and Jill came tumbling after."

ผลการทำงาน

Jack and Jill went up a hill to fetch a pail of water;

Jack fell down, and broke his crown, and Jill came

tumbling after.

ซงการใสขอมลภายใตเครองหมาย double quotation นน สามารถใชสญลกษณพเศษไดดงน

Page 41: Python programming language

5.3 สายอกขระ (String หรอ Array of Characters) 41

\newline ไมสนใจ (Ignored)\\ เครองหมาย Backslash ( \)\’ เครองหมาย Single quote (’)\" เครองหมาย Double quote (")\a ASCII Bell (BEL)\b ASCII Backspace (BS)\f ASCII Formfeed (FF)\n ASCII Linefeed (LF)\r ASCII Carriage Return (CR)\t ASCII Horizontal Tab (TAB)\v ASCII Vertical Tab (VT)

โดยเปนสญลกษณพเศษทเราเจอกนอยในหลาย ๆ ภาษาและในบางครงการตอสายอกขระ นนอาจจะไมสะดวกการใช String formatting operator "%" เขามา

ชวยจะทำใหการนำตวแปรตาง ๆ มาใสในสายอกขระทำไดงายมากขน เชน

>>> state = ’California’

>>> ’It never rains in sunny %s.’ %state

จะไดผลการทำงานคอ

’It never rains in sunny California.’

โดยท %s นนเราสามารถแทนดวยตวอกษร s เปนตวอกษรอน ๆ ไดตามความเหมาะกบตวแปรทเราจะนำมาผสมลงในสายอกขระ ซงมดงน

d Signed integer decimali Signed integer decimalo Unsigned octalu Unsigned decimalx Unsigned hexidecimal (lowercase)X Unsigned hexidecimal (uppercase)e Floating point exponential format (lowercase)E Floating point exponential format (uppercase)f Floating point decimal formatF Floating point decimal formatg Same as "e" if exponent is greater than -4 or less than precision, "f" otherwiseG Same as "E" if exponent is greater than -4 or less than precision, "F" otherwisec Single character (accepts integer or single character string)r String (converts any python object using repr())s String (converts any python object using str())

Page 42: Python programming language

42 ชนดของตวแปร (Data type)

d = 4.5000

print ’It never rains in sunny %d.’ %d

print ’It never rains in sunny %i.’ %d

print ’It never rains in sunny %o.’ %d

print ’It never rains in sunny %u.’ %d

print ’It never rains in sunny %x.’ %d

print ’It never rains in sunny %X.’ %d

print ’It never rains in sunny %e.’ %d

print ’It never rains in sunny %E.’ %d

print ’It never rains in sunny %f.’ %d

print ’It never rains in sunny %F.’ %d

print ’It never rains in sunny %g.’ %d

print ’It never rains in sunny %G.’ %d

print ’It never rains in sunny %c.’ %int(d)

print ’It never rains in sunny %r.’ %d

print ’It never rains in sunny %s.’ %d

ผลการทำงาน

It never rains in sunny 4.

It never rains in sunny 4.

It never rains in sunny 4.

It never rains in sunny 4.

It never rains in sunny 4.

It never rains in sunny 4.

It never rains in sunny 4.500000e+000.

It never rains in sunny 4.500000E+000.

It never rains in sunny 4.500000.

It never rains in sunny 4.500000.

It never rains in sunny 4.5.

It never rains in sunny 4.5.

It never rains in sunny L.

It never rains in sunny 4.5.

It never rains in sunny 4.5.

5.3.1 ฟงกชนทนาสนใจเกยวของกบสายอกขระ

ฟงกชน find

รปแบบฟงกชน Object.find((sub[, start[, end]]) เปนฟงกชนทใชในการคนหาคำในสายอกขระโดยจะคนคาใน หมายเลขสมาชก (index key) ของสายอกขระนน ๆ ทเจอเปนตวแรก แตถาไมเจอจะสงคา -1 กลบมา

Page 43: Python programming language

5.3 สายอกขระ (String หรอ Array of Characters) 43

>>> s = "windows"

>>> s.find(’dow’)

3

ฟงกชน upper

รปแบบฟงกชน Object.upper() เปนฟงกชนทใชในการทำใหตวอกษรเปลยนเปนตวใหญ (ในภาษาองกฤษ)

>>> s = "windows"

>>> s.upper()

WINDOWS

ฟงกชน lower

รปแบบฟงกชน Object.lower() เปนฟงกชนทใชในการทำใหตวอกษรเปลยนเปนตวเลก (ในภาษาองกฤษ)

>>> s = "WINDOWS"

>>> s.lower()

windows

ฟงกชน replace

รปแบบฟงกชน Object.replace(old, new) เปนฟงกชนทใชในการคนหาคำทกำหนดและแทนทคำนนดวยคำทกำหนดให

>>> s = ’The happy cat ran home.’

>>> s.replace(’cat’, ’dog’)

’The happy dog ran home.’

Page 44: Python programming language

44 ชนดของตวแปร (Data type)

Page 45: Python programming language

บทท 6

การเปรยบเทยบ (Comparisons)

ในภาษาไพธอนนนมการเปรยบเทยบในเชงคณตศาสตรตาง ๆ เปนพนฐานอยแลว แตบางอยางกมทไมเหมอนกบภาษาอน ๆ คอมการเพมเตมการเปรยบเทยบในดานของกลมขอมล และขอมลทเหมอนกน โดยไดเพม การเปรยบเทยบแบบ "in" และ "is" เขามาเพอเปรยบเทยบกบกลมขอมล สวนใหญการใช "is"มกใชในการเปรยบเทยบดานตวอกขระและสายอกขระมากกวาเพราะสอความหมายมากกวาใช "==" ในการเปรยบเทยบ

โดยเมอมการเปรยบเทยบแลวเราจะไดผลออกมาคอคาทางตรรกะ หรอ Boolean value ซงในภาษาไพธอนนนคอ True แทนดวยเปนจรง และ False แทนดวยเปนเทจ และเรายงสามารถใชตวเลขแทนคาดงกลาวไดดวย 0 คอ False และ 1 คอ True นนเอง โดยคาทไดนนมาจากการทำการทดสอบทางตรรกศาสตรในเชงเปรยบเทยบคาทงสองขางของขอมล

Operator ความหมาย< เปรยบเทยบคาทางดานซายของเครองหมาย นอยกวา คาทางดานขวาหรอไม<= เปรยบเทยบคาทางดานซายของเครองหมาย นอยกวาหรอเทากบ คาทางดานขวา หรอไม> เปรยบเทยบคาทางดานซายของเครองหมาย มากกวา คาทางดานขวาหรอไม>= เปรยบเทยบคาทางดานซายของเครองหมาย มากกวาหรอเทากบ คาทางดานขวาหรอไม== เปรยบเทยบคาทางดานซายของเครองหมาย เทากบ คาทางดานขวาหรอไม!= เปรยบเทยบคาทางดานซายของเครองหมาย ไมเทากบ คาทางดานขวาหรอไม<> เปรยบเทยบคาทางดานซายของเครองหมาย ไมมทางเทากบ คาทางดานขวาหรอไมin เปรยบเทยบคาทางดานซายของเครองหมายอยในกลมขอมลในกลมขอมลดานขวาหรอไมis เปรยบเทยบคาทางดานซายของเครองหมาย เหมอนกบ คาทางดานขวาหรอไม

ตวอยาง

>>> 1 < 2

True

>>> 2 <= 2

True

>>> 2 > 0

True

>>> 3 >= 3

True

>>> 0 == 0

True

>>> 0 != 1

True

>>> x = [1,2,3,4]

>>> 1 in x

True

>>> 1 is 1

True

45

Page 46: Python programming language

46 การเปรยบเทยบ (Comparisons)

Page 47: Python programming language

บทท 7

นพจนทางตรรกะศาสตร (Boolean Expressions)

การทำการเปรยบเทยบนน เมอไดคาจากการเปรยบเทยบซงเปนคาทางตรรกะมาหนงคา โดยทวไปแลวกเพยงพอตอการนำไปใชในการทำสอบทางตรรกศาสตร (Condition) อยแลว แตบางครงแลวเรามกนำคาตางๆ มาเชอมกนเพอใหไดนพจนทมความหมายเชอมโยงกนเพอใหไดความหมายทดมากขนเมอมการทดสอบทางตรรกศาสตรมากกวา 1 ชดการทดสอบ และเปนการชวยใหการเขยนโปรแกรมนนสนลง โดยในไพธอนนนมนพจนทางตรรกะศาสตรตามพนฐานภาษาทวไปคอ AND, OR และ NOT โดยเปนการเปรยบเทยบจากผลของการเปรยบเทยบในเชงคณตศาสตรทไดอยกอนแลวมาเปรยบเทยบในเชงตรรกศาสตรอกรอบหนง

7.1 AND (และ)

มคยเวรดคอ and จะประมวลผลประโยคหรอตวแปรทตามหลงตวมนเอง ถาประโยคหรอตวแปรทอยกอนหนามคาทางตรรกศาสตรเปน false เพราะวาคาทเปน false เมอนำมาประมวลผลกบ คาอน ๆ แลวจะได false เสมอ

expression ผลtrue and true Truetrue and false Falsefalse and true Falsefalse and false False

7.2 OR (หรอ)

มคยเวรดคอ or จะประมวลผลประโยคหรอตวแปรทตามมาเมอประโยคแรก หรอตวแปรตวแรกมคาเปนtrue เพราะวาประโยคหรอตวแปรทมคาเปน true เมอนำมาประมวลกบคาใด ๆ กตามจะไดคา true เสมอ

expression ผลtrue or true Truetrue or false Truefalse or true Truefalse or false False

47

Page 48: Python programming language

48 นพจนทางตรรกะศาสตร (Boolean Expressions)

7.3 NOT (ไม)

มคยเวรดคอ not โดยเมอไปอยหนาตวแปรหรอประโยคทมคาทางตรรกศาสตรคาใดคาหนง กจะเปลยนคานนใหเปนตรงกนขามทนท

expression ผลnot true Falsenot false True

ตวอยาง

>>> i = 1

>>> j = 2

>>> k = 3

>>> l = 1

>>> i == k and j == i

False

>>> i == k or l == i

True

>>> not i == k and l == i

True

Page 49: Python programming language

บทท 8

ชวงของการทำงาน (Statement block) และ ชวงชวตของตวแปร (Life time หรอ Variablescope)

8.1 ชวงของการทำงาน (Statement block)

กอนอนเราตองทำความเขาในเกยวกบชวงของการทำงานของไพธอนเสยกอน ยกตวอยาง ในภาษา Cนนชวงของการทำงานจะครอบดวย เครองหมายปกกาเปดและปด ..... แตใน Python ใชยอหนาแทน(indentation) เชน

>>> x = 1

>>> if x == 1:

>>> print "True"

>>> else:

>>> print "False"

>>> print "xxx"

การจบ block กดไดจากยอหนา คำสง if กอยางทเหน if ตามดวย เงอนไข จบดวย : (colon) หลง จากนนสงทจะถกทำเมอเงอนไขเปนจรงกจะอยในยอหนาเยองถดมา ซงโปรแกรมขางบนกไดผลออกมาเปน

True

xxx

8.2 ชวงชวตของตวแปร (Life time หรอ Variable scope)

ในการกำหนดชวงชวตของตวแปรวาตวแปรตวไหนจะมชวงการทำงานในสวนใดไดบางนนสามารถทำไดโดยจากตวอยางดานลางนน เราไดสรางตวแปรชนดจำนวนเตมชอวา x ใหคาคอ 5 และสรางฟงกชนชอวาhello

โดยในตวอยางท 1 นนเรากำหนดตวแปรภายในฟงกชนใหมชอเปน x เหมอนกน แลวใสคาใหเปน 6แลวตอมาใหฟงกชน hello ทำงาน และ print คา x ออกมา ผลคอได 6 และ 5 ตามลำดบ ในตวอยางท 2นนเราไดกำหนดตวแปร และฟงกชนตาง ๆ เหมอนกบตวอยางท 1 เพยงแตเราใช global มากำหนดใหกบ xวาเราจะใช x จาก global scope แทน แลวทำการใสคาใหกบ x เปน 6 ผลทไดคอ 6 และ 6 ตามลำดบ

49

Page 50: Python programming language

50 ชวงของการทำงาน (Statement block) และ ชวงชวตของตวแปร (Life time หรอ Variable scope)

ตวอยางท 1

>>> x = 5

>>> def hello():

>>> x = 6

>>> print x

>>> hello()

>>> print x

คำตอบคอ

6

5

ตวอยางท 2

>>> x = 5

>>> def hello():

>>> global x

>>> x = 6

>>> print x

>>> hello()

>>> print x

คำตอบคอ

6

6

จากตวอยางทงสองจะเหนวาเราสามารถใชตวแปรแบบภายในฟงกชนและจากภายนอกฟงกชนไดดวยวธดงตอไปน

1. ถาตองการใชตวแปรภายนอกฟงกชนทมอยแลวใหในคยเวรด global แลวตามดวยชอตวแปรทมอยแลวจากภายนอกฟงกชนนน แลวจงนำมาใชงาน

2. ถาตองการประกาศตวแปรใหมภายในฟงกชน สามารถประกาศตวแปรไดโดยทวไปไดทนท

3. ถาตองการใชทงตวแปรภายนอกและภายในพรอม ๆ กนใหตงชอตวแปรทตงใหม ซงใชภายในฟงกชนนนใหชอแตกตางกนเพอปองกนการสบสน

Page 51: Python programming language

บทท 9

การควบคมทศทางของโปรแกรม (Control flow,Flow of Control หรอ Alternatively)

การควบคมทศทางของโปรแกรม เปนการเลยนแบบ การทำงานของมนษย เพราะในเหตการณตาง ๆ เรามการตดสนสนใจในแบบตาง ๆ กนออกไป เชนเมอเดนทางไปเจอ 3 แยก เราตองตดสนใจ เสยวซายหรอเลยวขวา โดยมแผนท และปายบอกเสนทางเปนตวกำหนด ใหเราเลยวซายหรอเลยวขวา เปนตน ในการเขยนโปรแกรมกคอ การจำลองตวเราลงไป เพอจดการกบสถาณการณตางๆ ซงเราตองมขอมลในการประกอบการพจารณา ถาขอมลบอกเราแบบหนง เรากตองทำแบบหนง แตถาขอมลบอกเราอกอยาง เรากตองทำอกอยางทแตกตางกนออกไป ซงการทตองจดการกบสถาณการณตางๆ น เราเรยกมนวาการควบคมการทำงานของโปรแกรมนนเอง การควบคมการทำงาน ม 3 รปแบบ ไดแก

1. การตดสนใจ (Decisions, Choice หรอ Selection)

2. การวนทำซำ (Loop หรอ Iteration)

3. การจดการความผดปกตของโปรแกรม (Error Checking)

ในการควบคมทศทาง ไมวาจะเปนการตดสนใจ หรอการทำงานแบบวนซำ เราจะตองอาศยการ พจรณาขอมลทมอย ประกอบการควบคม สวนการจดการความผดปกตของโปรแกรมนนเปนการดกจบสงทอาจจะเกดขนไดจากการเขยนโปรแกรมทไมครอบคลมการทำงาน ซงอาจจะเกดขนได แตปองกนโปรแกรมปดตวเองโดยฉบพลน เราจงใชการจดการความผดปกตของโปรแกรมมาชวยในการดกจบสงเหลาน

9.1 การตดสนใจ (Decisions, Choice หรอ Selection)

9.1.1 if Statements

คำสง if ใชตดสนใจวาจะทำหรอไมทำคำสงชดหนงทอยภายในชวงของการทำงานของ if (if Statementsscope) ถาเงอนไขทนำมาทดสอบทางตรรศาสตรเปนจรง (True) กจะทำคำสงชดนนถาเงอนไขทนำมาทดสอบทางตรรกศาสตรเปนเทจ (False) กจะไมทำคำสงชดนน โดยมรปแบบคำสงในภาษาไพธอนดงน

51

Page 52: Python programming language

52 การควบคมทศทางของโปรแกรม (Control flow, Flow of Control หรอ Alternatively)

if Condition:

Statements

.....

.....

else:

Statements

.....

.....

ตวอยาง

>>> x = 1

>>> if x is 1:

>>> print ’Yes’

>>> else:

>>> print ’No’

โดยจากตวอยางดานบนนนจะไดผลออกมาเปน "Yes" เนองจากวา x มคาเปน 1 และเปรยบเทยบกบ 1 ซงมคาเดยวกนผลทออกมาเปน True ในการเปรยบเทยบ แลวจงพมพคา "Yes" ออกมานนเอง

ซงในบางครงการตดสนใจในการทำชดคำสงอาจมมากกวา 2 ทางจากขางตน เราสามารถในคำสงอกหนงตวทชอวา elif ได (หรอ มาจาก else if ในภาษาอน เชน java หรอ c/c++) โดยมรปแบบดงตอไปน

if Condition:

Statements

.....

.....

elif Condition:

Statements

.....

.....

else:

Statements

.....

.....

ตวอยาง

>>> x = 3

>>> if x < 1:

>>> print ’x < 1’

>>> elif x > 1:

>>> print ’x > 1’

>>> else:

>>> print ’x = 1’

จากตวอยางดานบน นนเราจะไดคำตอบคอ "x > 1"

Page 53: Python programming language

9.2 การวนทำซำ (Loop) 53

9.1.2 switch Statements

ในไพธอนนนไมสนบสนนการตดสนใจแบบ switch

9.2 การวนทำซำ (Loop)

9.2.1 while Statements

คำสง while เปนคำสงทใชในการวนทำซำในชวงของการทำงานของ while (while Statements scope)จนกวาการทดสอบทางตรรกศาสตรจะเปนเทจ มรปแบบดงน

while Condition:

Statements

.....

.....

ตวอยาง

>>> x = 1

>>> while x < 5:

>>> print ’Yes\n’

>>> x+=1

ผลจากการทำ

Yes

Yes

Yes

Yes

จากตวอยางคอกำหนดให x มคาเปน 1 แลวเปรยบเทยบทางตรรกศาสตรกอน โดยให x < 5 ในทน x มคาเปน 1 ผลคำตอบคอ True จงทำคำสงภายในชวงการทำงานของ while โดยการพมพ Yes แลวทำการเพมคา x โดยการบวกไปทละ 1 คา แลวกลบมาเปรยบเทยบทางตรรกศาสตรใหม ทำอยางนไปเรอย ๆ จนกวาการเปรยบเทยบทางตรรกศาสตรจะมผลเปน False

9.2.2 for Statements

คำสง for เปนคำสงทใชในการวนทำซำในชวงของการทำงานของ for (for Statements scope) จนกวาการทดสอบทางตรรกศาสตรจะเปนเทจ โดยมการกำหนดชวงการทำงานตำสด และมากสดของจำนวนครงททำคำสงภายในดวย โดยใช for รวมกบคำสงในการเปรยบเทยบทางตรรกศาสตรคอ in และ function การทำงานแบบชวงของกลมของขอมลคอ range (ดวธการใชไดจากบทกอน ๆ )

Page 54: Python programming language

54 การควบคมทศทางของโปรแกรม (Control flow, Flow of Control หรอ Alternatively)

for var in range(m, n [, step = 1]):

Statements

.....

.....

ตวอยาง

>>> for i in range(0, 10):

>>> if i % 2 == 0:

>>> print i, ’is an even number’

>>> else:

>>> print i, ’is an odd number’

จากตวอยางดานบนนนทำการทำซำตงแต 0 ไปจนถง 9 แลวทำการตรวจสอบหาเลขคและเลขคดวย

0 is an even number

1 is an odd number

2 is an even number

3 is an odd number

4 is an even number

5 is an odd number

6 is an even number

7 is an odd number

8 is an even number

9 is an odd number

ซงในไพธอนนนไมสนบสนน foreach แตเราสามารถใชความสามารถของ for มาใชงานจนไดคำสง fore-ach ไดอยแลว

>>> x = {’first’:’one’, ’second’:’two’}

>>> for j in x:

print x[j]

two

one

9.2.3 pass, break, continue และ else Clauses Statements

pass

เปนคำสงทใชในการทดแทน Statements อน ๆ โดยไมมการทำงานตวอยาง

>>> while True:

.... pass

....

Page 55: Python programming language

9.3 การจดการความผดปกตของโปรแกรม (Error Checking) 55

break

คำสงนใชในการหยดการทำงานของการวนทำซำ หรอการตดสนใจ

continue

คำสงนใชในการเรมการทำงานหลงจากหยดการทำงานของการวนทำซำ หรอการตดสนใจ

else Clauses

คำสงนใชในการทำหลงจาก break ใน การวนทำซำ (Loop, Iteration)

ตวอยาง

for n in range(2, 10):

for x in range(2, n):

if n % x == 0:

print n, ’equals’, x, ’*’, n/x

break

else:

print n, ’is a prime number’

2 is a prime number

3 is a prime number

4 equals 2 * 2

5 is a prime number

6 equals 2 * 3

7 is a prime number

8 equals 2 * 4

9 equals 3 * 3

9.2.4 do-while Statements

ในไพธอนนนไมสนบสนนการตดสนใจแบบ do-while (จะสนบสนนบน Python 2.5 และมบน Python2.5 Beta เมอวนท 24 กมพาพนธ 2549)

9.3 การจดการความผดปกตของโปรแกรม (Error Checking)

9.3.1 assert Statements

assert เปนคำสงทวางไวสำหรบตรวจสอบความผดพลาดภายในคำสงทเราเขยนในโปรแกรมของเรา โดยเปนเหมอนสวนเตมเตมในการแจงความผดพลาดของตวไพธอนเพอบอกรายละเอยดทมากขนในการเขยนโปรแกรมของเรา ดงรปแบบคอ

assert Condition, ’Text Error or Text Mixed’

Page 56: Python programming language

56 การควบคมทศทางของโปรแกรม (Control flow, Flow of Control หรอ Alternatively)

ตวอยาง

def test(arg1, arg2):

arg1 = float(arg1)

arg2 = float(arg2)

assert arg2 != 0, ’Bad dividend, arg1: %f arg2: %f’ % (arg1, arg2)

ratio = arg1 / arg2

print ’ratio:’, ratio

test(0,2)

test(2,0)

เมอเราสงใหทำงานจะไดดงน

ratio: 0.0

Traceback (most recent call last):

File "C:\tmp.py", line 51, in ?

test(2,0)

File "C:\tmp.py", line 46, in test

assert arg2 != 0, ’Bad dividend, arg1: %f arg2: %f’ % (arg1, arg2)

AssertionError: Bad dividend, arg1: 2.000000 arg2: 0.000000

จะเหนไดวาโปรแกรมจะมตวชวยในการสรางมมมองของตวแปรตาง ๆ ไดวาคาทใสไปนนถกตองหรอไม

9.3.2 try-except และ raise Statements (Exception handling)

ในภาษาไพธอนนน try-except เปนการบอกถงสงผดปกตทเกดขนในโปรแกรม ซงอาจเปนขอผดพลาดหรอเหตการณทไมพงประสงคและตองการความดแลเปนพเศษ โดยทวไปในการเขยนโปรแกรมทดนน เราจะตองตรวจสอบถงเหตการณทอาจทำใหโปรแกรมของเราลมเหลวในการทำงาน เชน ขอมลถกหารดวยศนย,การเขาหาขอมลใน list ดวยการใช index ทไมมอยจรง หรอ อางถงหนวยความจำทเปน null เปนตน ถงแมวาเรามวธการตรวจสอบ error ตาง ๆ เหลานดวยการใชการตงสนใจดวย if Statements หรอ การตรวจสอบอนๆ ททำใหโปรแกรมของเราทำงานไดราบรน แตจะทำให code ของเราดแลววนวายเพราะถามการตรวจสอบขอผดพลาดมากเกนไปชดคำสงของเรากจะดซบซอนมากยงขน แตไมไดหมายความวาเราจะไมตรวจสอบ และดกจบขอผดพลาดเหลาน การนำเอา try-except เขามาเปนตวชวยในการตรวจสอบและดกจบ ทำใหเกดการแยกสวนของ code ททำงานไดราบรน ออกจากสวนของชดคำสงทจดการเกยวกบความผดพลาดทำใหเราสามารถทจะคนหาสวนของคำสงทงสองไดงายขน ถามการเปลยนแปลง code ในอนาคต ขอดอกอนหนงของ try-except กคอ ทำใหการตรวจสอบและดกจบเปนไปอยางเฉพาะเจาะจง ตรงกบขอผดพลาดทเกดขนทำใหการแกไขเปนไปอยางถกตอง และเนองจากวาขอผดพลาดตาง ๆ มหลากหลายรปแบบ เราตองเขยนคำสงตาง ๆ ขนมารองรบไมเชนนนแลว โปรแกรมของเรากจะไมผานการ compile เราไมจำเปนทจะตองใช try-except ในการตรวจสอบและดกจบ error ในโปรแกรมเสมอไป เพราะการใช exception จะเสยเวลาในการประมวลผลมาก ทำใหโปรแกรมทำงานชาลง ดงนนเราจะตองตดสนใจใหดวาควรจะใช try-except ในกรณไหน อยางไร ตวอยางของโปรแกรมทไมตองใช try-except กนาจะเปนการใสขอมลนำเขาแบบผด ๆ ของผใช ซงถอเปนเรองปกต ถาเรามวแตเสยเวลาในการดกจบดวยการใช try-except แทนการตรวจสอบและดกจบทวไปโปรแกรมของเรากจะเสยเวลาในการประมวลผลสวนอน ๆ ไป

Page 57: Python programming language

9.3 การจดการความผดปกตของโปรแกรม (Error Checking) 57

รปแบบคำสง

try:

Standard operation

except:

Error operation

จากรปแบบคำสง ชดคำสงเดมหรอคำสงทตองกาารทำงานทว ๆ ไป จะอยภายใตชวงการทำงานของ try ถาการทำงานภายในชวงการทำงานของ try มขอผดพลาดการทำงานจะกระโดด หรอถกโยนการทำงานไปสชวงการทำงานของ except แทน ดงตวอยางดานลางน

>>> try:

... x = y

... except:

... print ’y not defined’

...

y not defined

ถาเราไมไดใช try-except จะไดผลแบบน

>>> x = y

Traceback (most recent call last):

File "<input>", line 1, in ?

NameError: name ’y’ is not defined

จากตวอยางทไดดไปเปนรปแบบ try-except ทงายทสด แตในการดกจบขอผดพลาดจรง ๆ แลวเราไมสามารถทจะทำแบบนไดทกกรณ เพราะขอผดพลาดในชดคำสงทเราเขยนไปนนมกลมของความผดพลาดทแตกตางกน เชนความผดพลาดของการอานและเขยนไฟล, ขอผดพลาดจากการทำเกนขอบเขตของลสต, ฯลฯ โดยเราดไดจากตวอยางตอไปน

ตวอยางทไมไดใช try-except

>>> fridge_contents = {"egg":8, "mushroom":20, "pepper":3, "cheese":2,

"tomato":4,"milk":13}

>>> if fridge_contents["orange juice"] > 3:

... print "Sure, let’s have some juice"

...

Traceback (most recent call last):

File "<stdin>", line 1, in ?

KeyError: ’orange juice’

จากดานบนไมไดมการแกไขปญหาทาง try-except ทำใหแจงขอผดพลาดแบบควบคมไมได เราจงเขยนใหมโดยใช try-except มาแกปญหาน

>>> fridge_contents = {"egg":8, "mushroom":20, "pepper":3, "cheese":2,

"tomato":4,"milk":13}

>>> try:

Page 58: Python programming language

58 การควบคมทศทางของโปรแกรม (Control flow, Flow of Control หรอ Alternatively)

... if fridge_contents["orange juice"] > 3:

... print "Sure, let’s have some juice"

... except KeyError:

... print "Aww, there’s no juice. Lets go shopping"

...

Aww, there’s no juice. Lets go shopping

เมอเราใช try-except เราสามารถควบคมควบคมวาผลของความผดพลาดทออกมาจะเปนอยางไรดวย โดยควบคมชนดของความผดพลาดวาจะใหออกมาเปนแบบใด ในทนในการ except ความผดพลาดแบบ KeyEr-ror แลวใหพมพขอความผดพลาดออกมา

>>> fridge_contents = {"egg":8, "mushroom":20, "pepper":3, "cheese":2,

"tomato":4,"milk":13}

>>> try:

... if fridge_contents["orange juice"] > 3:

... print "Sure, let’s have some juice"

... except KeyError, error:

... print "Woah! There is no %s" % error

...

Woah! There is no ’orange juice’

raise เปน Statements เสรมของ try-except เพอชวยในการโยนความผดพลาดไปใชใน try-except ตออน ๆ ทเกยวของ

>>> class E(RuntimeError):

... def __init__(self, msg):

... self.msg = msg

... def getMsg(self):

... return self.msg

...

>>>

>>> try:

... raise E(’my test error’)

... except E, obj:

... print ’Msg:’, obj.getMsg()

...

Msg: my test error

Page 59: Python programming language

บทท 10

การสรางฟงกชน (Defined Function)

ฟงกชนคอแหลงรวมชดคำสงหลาย ๆ โดยคำสงทเราเรยบเรยงขนเอง เพอนำไปใชในการเขยนโปรแกรมซำ ๆ กนโดยไมตองเขยนชดคำสงนน ๆ ใหมอกครง (Reusability Code) โดยในไพธอนนนกมฟงกชนอย 2แบบคอ สามารถคนคากลบมาได (real function, return value) และแบบไมคนคา (void, sub , subprogramหรอ subroutine ) การสรางฟงกชนจะใชคยเวรดชอ def แลวตามดวยชอของฟงกชนนน ๆ โดยลกษณะของชวงการทำงานเหมอนกบคำสงควบคมทศทางโปรแกรมตาง ๆ เชนเดยวกน

รปแบบการเขยนคำสง

def function_name( [Argument] ):

Statement

……

[return]

• function name ชอฟงกชน

• Statements ชดคำสง

• var ตวแปร

• Argument รบคาของฟงกชน

• return การคนคากลบ โดยทการคนคากลบนนสามารถคนคากลบไดมากกวา 1 คา หรอมากกวา 1ตวแปร ซงสามารถคนคาไดทกชนดขอมลดวย

ตวอยาง

# สวนนใช define ฟงกชน

def foo():

print "Foobar"

# สวนนเปนสวนทเรยกใช ตองมเครองหมาย () หลงวงเลบเสมอ

foo()

ผลการทำงาน

Foobar

59

Page 60: Python programming language

60 การสรางฟงกชน (Defined Function)

10.1 การรบคาของฟงกชน, คนคากลบ และคามาตรฐานของการรบคา

1. การรบคาของฟงกชน (Function Argument)

2. การคนคากลบ (return)

3. คามาตรฐานของการรบคา (Function Default Argument)

ตวอยาง

# สวนนใช define ฟงกชน

def foo(text):

print text

# สวนนเปนสวนทเรยกใช ตองมเครองหมาย () หลงวงเลบเสมอ

foo("Foobar")

ผลการทำงาน

Foobar

ตวอยาง คยเวรด return เปนคำสงใหฟงกชนนนคนคาและ ออกจาก function

def add(x,y):

return x + y

print add(10,20)

print add(add(10,20),30)

ผลการทำงาน

30

60

ตวอยาง การคนคาแบบหลายคา หรอหลายตวแปร

a, b, c = 0, 0, 0

def getabc():

a = "Hello"

b = "World"

c = "!"

return a,b,c

def gettuple():

a,b,c = 1,2,3

return (a,b,c)

def getlist():

a,b,c = (3,4),(4,5),(5,6)

return [a,b,c]

a,b,c = getabc()

Page 61: Python programming language

10.1 การรบคาของฟงกชน, คนคากลบ และคามาตรฐานของการรบคา 61

print a,b,c

d,e,f = gettuple()

print d,e,f

g,h,i = getlist()

print g,h,i

ผลการทำงาน

Hello World !

1 2 3

(3, 4) (4, 5) (5, 6)

ตวอยาง กำหนดคามาตรฐานของตวแปร x และ y ใหมคาเปน 0 เพอปองกนการไมใสใหกบตวรบคาในฟงกชน

def add(x = 0,y = 0):

return x + y

print add(10,20)

print add()

ผลการทำงาน

30

0

ตวอยาง

def multiprint( n=5, txt="Hello" ):

i = 0

while i < n:

print txt

multiprint()

ผลการทำงาน

Hello

Hello

Hello

Hello

ตวอยาง

def factorial(n = 1):

if n <= 1:

return 1

return n*factorial(n-1)

print "2! = ",factorial(2)

Page 62: Python programming language

62 การสรางฟงกชน (Defined Function)

print "3! = ",factorial(3)

print "4! = ",factorial(4)

print "5! = ",factorial(5)

ผลการทำงาน

2! = 2

3! = 6

4! = 24

5! = 120

10.2 ตวแปรแบบ Global (ทวไป) และ Local (เฉพาะสวน)

ในการประกาศตวแปรตวหนงขนมาใช จะเปลองหนวยความจำไปสวนหนงสำหรบเกบคาตวแปร ดงนนถาเราประกาศตวแปรมา 1 ตว แลวนำไปใชเพยงในฟงกชนเดยว จะเปนการสนเปลองโดยใชเหต ดงนนควรประกาศตวแปรแบบทวไปบางตามความเหมาะสม

โดยตวแปรเฉพาะสวนทอยภายในฟงกชนนน เมอฟงกชนจบการทำงานตวแปรพวกนจะถกลบออกไปจากหนวยความจำทนท ซงประโยชนอกอยางหนงของตวแปรเฉพาะ (Local Variable) กคอ สวนอน ๆของ โปรแกรมจะไมรจกตวแปรเฉพาะสวนทอยในฟงกชนเลย ดงนนเรากสามารถใชตวแปรชอเดยวกนไดพรอมกนในคนละสวนของโปรแกรม โดยไมเกดขอผดพลาด

โดยในการทำงานหลก ๆ ของโปรแกรมเรากตองใชตวแปรทวไป (Global Variable) โดยทตวแปรทวไปจะเปนทรจกไปทงโปรแกรมดงนนฟงกชนตาง ๆ กสามารถเรยกใชไดดวย โดยการเรยกใชตวแปรทวไปในนนตองใชดยเวรดทชอ global ตามดวยชอตวแปรแบบทวไป

ตวอยาง การใชตวแปรแบบเฉพาะท

x = 5

def hello():

x = 6

print x

hello()

print x

ผลการทำงาน

6

5

ตวอยาง การใชตวแปรแบบทวไป

x = 5

def hello():

global x

x = 6

print x

hello()

print x

ผลการทำงาน

6

6

Page 63: Python programming language

บทท 11

การใสขอมลผานคยบอรด (Input Data fromKeyboard)

เราสามารถใหผใชสามารถทจะใสคาทเราตองการไดผานทางคยบอรดโดยทำงานผานฟงกชนทชอวา raw inputรปแบบการเขยนคำสง

var = raw_input([prompt])

• prompt ขอความทเปนคำถาม

• var ตวแปรทมารบขอมล ซงคาทสงออกมาจาก raw input ฟงกชน โดยมชนดขอมลเปน String

ตวอยาง

print "Halt!"

s = raw_input("Who Goes there? ")

print "You may pass,", s

เมอสงทำงานจะแสดงขอความดงน

Halt!

Who Goes there?

ทำการกรอกขอมลงไปใน โดยในตวอยางนกรอกคำวา Josh ลงไป แลวจะทำการแสดงออกมา

Halt!

Who Goes there? Josh

You may pass, Josh

63

Page 64: Python programming language

64 การใสขอมลผานคยบอรด (Input Data from Keyboard)

ตวอยาง

menu_item = 0

list = []

while menu_item != 9:

print "--------------------"

print "1. Print the list"

print "2. Add a name to the list"

print "3. Remove a name from the list"

print "4. Change an item in the list"

print "9. Quit"

menu_item = input("Pick an item from the menu: ")

if menu_item == 1:

current = 0

if len(list) > 0:

while current < len(list):

print current,". ",list[current]

current = current + 1

else:

print "List is empty"

elif menu_item == 2:

list.append(raw_input("Type in a name to add: "))

elif menu_item == 3:

del_name = raw_input("What name would you like to remove: ")

if del_name in list:

item_number = list.index(del_name)

del list[item_number]

#The code above only removes the first occurance of

# the name. The code below from Gerald removes all.

#while del_name in list:

# item_number = list.index(del_name)

# del list[item_number]

else:

print del_name," was not found"

elif menu_item == 4:

old_name = raw_input("What name would you like to change: ")

if old_name in list:

item_number = list.index(old_name)

list[item_number] = raw_input("What is the new name: ")

else:

print old_name," was not found"

print "Goodbye"

Page 65: Python programming language

65

การทำงาน เมอทำงานจะแสดงขอความดานลางน

--------------------

1. Print the list

2. Add a name to the list

3. Remove a name from the list

4. Change an item in the list

9. Quit

ใหพมพ 2 ลงไปแลวกรอกคำวา Jack และไลการทำงานตาง ๆ ดงตวอยางดานลาง ไปเรอย ๆ ซงนคอการทำงานโดยการรบคาผานทางคยบอรดนนเอง

Pick an item from the menu: 2

Type in a name to add: Jack

Pick an item from the menu: 2

Type in a name to add: Jill

Pick an item from the menu: 1

0 . Jack

1 . Jill

Pick an item from the menu: 3

What name would you like to remove: Jack

Pick an item from the menu: 4

What name would you like to change: Jill

What is the new name: Jill Peters

Pick an item from the menu: 1

0 . Jill Peters

Pick an item from the menu: 9

Goodbye

Page 66: Python programming language

66 การใสขอมลผานคยบอรด (Input Data from Keyboard)

Page 67: Python programming language

ภาคผนวก ก

เรองทหามลมใน Python

1. Don’t forget the colons อยาลมโคลอน (Colon, :) เมอจบคำสงควบคมทศทางของโปรแกรมตาง ๆเชน if, while หรอ for เปนตน

2. Start in column 1 ไพธอนใชระบบแทปแทนปกกาเพอควบคมชวงของการทำงาน และตองเรมจากคอลมท 1 ทกครงดวย

3. Blank lines matter at the interactive prompt อยาเผลอมบรรทดวางหรอขนบรรทดใหมในshell prompt ถาไมชวรวาเขยนคำสงจบในบรรทดนน ๆ

4. Indent consistently อยาใชปมแทปปนกบการเคาะเวนวรรค โดยควรเลอกวาจะใชการแทปหรอเคาะวรรค ถาใชเคาะวรรคกควรใชใหตลอดรอดฝง โดย 1 แทป ใหมขนาดเทากบเคาะวรรค 4 ครง (4whitespaces/tab)

5. Don’t code C in Python อยาเขยนโคดแบบ C ในไพธอน เชน if (X==1): print X โดยในความเปนจรงแลวไมตองม () กได เปนตน

6. Don’t always expect a result บาง Method เชน Append หรอ Sort อยาไปคดวามนจะ returnobj บางครงมน return None หรอ Null ออกมา ซงเราไมจำเปนตองเขยน list=list.append(X) แตใหเขยน list.append(X) ลงไปไดเลย

7. Use calls and imports properly หลงเรยก Method ใหม () ดวยเชน function() อยาใช functionเฉยๆ และตอน Import ไมตองใสนามสกล file อยาง import mod.py ใช import mod เฉยๆ กพอ

67

Page 68: Python programming language

68 เรองทหามลมใน Python

Page 69: Python programming language

ภาคผนวก ข

การตดตง Python, wxPython และ Stani’sPython Editor

ข.1 การตดตง Python

* ในเอกสารนอางอง Python Version 2.4.3

1. ดาวนโหลด Python 2.4 สำหรบ Windows ไดจาก http://www.python.org/download/ และเลอกversion 2.4.x จากรายการดาวนโหลด โดยเลอกรปแบบ "Python 2.4.x Windows installer"

รปท ข.1: เลอกดาวนโหลด Python 2.4 สำหรบ Windows

2. ดบเบลคลกท Python-2.xxx.yyy.exe ทเปนไฟลทเราดาวนโหลด แลวทำตามขนตอนการตดตงดงตอไปน

69

Page 70: Python programming language

70 การตดตง Python, wxPython และ Stani’s Python Editor

รปท ข.2: ขนตอนท 1 : ดบเบลคลกทไฟลตดตง

รปท ข.3: ขนตอนท 2 : เลอก "Install for all users"

รปท ข.4: ขนตอนท 3 : ใหเลอกทตดตงท C:\Python24\

Page 71: Python programming language

ข.1 การตดตง Python 71

รปท ข.5: ขนตอนท 4 : เลอกตดตงทกตวเลอก

รปท ข.6: ขนตอนท 5 : ดำเนนการตดตง

รปท ข.7: ขนตอนท 6 : เสรจสนการตดตง

Page 72: Python programming language

72 การตดตง Python, wxPython และ Stani’s Python Editor

ข.2 การตดตง wxPython

* ในเอกสารนอางอง wxPython Version 2.6.3.3 win32-unicode for Python 2.4

1. ดาวนโหลด wxPython Version 2.6 สำหรบ Windows ไดจาก http://www.wxpython.org/download.phpและไปท Microsoft Windows และเลอก win32-unicode จากตาราง wxPython runtime โดยเลอกทคอรลม Python 2.4 จากรายการดาวนโหลด โดย win32-unicode สำหรบ Windows NT/2000/XPและ win32-ansi สำหรบ Windows 95/98/Me

รปท ข.8: เลอกดาวนโหลด wxPython runtime for Python 2.4

รปท ข.9: เลอกสถานทดาวนโหลด

2. ดบเบลคลกท wxPython2.6-win32-unicode-2.6.3.3-py24.exe แลวทำตามขนตอนการตดตงดงตอไปน

Page 73: Python programming language

ข.2 การตดตง wxPython 73

รปท ข.10: ขนตอนท 1 : ดบเบลคลกทไฟลตดตง

รปท ข.11: ขนตอนท 2 : หนาตอนรบการตดตงให กด Next

รปท ข.12: ขนตอนท 3 : หนายอมรบขอตกลงให กด Yes

รปท ข.13: ขนตอนท 4 : หนาเลอกสถานทตดตง ใหเลอกตามทโปรแกรมไดกำหนดไวแตแรก

Page 74: Python programming language

74 การตดตง Python, wxPython และ Stani’s Python Editor

รปท ข.14: ขนตอนท 5 : หนาเลอก component ใหเลอกทงหมด แลวกด Next

รปท ข.15: ขนตอนท 6 : เขาสขนตอนการตดตงและเมอเสรจแลวใหเลอก checkbox ทงหมดเพอใหโปรแกรมตดตงทำการดดแปลงระบบเพมเตมแลวกด Finish

Page 75: Python programming language

ข.3 การตดตง Stani’s Python Editor 75

ข.3 การตดตง Stani’s Python Editor

* ในเอกสารนอางอง Stani’s Python Editor Version 0.8.2.a for wxPython Version 2.6 win32-unicode and Python 2.4

1. ดาวนโหลด Stani’s Python Editor Version 0.8.2.a ไดจาก http://www.stani.be/python/spe/page downloadและไปท Where to get? และเลอก SourceForge (mirror)

รปท ข.16: ดาวนโหลด Stanis Python Editor Version 0.8.2.a สำหรบ Windows ไดจากลงส SourceForge(mirror)

รปท ข.17: เลอกสถานทดาวนโหลด

2. ดบเบลคลกท SPE-0.8.2.a-wx2.6.1.0-py24.exe ทเปนไฟลทเราดาวนโหลด แลวทำตามขนตอนการตดตงดงตอไปน

Page 76: Python programming language

76 การตดตง Python, wxPython และ Stani’s Python Editor

รปท ข.18: ขนตอนท 1 : ดบเบลคลกทไฟลตดตง

รปท ข.19: ขนตอนท 2 : หนาตอนรบการตดตงให กด Next

รปท ข.20: ขนตอนท 3 : หนาเลอกสถานทตดตง ใหเลอกตามทโปรแกรมไดกำหนดไวแตแรก

Page 77: Python programming language

ข.3 การตดตง Stani’s Python Editor 77

รปท ข.21: ขนตอนท 4 : เขาสขนตอนการตดตงโดยกด Next เพอเรมการตดตง

รปท ข.22: ขนตอนท 5 : เขาสขนตอนการตดตง และเสรจสนการตดตง

Page 78: Python programming language

78 การตดตง Python, wxPython และ Stani’s Python Editor

Page 79: Python programming language

ภาคผนวก ค

อธบายสวนตาง ๆ พอสงเขปของโปรแกรม SPE

รปท ค.1: เปดโปรแกรม Stani’s Python Editor หรอเรยกสน ๆ วา SPE ขนมา

79

Page 80: Python programming language

80 อธบายสวนตาง ๆ พอสงเขปของโปรแกรม SPE

รปท ค.2: หนาตางโปรแกรม Stani’s Python Editor (SPE)

ค.0.1 Sidebar

Explore

เปนหนาตาง Class browser สำหรบแสดงรายการ class, method และ function ทแสดงออกมาเปนโครงสรางตนไม

Index

หนาตางททำหนาทคนหาอตโนมตสำหรบสราง index เพอทำ index ใหกบการคนโดยทำ index จาก classและ and method

Todo

หนาตางแสดงรายการทตองทำในไฟลนน ๆ

Notes

หนาตางแสดงหมายเหตตาง

Page 81: Python programming language

81

Browser

หนาตางในการแสดงไฟลใน folder หรอ directory ทไฟลนนอย ทำงานคลาย ๆ กบ Windows Explorer

ค.0.2 Source

Editor

หนาตางสำหรบในการพมพโคดคำสงตาง ๆ

UML view

หนาตางแสดง Graphical layout ของลำดบของ class hierarchy

Pydoc

หนาตางสรางไฟล documentation แบบอตโนมต

Separators

หนาตางสำหรบใช separator เพอทำ Label ของชดคำสงของโปรแกรม

ค.0.3 Tools

Shell

เปนสวนรายงานความผดพลาดตาง ๆ ของโปรแกรมทเราเขยน และสามารถใชเปนตวกระโดดขามไปยงError line ไดงาย และยงใชในการพมพคำสง หรอโคดโปรแกรมตาง ๆ แทน Editor ไดดวย

รปท ค.3: Shell

Local object browser

เปนสวนบอกรายการตวแปร, ออปเจค และคลาส ตาง ๆ เพอใชในการดชวงของชวตของตวแปร และออปเจคตาง ๆ และยงชวยในการคนหาและกระโดดไปยงตวแปร, ออปเจค และคลาส ทเราตองการไดงาย

Page 82: Python programming language

82 อธบายสวนตาง ๆ พอสงเขปของโปรแกรม SPE

รปท ค.4: Local object browser

Session

เปนตวบนทกการพมพโคดโปรแกรมสำหรบชวยในการไมตองพมพใหมในกรณทใช shell ในการพมพคำสงโปรแกรมตาง ๆ

รปท ค.5: Session

Output

ถาคณสงใหโปรแกรมทำงานใน SPE โดยใชคำสง Tools > Run/Stop ตวผลการทำงานจะออกมาในหนาตางน รวมถง Error ตาง ๆ โดยสามารถกระโดดไปยงโคดหรอชดคำสงท Error นน ๆ ไดจากหนาตางน

รปท ค.6: Output

Page 83: Python programming language

83

อน ๆ

1. Find หนาตางสำหรบการคนหาขอมลตาง ๆ

2. Browser หนาตางทใชในการเรยกรายชอไฟลซงทำงานเหมอน Windows Explorer

3. Recent หนาตางแสดงรายชอไฟลทเราเปดอย

4. Todo หนาตางแสดงรายการทตองทำใน Project หรอไฟลทเราเปดอย

5. Index หนาตางคำสงสำหรบเรยกใชสารบญงานตาง ๆ ภายในไฟล

6. Notes หนาตางคำสงหมายเหตสำหรบปองกนการหลงลม

Page 84: Python programming language

84 อธบายสวนตาง ๆ พอสงเขปของโปรแกรม SPE

Page 85: Python programming language

ภาคผนวก ง

การเขยน, Debug และสงใหโปรแกรมทำงาน

ง.1 การเขยนโปรแกรมใน SPE และสงใหโปรแกรมทำงาน

เพอทดสอบการทำงานใหพมพคำสงโปรแกรมเรมตนกอนโดยพมพคำสงดงน

>>> print "Hello, World!"

พมพลงใน Source Editor แลวไปไปท "Tools" ท menu bar แลวไปท คำสง "Run without argu-ments/Stop" หรอกด short-key Ctrl+Shift+R

รปท ง.1: สงใหโปรแกรมทำงาน

รปท ง.2: ผลการทำงาน

85

Page 86: Python programming language

86 การเขยน, Debug และสงใหโปรแกรมทำงาน

ง.2 การ Debug โปรแกรม

รปท ง.3: การแจง Error เพอใชประกอบการ Debug

File "C:\Documents and Settings\Ford AntiTrust\Desktop\helloworld.py", line 1

print "Hello, World!

^

SyntaxError: EOL while scanning single-quoted string

จากตวอยางไดแจง Error ไดสองทดวยกน คอหนาตาง Editor ซงจะมเสนใตเปนฟนปลาสแดงขดตามบรรทดทม Error และในหนาตาง Output กม Error Code แจงไว โดยไดบอกไววาท line 1 ม Error โดยบอกวาเปน SyntaxError และมปญหาจาก Systax ลกษณะ single-quoted string มปญหานนเอง

โดยปญหาในการแจงตาง ๆ นนตว Interpreter จะแจงใหทราบไดจาก line ทมปญหา เชนตวอยางดานลางนไดแจงไววามาจาก line ท 1

File "C:\Documents and Settings\Ford AntiTrust\Desktop\helloworld.py", line 1

รวมไปถงแจง column ของ line วานาจะผดทคำสงใด ในทนผดทคำสง print นนเอง

print "Hello, World!

^

SyntaxError: EOL while scanning single-quoted string

Page 87: Python programming language

ภาคผนวก จ

ขอมลอางอง

• Python programming language. http://www.python.org/, Python Software Foundation, 2006.

• Python programming language. http://en.wikipedia.org/wiki/Python programming language,Wikipedia the free encyclopedia, 2006.

• Python software. http://en.wikipedia.org/wiki/Python software, Wikipedia the free encyclope-dia, 2006.

• Comparison of programming languages.http://en.wikipedia.org/wiki/Comparison of programming languages, Wikipedia the free en-cyclopedia, 2006.

• Python Tutorial Online. http://python.cmsthailand.com/, CMSthailand.com, 2005.

• An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl — March 2000refereed journal paper. http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprt computer2000.pdf,Lutz Prechelt, 2000.

• Programming in Python. http://www-128.ibm.com/developerworks/library/os-python5/index.html,Robert Brunner ([email protected]), Research Scientist, National Center for SupercomputingApplications, 2005.

• wxPython, a blending of the wxWidgets C++ class library. http://www.wxpython.org/, OS-AF (Open Source Applications Foundation), 2006.

• Stani’s Python Editor, Python IDE with Blender, Kiki, PyChecker, wxGlade & XRC support.http://pythonide.stani.be/, S. Michiels, Amsterdam, the Netherlands 2006.

• Beginning Python Wiley Publishing, Inc., Peter Norton, Alex Samuel, David Aitel, EricFoster-Johnson, Leonard Richardson, Jason Diamond, Aleatha Parker, Michael Roberts, 2005.

• Python http://veer.exteen.com/, วร สตยมาศ, 2005.

• เรองทหามลมใน Python http://plynoi.exteen.com/20060827/python, Plynoi, 2006.

87

Page 88: Python programming language

ดรรชน

64 bit double precision, 30

Alternatively, 50

Category และ Application Domains, 163D Graphics Rendering, 17Database Access, 16Desktop GUI, 17Education, 17Game, 17GUI, 17Network programming, 17Numeric computation, 17Scientific, 17Software builder, 17Software Testing, 17Web และ Internet Development, 16

Colon Symbol, 32Comment, 22Concatenation Symbol, 40Control flow, 50

Data type, 27ชนดขอมลแบบการรวมกลมขอมล (Collection

Data Types), 32ดกชนนาร (Dictionary หรอ Groupings of

Data Indexed by Name), 33ทบเบล (Tuples) และ อนกรม (Sequences),

33ลสต (List), 32อารเรย (Array), 32เซต (Sets), 34

ตวเลข (Numbers), 29imaginary number, 31signed integer, 29จำนวนตรรกะ (Boolean), 30จำนวนจรง (Floating-point numbers), 30

จำนวนเชงซอน (Complex Numbers), 31จำนวนเตม (Integer), 29จำนวนเตมธรรมดา (Plain Integer), 29จำนวนเตมแบบยาว (Long integer), 30

สายอกขระ (String หรอ Array of Characters),39

Flow of Control, 50Function argument, 59Functions

abs(), 26complex(), 31float(), 31int(), 30len(), 34max(), 26min(), 26, 27print, 21range(), 27, 53–55raw input, 63set(), 35sum(), 27type(), 29

Google, 19Guido van Rossum, 13

Hello World, 21, 85

Industrial Light & Magic, 18

Language Evaluation Criteria, 15Cost, 15Readability, 15Reliability, 15Writability, 15

Multi-paradigm language, 15

88

Page 89: Python programming language

ดรรชน 89

NASA, 19

Operator*, 25**, 25, 30+, 25-, 25/, 25%, 25

Python, 13

Repetition Symbol, 21Reserved words (Keywords), 22

and, 22, 47as, 22assert, 22, 55break, 22, 54class, 22continue, 22, 54def, 22, 58del, 22elif, 22, 51else, 22, 51else clauses, 54else if, 51except, 22, 56exec, 22finally, 22for, 22, 53from, 22global, 22, 49, 62if, 22, 51import, 22in, 22, 45, 53–55is, 22, 45lambda, 22not, 22, 47or, 22, 47pass, 22, 54print, 22raise, 22, 56return, 59

return , 22try, 22, 56while, 22, 53with, 22yield, 22

Stani’s Python Editor (SPE), 75Browser, 81Explore, 80Index, 80Notes, 80Source, 81

Editor, 81Pydoc, 81Separators, 81UML view, 81

Todo, 80Tools, 81

Local object browser, 81Output, 82Session, 82Shell, 81อน ๆ, 83

การเขยน, Debug และสงใหโปรแกรมทำงาน, 85การ Debug โปรแกรม, 86การสงใหโปรแกรมทำงาน, 85การเขยนโปรแกรมใน SPE, 85

หนาตางโปรแกรม, 80statement block, statement scope, 48String Concatenation Symbol, 40String formatting operator, 41Symbol

*, 21+, 40„ 40:, 32#, 22% (String formatting operator), 41

typebool, 30complex, 31dict, 33

Page 90: Python programming language

90 ดรรชน

False, 30float, 30int, 29list, 32long, 30set, 34True, 30tuple, 34

wxPython, 72

การควบคมทศทางของโปรแกรม, 50การจดการความผดปกตของโปรแกรม (Error Check-

ing), 51, 55assert Statements, 55try-except และ raise Statements (Exception

handling), 56การตดสนใจ (Decisions, Choice or Selection),

51การตดสนใจ (Decisions, Choice หรอ Selec-

tion)elif, 51else, 51else if, 51if, 51switch, 52

การวนทำซำ (Loop, Iteration), 51break, 54continue, 54do-while, 55else clauses, 54for, 53while, 53

การคำนวณทางคณตศาสตร (Arithmetic Mathemat-ics), 23

การคำนวณผานฟงกชนภายใน (Built-in MathFunctions), 26

การหาคาสมบรณ, 26กำหนดจำนวนตวเลขทศนยม, 27จำนวนทนอยทสด และมากทสดในกลม, 26ชวงของขอมลตวเลข, 27หาผลรวมทงหมดในชดขอมล, 27

การคำนวณพนฐาน (normal arithmetic oper-ators), 25

คณ, 25บวก, 25ยกกำลง, 25ลบ, 25หาร, 25หารเอาเศษ, 25อนดบความสำคญของการคำนวณ, 25

การตงตวชอแปร, 22การตดตง, 69

Python, 69Stani’s Python Editor (SPE), 69, 75wxPython, 69, 72

การสรางฟงกชน (Defined Function), 58Global Variable, 62Local Variable, 62การคนคากลบ (return) , 60การรบคาของฟงกชน (Function Argument), 60คามาตรฐานของการรบคา (Function Default Ar-

gument, 60การเปรยบเทยบ (Comparisons), 43

ตวอยาง, 45การแสดงผลเบองตน (Printing) และสญลกษณทเกยวของ,

19

ขอเดนของภาษาไพธอน, 15

คำสงวน, 22

ชนดของตวแปร, 27ชวงของการทำงาน, 48ชวงของการทำงาน (Statement block), 49ชวงชวตของตวแปร (Life time หรอ Variable s-

cope), 49

ซอฟตแวรทเขยนดวยไพธอน, 17Battlefield 2, 18BitTorrent, 17Blender, 18Chandler, 18Civilization IV, 18EVE Online, 18Indian Ocean Tsunami Detector, 18

Page 91: Python programming language

ดรรชน 91

Kombilo, 18Mailman, 18MoinMoin, 18OpenRPG, 18Plone, 18Stani’s Python Editor(SPE), 18Trac, 18Turbogears, 18ViewVC, 18Zope, 18

นพจนทางตรรกะศาสตร (Boolean Expressions), 46AND, 47NOT, 47OR, 47

ประวต, 13Python 1.0, 13Python 2.0, 14อนาคต, 14

หลกปรชญาของภาษาไพธอน, 15