Uploaded by Paijit Kochakornjarupong

5-1.th

advertisement
รีววิ หลาม 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
Download