รีววิ หลาม 1 Jay Summet CS 1803 โครงร่าง รู ้เบือ ้ งต ้นเกีย ่ วกับไพธอน ตัวดำเนินกำรและนิพจน์ ประเภทข ้อมูลและกำรแปลงประเภท ื่ สำหรับข ้อมูล ตัวแปร: ชอ ั่ ฟั งก์ชน กำรไหลของโปรแกรม (กำรแตกแขนง). อินพุตจำกผู ้ใช ้ กำรวนซำ้ (วนซำ้ ). 2 ้ ่ รู ้เบืองต้ นเกียวกับไพธอน Python เป็ นภำษำกำรเขียนโปรแกรมแบบตีควำม โปรแกรมคือชุดคำสงั่ ทีบ ่ อกให ้คอมพิวเตอร์ทรำบว่ำต ้องทำอะไร มีไวยำกรณ์ทเี่ ข ้มงวด และจะจดจำเฉพำะคำสงั่ ทีเ่ ฉพำะเจำะจง เท่ำนัน ้ หำกล่ำมจำสงิ่ ทีค ่ ณ ุ พิมพ์ไม่ได ้ ลำ่ มจะบ่นจนกว่ำคุณจะ แก ้ไข 3 ผู ป ้ ระกอบการ Python มีตวั ดำเนินกำรมำกมำย ตัวอย่ำงบำงสว่ นคือ: +, -, *, /, %, >, <, == พิมพ์ ตัวดำเนินกำรดำเนินกำรกับตัวถูกดำเนินกำรตัง้ แต่หนึง่ ตัวขึน ้ ไป ตัวดำเนินกำรบำงตัวยอมรับตัวถูกดำเนินกำรก่อนและหลังตัว ดำเนินกำร: ตัวถูกดำเนินกำร 1 + ตัวถูกดำเนินกำร 2 หรือ 3 + 5 อืน ่ ๆ จะตำมด ้วยตัวถูกดำเนินกำรตัง้ แต่หนึง่ ตัวขึน ้ ไปจนจบบรรทัด ่ พิมพ์ “Hi!”, 32, 48 เชน เมือ ่ ตัวดำเนินกำรได ้รับกำรประเมิน พวกเขำจะดำเนินกำรกับตัวถูก ดำเนินกำร และสร ้ำงค่ำใหม่ 4 ตัวอย่างการประเมินนิ พจน์ นิพจน์คอ ื ชุดของค่ำและตัวดำเนินกำรทีจ ่ ะสร ้ำงค่ำใหม่เมือ ่ ประเมิน ต่อไปนีค ้ อ ื ตัวอย่ำงบำงสว่ น พร ้อมกับค่ำใหม่ทส ี่ ร ้ำงขึน ้ เมือ ่ ประเมิน: 5 + 10 สร ้ำง 15 “สวัสดี” + “ “ + “เจย์!” ผลิต "สวัสดีเจย์!" 10 / (2+3) สร ้ำง 2 10 > 5 ทำให ้เกิด True 10 < 5 ก่อให ้เกิด False 10 / 3.5 ให ้ผลลัพธ์ 2.8571428571 10 // 3 ผลิต 3 10 % 3 ผลิต 1 5 ่ รายชือโอเปอเรเตอร ์: +, -, *, /, <, >, <=, >=, ==, %, // ่ กำร ตัวดำเนินกำรบำงตัวควรคุ ้นเคยจำกโลกแห่งคณิตศำสตร์ เชน บวก (+) กำรลบ (-) กำรคูณ (*) และกำรหำร (/) ่ Less-Than (<), Python ยังมีตวั ดำเนินกำรเปรียบเทียบ เชน Greater-Than (>), Less-Than-or-Equal(<=), Greater-Thanor-Equal (>=) และ Equality-Test (==). ตัวดำเนินกำรเหล่ำนี้ สร ้ำงค่ำ True หรือ False ตัวดำเนินกำรทั่วไปน ้อยกว่ำคือตัวดำเนินกำร Modulo (%) ซงึ่ จะ ให ้เศษทีเ่ หลือจำกกำรหำรจำนวนเต็ม 10 หำรด ้วย 3 ได ้ 9 เหลือ เศษ 1: 10 // 3 ให ้ 3 ในขณะที่ 10 % 3 ให ้ 1 6 อ ันตราย! ผู ป ้ ระกอบการโอเวอร ์โหลด! บันทึก! ตัวดำเนินกำรบำงตัวจะทำงำนในลักษณะทีแ ่ ตกต่ำงกัน ่ เมือ ขึน ้ อยูก ่ บ ั ว่ำตัวถูกดำเนินกำรคืออะไร ตัวอย่ำงเชน ่ คุณบวกเลข สองตัว คุณจะได ้ผลลัพธ์ทค ี่ ำดไว ้: 3 + 3 จะได ้ 6 แต่ถ ้ำคุณ "เพิม ่ " สองสตริงขึน ้ ไป ตัวดำเนินกำร + จะสร ้ำงสตริง ั ทีต เวอร์ชน ่ อ ่ กัน: "Hi" + "Jay" จะสร ้ำง "HiJay" กำรคูณสตริงด ้วยตัวเลขจะทำให ้สตริงซำ้ ! “Hi Jay” * 3 สร ้ำง “Hi JayHi JayHiJay” เครือ ่ งหมำย % ยังทำงำนแตกต่ำงกับสตริง: “ทดสอบ %f” % 34 สร ้ำง “ทดสอบ 34” 7 ประเภทข้อมู ล ใน Python ข ้อมูลทัง้ หมดมี "ประเภท" ของข ้อมูลทีเ่ กีย ่ วข ้อง ั คุณสำมำรถค ้นหำ "ประเภท" ของข ้อมูลสว่ นใดก็ได ้โดยใชฟั้ งก์ชน type() ดังนี้ พิมพ์ ( “สวัสดี!”) สร ้ำง <ประเภท 'str'> type( True ) สร ้ำง <type 'bool'> type( 5) สร ้ำง <type 'int'> type(5.0) สร ้ำง <type 'float'> โปรดทรำบว่ำ python รองรับตัวเลขสองประเภท ได ้แก่ Integers (int) และ Floating point numbers (float) ตัวเลขทศนิยมมีสว่ น ทีเ่ ป็ นเศษสว่ น (ตัวเลขหลังจุดทศนิยม) ในขณะทีจ ่ ำนวนเต็มไม่ม!ี 8 ผลกระทบของประเภทข้อมู ลต่อผลลัพธ ์ของผู ป ้ ฏิบต ั งิ าน ตัวดำเนินกำรทำงคณิตศำสตร์ทำงำนต่ำงกันบน Floats และ Ints: int + int สร ้ำง int int + float หรือ float + int สร ้ำง float นีเ่ ป็ นสงิ่ สำคัญอย่ำงยิง่ สำหรับกำรหำร เนือ ่ งจำกกำรหำรจำนวน เต็มให ้ผลลัพธ์ทแ ี่ ตกต่ำงจำกกำรหำรทศนิยม: 10 // 3 ผลิต 3 10 / 3 ผลิต 3.3333 10.0 / 3.0 ผลิต 3.3333333 ตัวดำเนินกำรอืน ่ ๆ ทำงำนต่ำงกันในประเภทข ้อมูลทีแ ่ ตกต่ำงกัน: + ื่ มสตริงเข ้ำด ้วยกัน (กำรบวก) จะบวกเลขสองตัว แต่เชอ 9 ประเภทข้อมู ลอย่างง่ ายใน Python ประเภทข ้อมูลอย่ำงง่ำยใน Python คือ: ตัวเลข int – จำนวนเต็ม: -5, 10, 77 ลอย – หมำยเลขจุดลอยตัว: 3.1457, 0.34 บูล – บูลน ี (จริงหรือเท็จ) ั ซอนกว่ ้ สตริงเป็ นประเภทข ้อมูลทีซ ่ บ ำ (เรียกว่ำ Sequences) ซงึ่ เรำจะพูดถึงในภำยหลัง ประกอบด ้วยตัวอักษรแต่ละตัว (สตริงทีม ่ ี ควำมยำว 1) 10 ประเภทการแปลง บำงครัง้ ข ้อมูลสำมำรถแปลงจำกประเภทหนึง่ ไปเป็ นอีกประเภท ่ สตริง “3.0” เทียบเท่ำกับเลขทศนิยม 3.0 ซงึ่ หนึง่ ได ้ ตวั อย่ำงเชน เทียบเท่ำกับเลขจำนวนเต็ม 3 ั่ ทีจ มีฟังก์ชน ่ ะรับข ้อมูลประเภทหนึง่ และสง่ คืนข ้อมูลในอีกประเภท หนึง่ ั นีจ int() - แปลงข ้อมูลทีเ่ ข ้ำกันได ้เป็ นจำนวนเต็ม ฟั งก์ชน ้ ะตัด ทอนตัวเลขทศนิยม float() - แปลงข ้อมูลทีเ่ ข ้ำกันได ้เป็ นทศนิยม str() - แปลงข ้อมูลทีเ่ ข ้ำกันได ้เป็ นสตริง ตัวอย่ำง: int(3.3) สร ้ำง 3 str(3.3) สร ้ำง "3.3" float(3) สร ้ำง 3.0 float("3.5") สร ้ำง 3.5 int(“7”) สร ้ำง 7 int("7.1") สง่ ข ้อผิดพลำด! float("Test") สง่ ข ้อผิดพลำด! 11 ตัวแปร ื่ ทีส ตัวแปรคือชอ ่ ำมำรถชไี้ ปทีข ่ ้อมูล มีประโยชน์สำหรับกำรบันทึกผลลัพธ์ระดับกลำงและจัดระเบียบ ข ้อมูล ตัวดำเนินกำรกำหนด (=) กำหนดข ้อมูลให ้กับตัวแปร ั สนระหว่ำงตัวดำเนินกำรกำหนด (เครือ อย่ำสบ ่ งหมำยเท่ำกับเดียว, =) กับตัวดำเนินกำรทดสอบควำมเท่ำเทียมกัน (เครือ ่ งหมำยเท่ำกับ คู,่ ==) ื่ ตัวแปรประกอบด ้วยตัวอักษร ตัวเลข และขีดล่ำง (_) และต ้อง ชอ ขึน ้ ต ้นด ้วยตัวอักษร 12 ตัวแปร เมือ ่ ตัวแปรได ้รับกำรประเมิน ตัวแปรจะสร ้ำงค่ำของข ้อมูลทีช ่ ไี้ ป ่ : ตัวอย่ำงเชน ตัวแปรของฉั น = 5 myVariable สร ้ำง 5 myVariable + 10 สร ้ำง 15 ื่ ตัวแปร) คุณต ้องกำหนดบำงอย่ำงให ้กับตัวแปร (เพือ ่ สร ้ำงชอ ก่อนทีค ่ ณ ุ จะพยำยำมใช ้ (ประเมิน) ตัวแปรนัน ้ 13 ตัวอย่างโปรแกรม ค ้นหำพืน ้ ทีข ่ องวงกลมทีก ่ ำหนดรัศมี: รัศมี = 10 ไพ = 3.14159 พืน ้ ที่ = pi * รัศมี * รัศมี พิมพ์ ( พืน ้ ที่ ) จะพิมพ์ 314.15 ไปทีห ่ น ้ำจอ 14 ่ ั Code Abstraction & Reuse ฟั งก ์ชน ่ คำนวณพืน หำกคุณต ้องกำรทำบำงสงิ่ (เชน ้ ทีว่ งกลม) หลำยๆ ครัง้ คุณสำมำรถสรุปโค ้ดภำยใน Function ได ้ ั คือลำดับชอ ื่ ของคำสงั่ ทีด ฟั งก์ชน ่ ำเนินกำรบำงอย่ำงทีม ่ ป ี ระโยชน์ ั อำจใชพำรำมิ ้ ฟั งก์ชน เตอร์หรือไม่ก็ได ้ และอำจสง่ คืนผลลัพธ์ หรือไม่ก็ได ้ ไวยำกรณ์: def NAME( รำยกำรพำรำมิเตอร์): STATEMENTS STATEMENTS 15 วิธใี ช้ฟังก ์ช ัน ั ทำงำนโดย "เรียก" ฟั งก์ชน ั ดังต่อไปนี:้ คุณสำมำรถทำให ้ฟั งก์ชน functionName(พำรำมิเตอร์). ั สง่ คืนให ้กับตัวแปร คุณสำมำรถเลือกกำหนดผลลัพธ์ใดๆ ทีฟ ่ ั งก์ชน ้ โดยใชโอเปอเรเตอร์ กำรกำหนด: returnResult = functionName(พำรำมิเตอร์) 16 ้ ่ าคัญ! การเยืองเป็ นสิงส ั ประกอบด ้วยสองสว่ นหลักคือสว่ นหัวและสว่ นเนือ ฟั งก์ชน ้ หำ ั ประกอบด ้วย: สว่ นหัวของฟั งก์ชน def funcName(param1,param2): คำหลัก def ื่ ฟั งก์ชน ั ชอ พำรำมิเตอร์ตงั ้ แต่ศน ู ย์ขน ึ้ ไป คัน ่ ด ้วยเครือ ่ งหมำยจุลภำค อยูภ ่ ำยใน วงเล็บ () เครือ ่ งหมำยจุดคู:่ ั ประกอบด ้วยคำสงั่ ทัง้ หมดในบล็อกทีต เนือ ้ หำของฟั งก์ชน ่ อ ่ จำก สว่ นหัวโดยตรง บล็อกประกอบด ้วยข ้อควำมทีอ ่ ยูใ่ นระดับกำรเยือ ้ งเดียวกัน 17 ่ ั findArea ตัวอย่างทีไร ่ ้เดียงสา ฟั งก ์ชน def findArea( ): รัศมี = 10 ไพ = 3.1459 พืน ้ ที่ = pi * รัศมี * รัศมี พิมพ์(พืน ้ ที)่ ั นีจ ฟั งก์ชน ้ ะคำนวณพืน ้ ทีข ่ องวงกลมทีม ่ รี ัศมี 10 เท่ำนัน ้ ! ั นีจ ฟั งก์ชน ้ ะพิมพ์พน ื้ ทีไ่ ปยังหน ้ำจอ แต่จะไม่สง่ คืนค่ำทีต ่ วั แปร พืน ้ ทีช ่ ไี้ ป 18 ฟั งก ์ช ัน findArea พร ้อมข้อผิดพลาดทางไวยากรณ์! def findArea( ): รัศมี = 10 ไพ = 3.1459 พืน ้ ที่ = pi * รัศมี * รัศมี พิมพ์(พืน ้ ที)่ คุณไม่สำมำรถผสมระดับกำรเยือ ้ งภำยในบล็อกเดียวกันได ้! รหัส ข ้ำงต ้นจะทำให ้เกิดข ้อผิดพลำดทำงไวยำกรณ์! 19 ้ เกิดอะไรขึนกับ findArea – การบังคับใช้ทจ ี่ ากัด def findArea( ): รัศมี = 10 ไพ = 3.1459 พืน ้ ที่ = pi * รัศมี * รัศมี พิมพ์(พืน ้ ที)่ ้ ้กับวงกลมขนำด 10 เท่ำนัน มันจะใชได ้ ! ั นีก เรำจำเป็ นต ้องทำให ้ฟั งก์ชน ้ ว ้ำงมำกขึน ้ ! ้ ขัน ้ ตอนที่ 1: ใชพำรำมิ เตอร์เพือ ่ ยอมรับรัศมีของวงกลมขนำดใดก็ ได ้! 20 ่ กว่า ฟั งก ์ช ัน findArea เป็ นตัวอย่างทีดี def findArea( รัศมี ): ไพ = 3.1459 พืน ้ ที่ = pi * รัศมี * รัศมี พิมพ์ (พืน ้ ที)่ ั่ นีจ ้ ้กับวงกลมทุกขนำด! ฟั งก์ชน ้ ะใชได ั นีจ ฟั งก์ชน ้ ะพิมพ์พน ื้ ทีไ่ ปยังหน ้ำจอ แต่จะไม่สง่ คืนค่ำทีต ่ วั แปร พืน ้ ทีช ่ ไี้ ป 21 ้ เกิดอะไรขึนกับ findArea findArea(10) พิมพ์ 314.59 ไปทีห ่ น ้ำจอ findArea(15) พิมพ์ 707.8275 ไปทีห ่ น ้ำจอ myArea = findArea(10) จะกำหนด "ไม่ม"ี ให ้กับตัวแปร ั เจน ฟั งก์ชน ั จะพิมพ์ myArea (เนือ ่ งจำกไม่มค ี ำสงั่ return ทีช ่ ด เฉพำะค่ำและไม่สง่ คืน) ั นีค เรำต ้องทำให ้ฟั งก์ชน ้ น ื ค่ำทีค ่ ำนวณได ้! ขัน ้ ตอนที่ 2: ใชค้ ำสงั่ return เพือ ่ สง่ คืนพืน ้ ทีท ่ ค ี่ ำนวณได ้! 22 ่ ทสุ ตัวอย่างฟั งก ์ช ัน findArea ทีดี ี่ ด def findArea( รัศมี ): ไพ = 3.1459 พืน ้ ที่ = pi * รัศมี * รัศมี พืน ้ ทีก ่ ลับ ั่ นีจ ้ ้กับวงกลมทุกขนำด! ฟั งก์ชน ้ ะใชได ั นีจ ฟั งก์ชน ้ ะสง่ คืนพืน ้ ทีท ่ พ ี่ บ แต่จะไม่พม ิ พ์ไปยังหน ้ำจอ ถ ้ำเรำ ต ้องกำรพิมพ์คำ่ ต ้องพิมพ์เอง: วงกลมพืน ้ ที่ = findArea(15) วงกลมพิมพ์พน ื้ ที่ หมำยเหตุกำรใชตั้ วแปร circleArea เพือ ่ เก็บผลลัพธ์ของกำร ั findArea เรียกใชฟั้ งก์ชน 23 ่ คาหลัก ชือ-ช่ องว่าง และขอบเขต ื่ ไม่เท่ำกันทัง้ หมด ใน Python ชอ ื่ บำงชอ ื่ ถูกสงวนไว ้โดยระบบและถูกกำหนดไว ้แล ้ว ชอ ่ : def, print, if, else, while, for, in, and, or, not, ตัวอย่ำงเชน ื่ เหล่ำนีส return ชอ ้ ร ้ำงขึน ้ ในคำหลัก ื่ ทีก ั เป็ น "ท ้องถิน ั นัน ชอ ่ ำหนดในฟั งก์ชน ่ " ของฟั งก์ชน ้ ื่ ทีก ั จะเป็ น "สว่ นกลำง" ของโมดูล ชอ ่ ำหนดนอกฟั งก์ชน ื่ โลคัลบดบังชอ ื่ โกลบอลเมือ ั ทีก ชอ ่ อยูใ่ นฟั งก์ชน ่ ำหนดไว ้ ั คุณ หำกคุณต ้องกำรเข ้ำถึงตัวแปรสว่ นกลำงจำกภำยในฟั งก์ชน ควรประกำศตัวแปรดังกล่ำวเป็ น “สว่ นกลำง” 24 ่ ่ ตัวอย่างทัวโลกเที ยบกับท้องถิน ตัวแปรของฉั น = 7 มำยพำรำม = 20 def func1 (myParam): ตัวแปรของฉั น = 20 พิมพ์ (myParam) ั่ 1(5) ฟั งก์ชน พิมพ์ (myVariable) อะไรจะพิมพ์? 5 และ 7 myVariable “local” ภำยใน func1 นัน ้ แยกจำก (และบดบัง) myVariable “สว่ นกลำง” ทีอ ่ ยูน ่ อก func1 myParam "local" ภำยใน func1 นัน ้ แตกต่ำงจำก myParam "สว่ นกลำง" ทีก ่ ำหนดไว ้ทีด ่ ้ำนบน 25 ตัวอย่าง Global vs Local – ตอนที่ 2 ตัวแปรของฉั น = 7 มำยพำรำม = 20 def func1 (myParam): myVariable สว่ นกลำง ตัวแปรของฉั น = 20 พิมพ์ (myParam) ั่ 1(5) ฟั งก์ชน พิมพ์ (myVariable) อะไรจะพิมพ์? 5 และ 20 myVariable “โลคัล” ภำยใน func1 แยกจำก myVariable “โก ลบอล” ภำยนอก func1 ั กำหนด 20 ให ้กับ myVariable “สว่ นกลำง” โดยเขียนทับ ฟั งก์ชน 7 ก่อนทีจ ่ ะพิมพ์ออกมำ 26 การตัดสินใจ - การควบคุมการไหลของโปรแกรม ิ ใจเกีย ในกำรสร ้ำงโปรแกรมทีน ่ ่ำสนใจ คุณต ้องสำมำรถตัดสน ่ วกับ ิ ใจเหล่ำนัน ข ้อมูลและดำเนินกำรต่ำงๆ ตำมกำรตัดสน ้ ได ้ คำสงั่ IF อนุญำตให ้คุณรันบล็อกโค ้ดแบบมีเงือ ่ นไข ไวยำกรณ์ของคำสงั่ IF เป็ นดังนี:้ ถ ้ำ boolean_expression : คำแถลง คำแถลง บล็อกเยือ ้ งของโค ้ดตำมหลังคำสงั่ if จะถูกดำเนินกำรหำกนิพจน์ บูลน ี เป็ นจริง มิฉะนัน ้ จะถูกข ้ำมไป 27 คาสัง่ IF - ตัวอย่าง จำนวนล ้อ = 3 ถ ้ำ (จำนวนล ้อ < 4): พิมพ์ (“คุณมีล ้อไม่พอ!”) พิมพ์ (“ฉั นให ้คุณ 4 ล ้อ!”) จำนวนล ้อ = 4 พิมพ์ (“คุณมี”, จำนวนล ้อ, “ล ้อ”) คำสงั่ พิมพ์ลำ่ สุดจะถูกดำเนินกำรไม่วำ่ จะเกิดอะไรขึน ้ คำสงั่ พิมพ์ สองรำยกำรแรกและกำรกำหนด 4 ให ้กับ numberOfWheels จะ ดำเนินกำรก็ตอ ่ เมือ ่ numberOfWheels น ้อยกว่ำ 4 28 ่ ถ้า/อืนๆ หำกคุณมีสองตัวเลือกพิเศษร่วมกัน และต ้องกำรรับประกันว่ำจะมี เพียงตัวเลือกเดียวเท่ำนัน ้ ทีจ ่ ะดำเนินกำร คุณสำมำรถใชค้ ำสงั่ IF/ELSE คำสงั่ ELSE เพิม ่ บล็อกทีส ่ องของโค ้ดทีด ่ ำเนินกำรหำก นิพจน์บล ู น ี เป็ นเท็จ ถ ้ำ boolean_expression : คำแถลง คำแถลง อืน ่ : คำแถลง คำแถลง 29 คาสัง่ IF/ELSE - ตัวอย่าง จำนวนล ้อ = 3 ถ ้ำ ( numberOfWheels < 3): พิมพ์ (“คุณคือมอเตอร์ไซค์!”) อืน ่ : พิมพ์ (“ คุณคือรถ!”) พิมพ์ (“คุณมี”, จำนวนล ้อ, “ล ้อ”) คำสงั่ พิมพ์ลำ่ สุดจะถูกดำเนินกำรไม่วำ่ จะเกิดอะไรขึน ้ ถ ้ำจำนวน ล ้อน ้อยกว่ำ 3 จะเรียกว่ำมอเตอร์ไซค์ มิฉะนัน ้ จะเรียกว่ำรถยนต์! 30 ่ IF/ELIF/อืนๆ หำกคุณมีตวั เลือกร่วมกันหลำยตัวเลือก และต ้องกำรรับประกันว่ำ จะมีเพียงตัวเลือกเดียวเท่ำนัน ้ ทีจ ่ ะดำเนินกำร คุณสำมำรถใชค้ ำสงั่ IF/ELIF/ELSE คำสงั่ ELIF เพิม ่ กำรทดสอบนิพจน์บล ู น ี อีกชุด หนึง่ และบล็อกโค ้ดอีกชุดหนึง่ ซงึ่ ดำเนินกำรหำกนิพจน์บล ู น ี เป็ น จริง ถ ้ำ boolean_expression : คำแถลง คำแถลง elif 2 nd_ boolean_expression ): คำแถลง คำแถลง อืน ่ : คำแถลง คำแถลง 31 คาสัง่ IF/ELSE - ตัวอย่าง จำนวนล ้อ = 3 ถ ้ำ ( numberOfWheels == 1): พิมพ์ (“ คุณคือ Unicycle!”) elif (จำนวนล ้อ == 2): พิมพ์ (“ คุณคือมอเตอร์ไซค์!”) elif (จำนวนล ้อ == 3): พิมพ์ (“ คุณคือสำมล ้อ!”) elif (จำนวนล ้อ == 4): พิมพ์ (“ คุณคือรถ!”) อืน ่ : พิมพ์("ล ้อเยอะมำก!") เฉพำะคำสงั่ พิมพ์จำกนิพจน์บล ู น ี จริงตัวแรกเท่ำนัน ้ ทีจ ่ ะดำเนินกำร 32 คาสัง่ IF/ELSE – ตัวอย่าง – ข้อผิดพลาดทางความหมาย! จำนวนล ้อ = 3 ถ ้ำ ( numberOfWheels == 1): พิมพ์ (“ คุณคือ Unicycle!”) elif (จำนวนล ้อ > 1 ): พิมพ์ (“ คุณคือมอเตอร์ไซค์!”) elif (จำนวนล ้อ > 2): พิมพ์ (“ คุณคือสำมล ้อ!”) elif (จำนวนล ้อ > 3): พิมพ์ (“ คุณคือรถ!”) อืน ่ : พิมพ์("ล ้อเยอะมำก!") เกิดอะไรขึน ้ กับกำรทดสอบโดยใชตั้ วดำเนินกำรมำกกว่ำ 33 ร ับข้อมู ลจากผู ใ้ ช้ โปรแกรมของคุณจะน่ำสนใจยิง่ ขึน ้ หำกเรำได ้รับข ้อมูลจำกผู ้ใช ้ ้ แต่ระวัง! ผู ้ใชอำจไม่ ได ้ให ้ข ้อมูลทีค ่ ณ ุ ต ้องกำรหรือคำดหวังเสมอ ไป! ั ทีม ฟั งก์ชน ่ ป ี ระโยชน์ในกำรรับข ้อมูลจำกผู ้ใชคื้ อ: input(<prompt string>) - สง่ คืนสตริงเสมอ คุณต ้องแปลงสตริงเป็ น float/int หำกคุณต ้องกำรคำนวณด ้วย! 34 ่ นไปได้จากฟั งก ์ช ันการ ตัวอย่างการป้ อนข้อมู ล – ข้อผิดพลาดทีเป็ ป้ อนข้อมู ล () ื่ อะไร") userName = input("คุณชอ userAge = int( อินพุต("คุณอำยุเท่ำไหร่") ) ปี เกิด = 2550 - อำยุผู ้ใช ้ พิมพ์(“ยินดีทไี่ ด ้รู ้จัก” + userName) พิมพ์ (“คุณเกิดใน: “, ปี เกิด) ้ อนอะไรก็ตำม input() จะให ้สตริงแก่เรำ ไม่วำ่ ผู ้ใชจะป้ ิ " ตำมอำยุแทนทีจ แต่จะเกิดอะไรขึน ้ หำกผู ้ใชป้้ อน "สบ ่ ะเป็ น 10 35 ่ นไปได้จากฟั งก ์ช ันการ ตัวอย่างการป้ อนข้อมู ล – ข้อผิดพลาดทีเป็ ป้ อนข้อมู ล () ื่ อะไร") userName = raw_input("คุณชอ userAge = input (“คุณอำยุเท่ำไหร่”) พยำยำม: userAge Int = int (อำยุผู ้ใช)้ ยกเว ้น: userAge Int = 0 ปี เกิด = 2010 - userAge Int พิมพ์(“ยินดีทไี่ ด ้รู ้จัก” + userName) ถ ้ำ userAge Int != 0: พิมพ์("คุณเกิดใน:", เกิดปี ) ข ้อควำมลอง/ยกเว ้นจะปกป้ องเรำหำกผู ้ใชป้้ อนข ้อมูลอืน ่ ทีไ่ ม่ใช ่ ั int() ไม่สำมำรถแปลงสตริงใดๆ ทีผ ตัวเลข ถ ้ำฟั งก์ชน ่ ู ้ใชป้้ อน ประโยคยกเว ้นจะตัง้ ค่ำตัวแปร userIntAge เป็ นศูนย์ 36 ้ ประโยชน์! ทาซามี บำงครัง้ คุณต ้องกำรทำสงิ่ เดียวกันหลำยๆครัง้ หรือทำอะไรทีค ่ ล ้ำยกันหลำยๆครัง้ ่ นีค วิธห ี นึง่ ในกำรทำเชน ้ อ ื กำรทำซำ้ : พิมพ์ 1 พิมพ์ 2 พิมพ์ 3 พิมพ์ 4 พิมพ์ 5 พิมพ์ 6 พิมพ์ 7 พิมพ์ 8 พิมพ์ 9 พิมพ์ 10 37 ้ ปแบบทีดี ่ กว่าของการทาซา้ การวนซารู กำรทำซำ้ เป็ นเรือ ่ งปกติสำหรับจำนวนน ้อยๆ แต่เมือ ่ คุณต ้องทำ ้ บำงสงิ่ หลำยๆ ครัง้ กำรพิมพ์คำสงั่ เหล่ำนัน ้ ทัง้ หมดใชเวลำนำน มำก เรำสำมำรถใชลู้ ปเพือ ่ ให ้คอมพิวเตอร์ทำงำนแทนเรำได ้ ลูปประเภทหนึง่ คือลูป "ในขณะที"่ ลูป while ทำซำ้ บล็อกของโค ้ด จนกว่ำนิพจน์บล ู น ี จะไม่เป็ นจริงอีกต่อไป ไวยำกรณ์: ในขณะทีน ่ พ ิ จน์บล ู น ี : คำแถลง คำแถลง คำแถลง 38 ้ วิธห ี ยุดการวนซา! มันง่ำยมำกทีจ ่ ะวนซำ้ ตลอดไป: ในขณะทีท ่ รู : พิมพ์ (“อีกครัง้ และอีกครัง้ และอีกครัง้ ”) สว่ นทีย ่ ำกคือกำรหยุดลูป! ่ นัน สองวิธใี นกำรทำเชน ้ คือกำรใชตั้ วนับลูปหรือกำรทดสอบกำร ิ้ สุด สน ตัวนับลูปคือตัวแปรทีต ่ ด ิ ตำมจำนวนครัง้ ทีค ่ ณ ุ ผ่ำนลูป และนิพจน์ บูลน ี ได ้รับกำรออกแบบให ้หยุดกำรวนซ้ำเมือ ่ ถึงจำนวนครัง้ ทีร่ ะบุ ลำ ก่อน ิ้ สุดจะตรวจสอบเงือ กำรทดสอบกำรสน ่ นไขเฉพำะ และเมือ ่ เกิดขึน ้ ิ้ สุดกำรวนซ้ำ (แต่ไม่รับประกันว่ำลูปจะจบ). จะสน 39 ตัวนับลู ป ครัง้ ผ่ำนลูป = 0 ในขณะที่ (timesThroughLoop < 10): พิมพ์(“นีค ่ อ ื เวลำ”, timesThroughLoop, “อยูใ่ นวง”) ครัง้ ผ่ำนลูป = ครัง้ ผ่ำนลูป + 1 แจ ้งให ้ทรำบว่ำเรำ: เริม ่ ต ้นตัวนับลูป (เป็ นศูนย์) ทดสอบตัวนับกำรวนซ้ำในนิพจน์บล ู น ี (มีคำ่ น ้อยกว่ำ 10 หรือไม่ ถ ้ำ ใช ่ ให ้วนซ้ำต่อไป) เพิม ่ ตัวนับลูป (เพิม ่ หนึง่ เข ้ำไป) ทุกครัง้ ทีเ่ รำผ่ำนลูป หำกเรำพลำดหนึง่ ในสำม ลูปจะไม่มวี น ั หยุด! 40 ้ ด ตัวอย่างลู ป while พร ้อมการทดสอบการสินสุ ื่ ผู ้ใชเรื ้ อ ้ ถำมชอ ่ ยๆ จนกว่ำผู ้ใชจะพิ มพ์ "ออก" ก ้ำวต่อไป = จริง ในขณะที่ ( ดำเนินต่อไป): ่ อ ื่ ของคุณ! (หรือออกเพือ userName = input(“ใสช ่ ออก)” ). ื่ ผู ้ใช ้ == “ออก”: ถ ้ำชอ KeepGoing = เท็จ อืน ่ : พิมพ์(“ยินดีทไี่ ด ้รู ้จัก” + userName) พิมพ์ (“ลำก่อน!”) 41 ตอนจบ! ถัดไป – Python Review 2 – ประเภทข ้อมูลผสมและเทคนิคกำร เขียนโปรแกรม.. 42