บทที่ 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 Statements scope) ถา้ เงื่อนไขทน่ี ำมาทดสอบทางตรรศาสตร์เปน็ จริง (True) กจ็ ะทำคำสัง่ ชดุ นนั้ ถา้ เง่ือนไขท่ีนำมาทดสอบ ทางตรรกศาสตรเ์ ป็นเท็จ (False) ก็จะไม่ทำคำสง่ั ชุดนน้ั โดยมรี ูปแบบคำสง่ั ในภาษาไพธอนดังน้ี 51
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\"
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 (ดวู ธิ ีการใชไ้ ด้จากบทกอ่ น ๆ )
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 ....
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 และมีบน Python 2.5 Beta เม่ือวันที่ 24 กุมพาพนั ธ์ 2549) 9.3 การจดั การความผิดปกตขิ องโปรแกรม (Error Checking) 9.3.1 assert Statements assert เปน็ คำสง่ั ที่วางไว้สำหรบั ตรวจสอบความผดิ พลาดภายในคำส่ังที่เราเขียนในโปรแกรมของเรา โดย เป็นเหมือนส่วนเตมิ เต็มในการแจ้งความผดิ พลาดของตัวไพธอนเพื่อบอกรายละเอียดที่มากขึน้ ในการเขียน โปรแกรมของเรา ดังรปู แบบคือ assert Condition, ’Text Error or Text Mixed’
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 แทนการตรวจสอบและดัก จับท่วั ไปโปรแกรมของเรากจ็ ะเสยี เวลาในการประมวลผลสว่ นอื่น ๆ ไป
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:
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
บทท่ี 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
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()
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 ! 123 (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)
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 x=5 def hello(): def hello(): x=6 global x print x x=6 hello() print x print x hello() print x ผลการทำงาน ผลการทำงาน 6 5 6 6
บทที่ 11 การใสข่ ้อมูลผ่านคียบ์ อรด์ (Input Data from Keyboard) เราสามารถให้ผู้ใชส้ ามารถทีจ่ ะใสค่ า่ ที่เราตอ้ งการได้ผา่ นทางคียบ์ อร์ดโดยทำงานผา่ นฟังกช์ น่ั ที่ชอ่ื วา่ 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
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\"
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
66 การใสข่ อ้ มูลผา่ นคียบ์ อร์ด (Input Data from Keyboard)
ภาคผนวก ก เรอ่ื งท่ีห้ามลมื ใน 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 คร้งั (4 whitespaces/tab) 5. Don’t code C in Python อยา่ เขยี นโค้ดแบบ C ในไพธอน เชน่ if (X==1): print X โดยในความ เปน็ จริงแล้วไมต่ อ้ งมี () กไ็ ด้ เปน็ ต้น 6. Don’t always expect a result บาง Method เชน่ Append หรอื Sort อยา่ ไปคิดวา่ มันจะ return obj บางคร้งั มนั 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
68 เรื่องท่หี ้ามลมื ใน Python
ภาคผนวก ข การติดต้ัง Python, wxPython และ Stani’s Python 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
70 การตดิ ต้งั Python, wxPython และ Stani’s Python Editor รปู ท่ี ข.2: ข้นั ตอนที่ 1 : ดบั เบิลคลก้ิ ทไ่ี ฟลต์ ิดต้งั รูปที่ ข.3: ขั้นตอนท่ี 2 : เลอื ก \"Install for all users\" รปู ที่ ข.4: ขั้นตอนท่ี 3 : ใหเ้ ลือกทต่ี ิดต้ังท่ี C:\\Python24\\
ข.1 การตดิ ต้งั Python 71 รูปที่ ข.5: ข้ันตอนที่ 4 : เลือกตดิ ตั้งทุกตวั เลอื ก รูปที่ ข.6: ขั้นตอนท่ี 5 : ดำเนนิ การตดิ ต้ัง รปู ที่ ข.7: ขน้ั ตอนท่ี 6 : เสรจ็ สน้ิ การตดิ ต้ัง
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 แลว้ ทำตามขนั้ ตอนการติดตั้งดงั ต่อไปน้ี
ข.2 การตดิ ตงั้ wxPython 73 รปู ที่ ข.10: ขนั้ ตอนท่ี 1 : ดับเบิลคลก้ิ ท่ไี ฟล์ตดิ ตงั้ รูปท่ี ข.11: ขน้ั ตอนที่ 2 : หนา้ ต้อนรับการตดิ ตง้ั ให้ กด Next รูปที่ ข.12: ขั้นตอนท่ี 3 : หน้ายอมรับข้อตกลงให้ กด Yes รปู ที่ ข.13: ขั้นตอนที่ 4 : หนา้ เลอื กสถานท่ตี ิดต้งั ใหเ้ ลอื กตามทโี่ ปรแกรมได้กำหนดไวแ้ ตแ่ รก
74 การติดตง้ั Python, wxPython และ Stani’s Python Editor รปู ท่ี ข.14: ขั้นตอนท่ี 5 : หน้าเลือก component ให้เลอื กทั้งหมด แล้วกด Next รูปท่ี ข.15: ขั้นตอนที่ 6 : เข้าสู่ขั้นตอนการติดตัง้ และเมอื่ เสรจ็ แลว้ ให้เลือก checkbox ทั้งหมดเพื่อให้ โปรแกรมติดตง้ั ทำการดดั แปลงระบบเพ่มิ เติมแล้วกด Finish
ข.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: ดาวน์โหลด Stani´s Python Editor Version 0.8.2.a สำหรับ Windows ได้จากลงิ ส์ SourceForge (mirror) รปู ท่ี ข.17: เลอื กสถานทีด่ าวนโ์ หลด 2. ดับเบลิ คล้ิกที่ SPE-0.8.2.a-wx2.6.1.0-py24.exe ที่เป็นไฟล์ที่เราดาวน์โหลด แลว้ ทำตามข้ันตอนการ ติดตง้ั ดังตอ่ ไปน้ี
76 การติดต้ัง Python, wxPython และ Stani’s Python Editor รปู ท่ี ข.18: ขน้ั ตอนที่ 1 : ดบั เบิลคล้กิ ทไ่ี ฟลต์ ิดต้งั รูปท่ี ข.19: ข้ันตอนท่ี 2 : หนา้ ต้อนรบั การตดิ ตั้งให้ กด Next รปู ที่ ข.20: ขั้นตอนที่ 3 : หน้าเลือกสถานท่ีตดิ ต้งั ให้เลอื กตามท่โี ปรแกรมได้กำหนดไวแ้ ต่แรก
ข.3 การตดิ ตั้ง Stani’s Python Editor 77 รปู ที่ ข.21: ขน้ั ตอนท่ี 4 : เขา้ สู่ข้นั ตอนการติดตัง้ โดยกด Next เพื่อเรมิ่ การตดิ ตงั้ รปู ท่ี ข.22: ขัน้ ตอนที่ 5 : เขา้ สขู่ ั้นตอนการติดต้ัง และเสรจ็ สิ้นการตดิ ตง้ั
78 การติดต้งั Python, wxPython และ Stani’s Python Editor
ภาคผนวก ค อธิบายส่วนต่าง ๆ พอสังเขปของโปรแกรม SPE รูปที่ ค.1: เปดิ โปรแกรม Stani’s Python Editor หรอื เรยี กส้ัน ๆ วา่ SPE ขนึ้ มา 79
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 หน้าตา่ งแสดงหมายเหตตุ ่าง
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 เป็นสว่ นบอกรายการตัวแปร, อ็อปเจค็ และคลาส ต่าง ๆ เพ่อื ใช้ในการดูชว่ งของชีวิตของตวั แปร และ อ็อปเจ็คต่าง ๆ และยังชว่ ยในการค้นหาและกระโดดไปยงั ตวั แปร, ออ็ ปเจค็ และคลาส ทเี่ ราตอ้ งการได้ง่าย
82 อธบิ ายส่วนต่าง ๆ พอสงั เขปของโปรแกรม SPE รูปที่ ค.4: Local object browser Session เป็นตวั บนั ทึกการพิมพ์โค้ดโปรแกรมสำหรบั ช่วยในการไม่ตอ้ งพิมพ์ใหม่ในกรณีที่ใช้ shell ในการพิมพ์ คำสั่งโปรแกรมต่าง ๆ รูปท่ี ค.5: Session Output ถ้าคุณสัง่ ให้โปรแกรมทำงานใน SPE โดยใช้คำสัง่ Tools > Run/Stop ตัวผลการทำงานจะออกมาใน หนา้ ตา่ งน้ี รวมถงึ Error ต่าง ๆ โดยสามารถกระโดดไปยงั โคด้ หรือชดุ คำส่งั ที่ Error นั้น ๆ ไดจ้ ากหน้าต่างนี้ รปู ท่ี ค.6: Output
83 อ่ืน ๆ 1. Find หน้าตา่ งสำหรับการคน้ หาขอ้ มลู ต่าง ๆ 2. Browser หนา้ ตา่ งทีใ่ ช้ในการเรียกรายชอ่ื ไฟล์ซึง่ ทำงานเหมอื น Windows Explorer 3. Recent หน้าตา่ งแสดงรายชอ่ื ไฟล์ทเี่ ราเปิดอยู่ 4. Todo หนา้ ต่างแสดงรายการท่ีต้องทำใน Project หรือไฟล์ที่เราเปดิ อยู่ 5. Index หน้าต่างคำสงั่ สำหรับเรยี กใชส้ ารบัญงานตา่ ง ๆ ภายในไฟล์ 6. Notes หนา้ ตา่ งคำสง่ั หมายเหตุสำหรับป้องกันการหลงลืม
84 อธิบายส่วนตา่ ง ๆ พอสงั เขปของโปรแกรม SPE
ภาคผนวก ง การเขยี น, Debug และส่งั ใหโ้ ปรแกรมทำงาน ง.1 การเขยี นโปรแกรมใน SPE และสง่ั ใหโ้ ปรแกรมทำงาน เพื่อทดสอบการทำงานใหพ้ มิ พค์ ำสง่ั โปรแกรมเร่มิ ตน้ กอ่ นโดยพมิ พ์คำสั่งดังนี้ >>> print \"Hello, World!\" พมิ พ์ลงใน Source Editor แล้วไปไปที่ \"Tools\" ท่ี menu bar แลว้ ไปท่ี คำสัง่ \"Run without argu- ments/Stop\" หรอื กด short-key Ctrl+Shift+R รปู ท่ี ง.1: สัง่ ใหโ้ ปรแกรมทำงาน รปู ท่ี ง.2: ผลการทำงาน 85
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
ภาคผนวก จ ข้อมูลอา้ งองิ • 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 2000 refereed journal paper. http://page.mi.fu-berlin.de/p˜rechelt/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 Supercomputing Applications, 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, Eric Foster-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
ดรรชนี 64 bit double precision, 30 จำนวนเชิงซอ้ น (Complex Numbers), 31 Alternatively, 50 จำนวนเต็ม (Integer), 29 จำนวนเต็มธรรมดา (Plain Integer), 29 Category และ Application Domains, 16 จำนวนเตม็ แบบยาว (Long integer), 30 3D Graphics Rendering, 17 สายอักขระ (String หรือ Array of Characters), Database Access, 16 39 Desktop GUI, 17 Flow of Control, 50 Education, 17 Function argument, 59 Game, 17 Functions GUI, 17 Network programming, 17 abs(), 26 Numeric computation, 17 complex(), 31 Scientific, 17 float(), 31 Software builder, 17 int(), 30 Software Testing, 17 len(), 34 Web และ Internet Development, 16 max(), 26 Colon Symbol, 32 min(), 26, 27 Comment, 22 print, 21 Concatenation Symbol, 40 range(), 27, 53–55 Control flow, 50 raw input, 63 set(), 35 Data type, 27 sum(), 27 ชนดิ ข้อมูลแบบการรวมกลุม่ ข้อมลู (Collection type(), 29 Data Types), 32 Google, 19 ดกิ ชนั นารี (Dictionary หรือ Groupings of Guido van Rossum, 13 Data Indexed by Name), 33 ทับเบล้ิ (Tuples) และ อนกุ รม (Sequences), Hello World, 21, 85 33 Industrial Light & Magic, 18 ลสิ ต์ (List), 32 อาร์เรย์ (Array), 32 Language Evaluation Criteria, 15 เซต็ (Sets), 34 Cost, 15 ตวั เลข (Numbers), 29 Readability, 15 imaginary number, 31 Reliability, 15 signed integer, 29 Writability, 15 จำนวนตรรกะ (Boolean), 30 จำนวนจรงิ (Floating-point numbers), 30 Multi-paradigm language, 15 88
ดรรชนี 89 NASA, 19 return , 22 try, 22, 56 Operator while, 22, 53 *, 25 with, 22 **, 25, 30 yield, 22 +, 25 -, 25 Stani’s Python Editor (SPE), 75 /, 25 Browser, 81 %, 25 Explore, 80 Index, 80 Python, 13 Notes, 80 Source, 81 Repetition Symbol, 21 Editor, 81 Reserved words (Keywords), 22 Pydoc, 81 Separators, 81 and, 22, 47 UML view, 81 as, 22 Todo, 80 assert, 22, 55 Tools, 81 break, 22, 54 Local object browser, 81 class, 22 Output, 82 continue, 22, 54 Session, 82 def, 22, 58 Shell, 81 del, 22 อนื่ ๆ, 83 elif, 22, 51 การเขยี น, Debug และส่ังให้โปรแกรมทำงาน, 85 else, 22, 51 การ Debug โปรแกรม, 86 else clauses, 54 การส่ังให้โปรแกรมทำงาน, 85 else if, 51 การเขยี นโปรแกรมใน SPE, 85 except, 22, 56 หน้าต่างโปรแกรม, 80 exec, 22 finally, 22 statement block, statement scope, 48 for, 22, 53 String Concatenation Symbol, 40 from, 22 String formatting operator, 41 global, 22, 49, 62 Symbol if, 22, 51 import, 22 *, 21 in, 22, 45, 53–55 +, 40 is, 22, 45 „ 40 lambda, 22 :, 32 not, 22, 47 #, 22 or, 22, 47 % (String formatting operator), 41 pass, 22, 54 print, 22 type raise, 22, 56 bool, 30 return, 59 complex, 31 dict, 33
90 ดรรชนี False, 30 การคำนวณพนื้ ฐาน (normal arithmetic oper- float, 30 ators), 25 int, 29 คณู , 25 list, 32 บวก, 25 long, 30 ยกกำลัง, 25 set, 34 ลบ, 25 True, 30 หาร, 25 tuple, 34 หารเอาเศษ, 25 อนั ดับความสำคัญของการคำนวณ, 25 wxPython, 72 การตัง้ ตัวช่อื แปร, 22 การตดิ ตง้ั , 69 การควบคุมทิศทางของโปรแกรม, 50 Python, 69 การจัดการความผดิ ปกตขิ องโปรแกรม (Error Check- Stani’s Python Editor (SPE), 69, 75 ing), 51, 55 wxPython, 69, 72 assert Statements, 55 การสรา้ งฟงั กช์ ่ัน (Defined Function), 58 try-except และ raise Statements (Exception Global Variable, 62 handling), 56 Local Variable, 62 การตัดสินใจ (Decisions, Choice or Selection), การคนื คา่ กลบั (return) , 60 51 การรับคา่ ของฟงั กช์ ่ัน (Function Argument), 60 การตัดสนิ ใจ (Decisions, Choice หรือ Selec- คา่ มาตรฐานของการรบั ค่า (Function Default Ar- tion) gument, 60 elif, 51 การเปรียบเทยี บ (Comparisons), 43 else, 51 ตัวอยา่ ง, 45 else if, 51 การแสดงผลเบอื้ งต้น (Printing) และสญั ลกั ษณ์ทีเ่ กย่ี วขอ้ ง, if, 51 19 switch, 52 ขอ้ เด่นของภาษาไพธอน, 15 การวนทำซ้ำ (Loop, Iteration), 51 break, 54 คำสงวน, 22 continue, 54 do-while, 55 ชนิดของตัวแปร, 27 else clauses, 54 ช่วงของการทำงาน, 48 for, 53 ชว่ งของการทำงาน (Statement block), 49 while, 53 ช่วงชวี ติ ของตวั แปร (Life time หรอื Variable s- การคำนวณทางคณติ ศาสตร์ (Arithmetic Mathemat- cope), 49 ics), 23 ซอฟต์แวรท์ ี่เขียนด้วยไพธอน, 17 การคำนวณผา่ นฟงั กช์ น่ั ภายใน (Built-in Math Battlefield 2, 18 Functions), 26 BitTorrent, 17 การหาค่าสัมบรู ณ,์ 26 Blender, 18 กำหนดจำนวนตวั เลขทศนยิ ม, 27 Chandler, 18 จำนวนท่ีน้อยทีส่ ดุ และมากท่สี ดุ ในกลมุ่ , 26 Civilization IV, 18 ช่วงของขอ้ มูลตัวเลข, 27 EVE Online, 18 หาผลรวมทัง้ หมดในชดุ ขอ้ มูล, 27 Indian Ocean Tsunami Detector, 18
ดรรชนี 91 Kombilo, 18 Mailman, 18 MoinMoin, 18 OpenRPG, 18 Plone, 18 Stani’s Python Editor(SPE), 18 Trac, 18 Turbogears, 18 ViewVC, 18 Zope, 18 นพิ จน์ทางตรรกะศาสตร์ (Boolean Expressions), 46 AND, 47 NOT, 47 OR, 47 ประวัต,ิ 13 Python 1.0, 13 Python 2.0, 14 อนาคต, 14 หลกั ปรชั ญาของภาษาไพธอน, 15
Search