บทที่ 1 ทำควำมรู้จักกับภำษำ...

293
บทที1 ทำควำมรู ้จักกับภำษำ Python ภำษำไพทอน (Python programming language) ภาษาไพทอน (Python programming language) เป็นภาษาโปรแกรมภาษา ระดับสูงแบบอินเทอร์พรีเตอร์ ( Interperter) ที่สร้างโดย กีโด ฟาน รอสซัม ( Guido van Rossum) ในปีพ.ศ. 2533 ปัจจุบันดูแลโดย มูลนิธิซอฟต์แวร์ไพทอน ( Python Software Foundation (PSF)) ซึ ่งภาษาไพทอนสามารถใช้งานได้บนระบบปฏิบัติการไม่ว่าจะเป็น Unix, Linux, Windows NT, Windows 2000, Windows 95/98/MEXP หรือ OS/X โดย Version ล่าสุดของ Python ตอนนี ้คือ 3.6.5 จุดเด่นของภำษำไพทอน ไพทอนเป็นภาษาสคริปต์ ทาให้ใช้เวลาในการเขียนและคอมไพล์ไม่มาก ทาให้ เหมาะกับงานด้านการดูแลระบบ (System administration) เป็นอย่างยิ่ง ได้มีการ สนับสนุนภาษาไพทอนโดยเป็นส่วนหนึ ่งของระบบปฏิบัติการยูนิกซ์ , ลินุกซ์ และ สามารถติดตั ้งให้ทางานเป็นภาษาสคริปต์ของวินโดวส์ ผ่านระบบ Windows Script Host ได้อีกด้วย และ Python เองก็ได้ถูกนามาพัฒนา Web application อย่างแพร่หลาย ซึ ่งมี Framework สาหรับทาเว็บของ Python ที่ได้รับความนิยมอย่างมากคือ Django ไวยำกรณ์อ่ำนง่ำย ภาษาไพทอนจะคล้ายกับภาษา C มาก โดยจะมีโครงสร้างที่ไม่ซับซ้อน มี ไวยากรณ์ที่ได้กาจัดการใช้สัญลักษณ์ที่ใช้ในการแบ่งบล็อกของโปรแกรม และใช้การ ย่อหน้าแทน ทาให้สามารถอ่านโปรแกรมที่เขียนได้ง่าย นอกจากนั ้นยังมีการสนับสนุน การเขียน docstring ซึ ่งเป็นข้อความสั ้นๆ ที่ใช้อธิบายการทางานของฟังก์ชัน, คลาส, และโมดูลอีกด้วย

Transcript of บทที่ 1 ทำควำมรู้จักกับภำษำ...

Page 1: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 1 ท ำควำมรจกกบภำษำ Python ภำษำไพทอน (Python programming language) ภาษาไพทอน (Python programming language) เปนภาษาโปรแกรมภาษาระดบสงแบบอนเทอรพรเตอร (Interperter) ทสรางโดย กโด ฟาน รอสซม (Guido van Rossum) ในปพ.ศ. 2533 ปจจบนดแลโดย มลนธซอฟตแวรไพทอน ( Python Software Foundation (PSF)) ซงภาษาไพทอนสามารถใชงานไดบนระบบปฏบตการไมวาจะเปน Unix, Linux, Windows NT, Windows 2000, Windows 95/98/MEXP หรอ OS/X โดย Version ลาสดของ Python ตอนนคอ 3.6.5 จดเดนของภำษำไพทอน ไพทอนเปนภาษาสครปต ท าใหใชเวลาในการเขยนและคอมไพลไมมาก ท าใหเหมาะกบงานดานการดแลระบบ (System administration) เปนอยางยง ไดมการสนบสนนภาษาไพทอนโดยเปนสวนหนงของระบบปฏบตการยนกซ, ลนกซ และสามารถตดตงใหท างานเปนภาษาสครปตของวนโดวส ผานระบบ Windows Script Host ไดอกดวย และ Python เองกไดถกน ามาพฒนา Web application อยางแพรหลาย ซงม Framework ส าหรบท าเวบของ Python ทไดรบความนยมอยางมากคอ Django ไวยำกรณอำนงำย ภาษาไพทอนจะคลายกบภาษา C มาก โดยจะมโครงสรางทไมซบซอน มไวยากรณทไดก าจดการใชสญลกษณทใชในการแบงบลอกของโปรแกรม และใชการยอหนาแทน ท าใหสามารถอานโปรแกรมทเขยนไดงาย นอกจากนนยงมการสนบสนนการเขยน docstring ซงเปนขอความสนๆ ทใชอธบายการท างานของฟงกชน, คลาส, และโมดลอกดวย

Page 2: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ควำมเปนภำษำกำว ไพทอนเปนภาษากาว (Glue Language) ไดอยางดเนองจากสามารถเรยกใชภาษาโปรแกรมอนๆ ไดหลายภาษา ท าใหเหมาะทจะใชเขยนเพอประสานงานโปรแกรมทเขยนในภาษาตางกนได ไลบรำรในไพทอน การเขยนโปรแกรมในภาษาไพทอนโดยใชไลบรารตาง ๆ เปนการลดภาระของโปรแกรมเมอรไดเปนอยางด ท าใหโปรแกรมเมอรไมตองเสยเวลากบการเขยนค าสงทซ าๆ เชนการแสดงผลขอมลออกสหนาจอ หรอการรบคาตาง ๆ ไพทอนมชดไลบรารมาตรฐานมาใหตงแตตดตงอนเตอรพรเตอร นอกจากนนยงมผพฒนาจากทวโลกด าเนนการพฒนาไลบรารซงชวยอ านวยความสะดวกในดานตาง ๆ โดยจะเผยแพรในรปแบบของแพคเกจตาง ๆ ซงสามารถตดตงเพมเตมไดอกดวย สดทายคอ ภาษาไพทอน ท างานเรวทสดเมอเทยบกบภาษา script ดวยกน เชน php, jsp, asp จะพดวา ไพทอน เขยนนอยไดงานมาก ท างานเรวกไมผดนก

Page 3: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 2 โครงสรางและลกษณะการเขยนโปรแกรม ภาษา python จดเปนภาษาทอยในระดบสงเทยบกบภาษา Visual Basic บางกรณทตองการใชงาน

เชงลกในระดบ Kernel ของระบบปฏบตการ การเรยกใชพอรตฮารดแวรตางๆ การจดการระดบหนวยความจ า การเขยนโปรแกรมระบบเครอขายเชงลก ตามทกลาวไวบางสวน ภาษา python ไมมความสามารถเขาไปจดการไดเลย ตองอาศยภาษาอนๆ ทมความสามารถในการเขยนโปรแกรมเชงลก เชน C, C + +, Java ฯลฯ สรางเปนโมดลพเศษไวเชอมตอกบ python ทจะเรยกใชในลกษณะเปนฟงกชนยอยภายในของโมดลพเศษเหลานนอกท ค าสงทเราใชในการอางองโมดลมาตรฐาน หรอโมดลเพมเตมพเศษใน python ประกอบดวย 2 ค าสงดงน 1. ค าสง import 2. ค าสง from

ค าสง import

ตวอยางท 1 การเขยนค าสงอางองโมดลท 1

ตวอยางท 2 การเขยนค าสงอางองโมดลมากกวา 1 โมดล

ตวอยางท 3 การเขยนค าสงอางองโมดลมากกวา 1 โมดล แบบใชค าสง import 1ค าสง

ค าสง import จะเปนการอางองโมดลทเราตองการใชกลมค าสงขางในโมดล การอางองโมดลแบบน Python จะมองเหนกลมค าสงทงหมดในโมดล และพรอมน าไปใชงานไดตลอดเวลา แตบางครงหากเราตองการอางองโมดล และอยากจะเลอกใชเฉพาะค าสง หรอกลมค าสงภายในบางค าสง กตองใชค าสง from ทจะกลาวถงในหวขอตอไป

Import datetime

Import datetime

Import decimal

Import os

Import datetime, decimal, os

Page 4: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ค าสง from

ตวอยางท 1 รปแบบการเขยนค าสง from เพออางองโมดล และกลมค าสงทงหมด

from ชอโมดล import ค าสงหรอกลมค าสง

สญลกษณ * ใชส าหรบเรยกใชงานทกค าสง หรอกลมค าสงในโมดลน

ตวอยางท 2 รปแบบการเขยนค าสง from ส าหรบเรยกใชบางค าสง หรอกลมค าสงในโมดลท

ก าลงอางองในปจจบน

from ชอโมดล import กลมค าสงท 1, กลมค าสงท 2

การเขยนโปรแกรมโดยทวไปดวยภาษา python จะมรปแบบเปนการเขยนกลมค าสงลงในโพรซเจอรหรอฟงกชน แลวท าการเรยกใชงานตามตองการ เหมอนหลกการเขยนโปรแกรมดวยภาษาอนๆ เชน C, C + +, Java ฯลฯ เพองายตอการท าความเขาใจถงวธการเขยนโปรแกรม python ดวย editor พอสรปไดเปน 5 วธดงตอไปน

1. รปแบบการเขยนดวยวธท 1 2. รปแบบการเขยนดวยวธท 2 3. รปแบบการเขยนดวยวธท 3 : แบบ Object Oriented 4. รปแบบการเขยนดวยวธท 4 : แบบสราง Object Oriented พรอมกลมค าสงเรยกใชงาน Object 5. รปแบบการเขยนดวยวธท 5 : แบบ Object Oriented ทเกดจากวธท 3 และ 4 มาประยกตใชงานรวมกน

From os import *

From os import error, chdir, getcwd

Page 5: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบการเขยนดวยวธท 1

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

รปแบบการเขยนดวยวธท 2

ล าดบการ

ทดสอบค าสง

จะท าจาก

บรรทดแรก

ไปจนจบ

ค าสง 1

ค าสง 2

ค าสง 3

ค าสง 4

ค าสง 5

1

2

3

4

5

Python Editor

รปท 2.3 แสดงการเขยนโปรแกรมภาษา

python ดวยค าสงตางๆ โดยไมไดใช

โพรซเจอรหรอฟงกชนของ python

Python Editor

โพรซเจอรท 1

โพรซเจอรท 2

โพรซเจอรท 1

โพรซเจอรท 2

ค าสงท 3

ค าสงท 4

ค าสงภายใน 1

ค าสงภายใน 2

ค าสงภายใน 1

ค าสงภายใน 2

สวน A

จดเรมตน

ของค าสง

สวน B รปท 2.4 แสดงการเขยนโปรแกรม

python ดวยการสรางโพรซเจอรรวมกบ

การใชค าสงปกต

Page 6: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตามรปท 2.4 เปนรปแบบการเขยนโปรแกรมทนยมใชกน เนองจากกลมค าสงบางกลมจ าเปนตอง

ท างานรวมกนตามล าดบขนตอน เรากน ากลมค าสงเหลานนไปจดสรางไวในโพรซเจอรหรอฟงกชน ซง

เพอความงายในการจดสรางโพรซเจอรหรอฟงกชน ควรจะสรางไวในฐานะ A ตามรปท 2.4 สวนการ

เรยกใชงานโพรซเจอร กใหไปเขยนในสวน B ( ตามรปท 2.4) วธการเขยนตามรปแบบนจะดกบผเขยน

โปรแกรมในระยะยาว ยกตวอยาง ถาผพฒนาไดสรางโปรแกรมขนมาสกโปรแกรมหนง หลงจากสราง

เสรจผานไปสก 1 ป แลวตองกลบมาแกไขเพมเตมในโปรแกรม ถาจดรปแบบการเขยนไวด เรากจะหาจด

ทตองแกไข หรอเพมเตมใหรวดเรว

รปแบบการเขยนดวยวธท 3 : แบบ Object Oriented

ตามรปท 2.5 เปนวธการเขยนโปรแกรมเชงวตถตามรปแบบของ python ซงเปนวธการสราง

Object ขนมาเพอรอใหมการน าไปใชงาน ดงนนจะเหนวาภายใตโครงสรางแบบนจะไมมสวนส าหรบ

เรยกทดสอบโปรแกรม

Class Barcode

Python Editor

Property ท 1

Method ท 1

Method ท 2

รปท 2.5 แสดงการเขยนโปรแกรมเชงวตถ(OO)

เพอสราง Object ดวยภาษา python

Page 7: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบการเขยนดวยวธท 4 : แบบ Object Oriented พรอมกลมค าสงเรยกใชงาน Object

ในรปท 2.6 กจะคลายการเขยนโปรแกรมตามรปแบบท 3 เพยงแคเพมกลมค าสงในสวน B ( ตาม

รปท 2.6) ส าหรบเรยกใชสวนA ทเปนการสราง Class Object มาใชงานภายใตโครงสรางเดยวกนเลย

รปท 2.6 แสดงวธการเขยนโปรแกรมแบบ Object Oriented รวมกบกลมค าสงทเรยกใชงาน

Object ภายใตโครงสรางเดยวกน

Python Editor

Class Barcode

ค าสงท 1

ค าสงท 2

ค าสงเกยวกบ Barcode

ค าสงท 3

สวน A

จดเรมตน

การทดสอบ

สวน B

Property ท 1

Method ท 1

Method ท 2

Page 8: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบการเขยนดวยวธท 5 : แบบ Object Oriented ทเกดจากวธท 3 และ 4 มา

ประยกตใชงานรวมกน

ในรปท 2.7 กเปนอกวธทนยมใชงานเชงประยกต ส าหรบการเขยนโปรแกรมเชงวตถของ

python โดยบางกรณกมการสราง Class object จดเกบไปเฉพาะ เมอไรทตองการน ามาใชงานกจะท าการ

Import เขามาใชรวมกบโปรแกรมทก าลงพฒนาในปจจบน

รปท 2.7 แสดงการเขยนโปรแกรมเชงวตถโดยการเรยกใชโมดลทเปน Class object จากภายนอก

มาใชงานเพมเตมรวมกบชดค าสงปจจบน

ดวยลกษณะวธการเขยนโปรแกรมทง 4 วธ ทกลาวไปขางตนส าหรบภาษา python จะท าการ

จดเกบกลมค าสง หรอ (source Code) ในรปแบบไฟลทใชนามสกล .py ซงจะเปนไฟลแบบ

ขอความ (text file) หรออาจแปลงใหเปนรปแบบไฟลไบนาร โดยจะใชนามสกลเปน.pyc

Class Barcode

Import

Class Print Bar

ค าสงท 1

ค าสงอาง Barcode

ค าสงอาง Print Bar

ค าสงท 2

Python Editor

สวน A

สวน B

สวน C

จดเรมตน

ใชงาน ชดค าสงปจจบน

ไฟล .py เปนไฟล source Code แบบ ขอความ

ไฟล .pyc เปนไฟล source Code แบบ ไบนาร

Page 9: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ส าหรบการเขยนซอรสโคดดวย editor ของ python เพอใหงายตอการเขยนโปรแกรม หรอการ

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

หลงจากปดงานเขยนโปรแกรมไปแลว ผเขยนไดแบงโครงสรางการเขยน source Code ของ

python ออกเปน 4 สวน ดงรปท 2.8 ซงประกอบดวย

รปท 2.8 แสดงการแบงพนทส าหรบการใชตวแปร, ฟงกชน และค าสงภายใตโครงสรางของ

โมดลทก าลงพฒนาน

สวน A กรณทตองการอางองกลมค าสงอนๆ จากโมดลมาตรฐานของ python หรอโมดลเพมเตมพเศษ เพอน ามาใชงานในการเขยนโปรแกรมในโมดลน เราจะใชค าสงส าหรบอางองโมดล คอ ค าสง Import และค าสง from...Import สวน B ใชในกรณทตองการสรางตวแปรทสามารถเรยกใชงานไดในสวน C ทเกยวกบโพรซเจอรหรอฟงกชน และสวนD ซงเปนจดทกลมค าสงท างาน

สวน C มไวส าหรบท าการสรางกลมโพรซเจอรหรอฟงกชน เพอใหสามารถเรยกใชงานภายในโมดลน

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

ส าหรบการอางองโมดลทงหลายทใชงานใน python Import datetime, os

from datetime import date

Id = 100

dbpath = ‘data.txt’

Def showreport() :

print(‘No.’)

cost = 100 * 0.07

Print(‘Start Program’)

Id = id + 1 showreport()

สวน A

สวน B

สวน C

สวน D

กลมตวแปรทใชใน python ประกาศไวทน ถาหาก

จะใชทกทในsource Code น

ในสวนนเหมาะส าหรบสรางโพรซเจอรหรอ

ฟงกชนทจะใชงานในโมดลน

จดเรมตนของกลมค าสงทท างานในโมดลน

Page 10: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

หลงจากท าความเขาใจโครงสรางของการสรางและเขยน source Code ของ python กเหลอสงท

ควรรกอนลงมอเขยนโปรแกรม python อกไมกเรอง เชน การก าหนดค าสงกลมยอยใหกบค าสงหลก

(Indenting), การท าความเขาใจการใชเครองหมาย ‘ หรอ “ ส าหรบตวแปรชนดขอความ (String), การใช

เครองหมาย () [] {} รวมกบตวแปรหรอฟงกชนภายในของ python ( ฟงกชนภายใน ไดแก ค าสง format,

tolower, ฯลฯ) และวธการทดสอบโปรแกรมภายใต editor ของ python กจะท าใหผทตองการศกษา

สามารถทดสอบเขยนโปรแกรมและทดสอบเองได เมอเขยนโปรแกรมคลองขน กสามารถคนหาตวอยาง

source Code ทมความหลากหลาย รวมทงเทคนคการเขยนโปรแกรมแบบพเศษจะ internet มาทดลอง และ

ประยกตเขากบงานทก าลงศกษา หรอสรางเพอน าไปใชงาน

การก าหนดค าสงกลมยอยใหกบค าสงหลก (Indenting)

วธการจดรปแบบโครงสรางของกลมค าสงยอย ภายใตค าสงหลกภาษา python จะอาศยการจดยอ

หนาแทนการใชสญลกษณเหมอนภาษาอน ตามรปท 2.9 แสดงการจดรปแบบโครงสรางของกลมค าสง

ยอยของ python เทยบกบภาษา C

รปท 2.9 แสดงการเปรยบเทยบการจดรปแบบโครงสรางกลมค าสงยอยของภาษา python

ค าสงหลก

for (a = 1; a > 10; ++a)

{

print(a); ค าสงยอย

testdata(); ภายใต for

}

ค าสงหลก

for a in range(1, 10) : print(a); ค าสงยอย

testdata(); ภายใต for

ตองก าหนดยอหนาใหเทากนมฉะนน

python จะเกด Indent Error ไม

สามารถรนทดสอบโปรแกรมได

การจดรปแบบโครงสรางกลมค าสงยอยของ

ภาษา C ใชสญลกษณ{} ส าหรบก าหนดจดเรมตน

ของค าสงยอย และก าหนดจดสนสดภายใตค าสง

หลก for

การจดรปแบบโครงสราง

กลมค าสงยอยของ python โดย

อาศยการจดยอหนาแทนสญลกษณ

Page 11: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

โดยตวอยางตามรปท 2.9 จะเปนการใชค าสง for ซงถอวาเปนค าสงหลก และมค าสงยอยเพอให

เกดกระบวนการท างานตามรอบการวนลป คอค าสง print และค าสงท 2 คอเรยกไปทฟงกชน Test Data

ในโมดลใชงาน จะเหนวาการเขยนค าสงยอยของ python จะไมมการใชสญลกษณใดๆ เปนตวบอกการ

เปนค าสงยอย เมอเทยบกบภาษาC ทใชสญลกษณ{ เปนจดเรมตนและใชสญลกษณ} ส าหรบบอก

จดสนสด ภาษา python จะใชการยอหนา ดวยวธการกดปม Space Bar หรอกดป ม Tab กแลวแตผเขยน

โปรแกรมจะถนดแบบใด (แนะน าการยอหนาของค าสงยอย ควรใชปม Tab ดกวา โอกาสเกดขอผดพลาด

จากยอนาจะนอยลง) ถาหากผศกษาเจอขอความ error ตามรปท 2.10 กแสดงวาการยอหนาของค าสงม

ปญหา ซงสวนใหญจะเกดจากการยอหนาไมเทากน

สรป การใชยอหนาเพอแบงค าสงยอย จะใชกบกลมค าสงเชน if, for, while, def (ส าหรบสราง

ฟงกชนเพอเรยกใชงานในโมดลน), Class ( ส าหรบสรางโครงภายในเปนวตถ เชน Property, Method

ฯลฯ) เปนตน

รปท 2.10 แสดงขอความผดพลาดเกยวกบการก าหนดยอหนาหรอ Indent ผดพลาดในการเขยน

โปรแกรม

การท าความเขาใจการใชเครองหมาย ‘ หรอ “ ส าหรบขอความหรอตวแปรชนดขอความ

ใชสญลกษณรวมกบกลมขอความในภาษา python มใหเลอก 2 แบบ คอ การใชสญลกษณฝนทอง

หรอ ‘ (Single Quote) และสญลกษณ ? หรอ “ (Double Quote) โดยผเขยนโปรแกรมสามารถเลอกใชสญลกษณดงกลาวตามความถนด ส าหรบวธการใชงานทง 2 สญลกษณจะแบงออกเปน 2 วธดงน

1. วธใชงานสญลกษณรวมกบขอความแบบบรรทดเดยว (In-Line)

a = 'This is my book.'

b = "วนนอยากทบกระปอง"

2. การใชงานสญลกษณรวมกบขอความแบบหลายบรรทด เมอใชสญลกษณก าหนดจดเรมตน

และจดสนสดของขอความ ใหพมพสญลกษณอยางละ 3 เครองหมาย ตามตวอยางตอไปน

SyntaxError : expected

an indented block

Page 12: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

a = '''This is my book.

The cover is Yellow color.

Book owner write something.'''

b = """ปเปออกเดนทางไปเมองทแสนไกล

ไกล แลวไกลออกไปเรอยๆ จนในทสด

ปเปก... รออานตอฉบบถดไป """

การใชเครองหมาย (), [], {} รวมกบตวแปรหรอฟงกชน

python จะใชเครองหมาย (), [], {} ส าหรบการเขยนผสมผสานรวมกบตวแปร, ค าสง, ฟงกชน

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

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

การใชงานไว 4 ประเภทดงน

1. ประเภทการใชเครองหมายรวมกบตวแปร

2. ประเภทการใชเครองหมายรวมกบโพรซเจอรหรอฟงกชน

3. ประเภทการใชเครองหมายรวมกบค าสงหรอฟงกชนภายใน

4. ประเภทการใชเครองหมายทท าหนาทเสมอนเปนฟงชนภายในแบบอตโนมต

ประเภทการใชเครองหมายรวมกบตวแปร

โดยสวนใหญถามการใชเครองหมายรวมกบตวแปร ลกษณะของตวแปรเหลานนจะเปนประเภท

Sequence (ขายตวแปรอารเรยในภาษาอน) ดงตวอยางตอไปน

a = (1, 2, 3, 4)

b = ['TV ', 'หลอดไฟ ', 'ปลาท ']

c = {100: 'TV ', 200: 'หลอดไฟ ', 300: 'ปลาท '}

จากตวอยางเปนการก าหนดคาตางๆ ลงในตวแปรประเภท Sequence ซงประกอบดวย 3 ชนด

ไดแก Tuple จะใชเครองหมาย (), List จะใชเครองหมาย [] และDictionary จะใชเครองหมาย {} ตวอยาง

ตอไปนเปนการใชเครองหมาย [] ส าหรบการอานคาในตวแปรประเภท Sequence

ตวอยาง print(a[2], b[1], c[300])

ผลลพธ >>>3 หลอดไฟ ปลาท

Page 13: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ประเภทการใชเครองหมายรวมกบโพรซเจอรหรอฟงกชน

ในการสรางโพรซเจอรหรอฟงกชนในโมดล จะมการก ากบดวยเครองหมาย () หลงชอโพรซเจอร

หรอฟงกชนทสรางขนมา ดวยจะถกน าไปใชส าหรบการผานคาอารกวเมนต (Argument) ของโพรซเจอร

หรอฟงกชน ตามตวอยางดงตอไปน

ตวอยางท 1 แสดงการสรางโพรซเจอรหรอฟงกชนโดยไมมตวแปรอารกวเมนต

def showtime (): การสรางฟงกชน Showtime ตองมเครองหมาย () เสมอ

ตวอยางท 2 แสดงการสรางโพรซเจอรหรอฟงกชนพรอมกบตวแปรอารกวเมนต

def bookinfo(title, author) :

a = 100

b = a + 10

print(title, a) print(b, author)

นอกจากนจะใชเครองหมาย () ส าหรบใชรวมกบการสรางโพรซเจอรหรอฟงกชนแลว การเรยก

โพรซเจอรหรอฟงกชนเพอใชงานกจ าเปนตองมเครองหมาย () ตอทายชอขณะใชงาน ตามตวอยาง

ดงตอไปน

ตวอยางท 1 วธการเขยนโปรแกรมเรยกใชงานโพรซเจอรหรอฟงกชนโดยไมมคาอารกวเมนต

Showtime () ตองมเครองหมาย () เสมอ

ตวอยางท 2 วธการเขยนโปรแกรมเรยกใชงานฟงกชนพรอมสงผานคาอารกวเมนตใหกบฟงชน

Bookinfo('หนงสอชนจง ' , 'ชโนก ')

a = 100

b = a + 10

print(a, b)

กลมค าสงภายใน

ก าหนดตวแปรอารกวเมนตภายในเครองหมาย () ของชอฟงกชนน

Page 14: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ประเภทการใชเครองหมายรวมกบค าสงหรอฟงกชนภายใน

รปแบบของค าสงหรอฟงกชนภายในภาษา python วธการเขยนค าสงบางครงจะมการใช

เครองหมาย (), {} รวมกบคาตางๆ ทใชในค าสงนนตามตวอยางตอไปน

ตวอยางการใชเครองหมาย () รบค าสง print + คาทตองการแสดงบนจอภาพ print ('ปลาท 2 เขง ')

ตวอยางการใชเครองหมาย () กบค าสง tolower + คาทตองการแปลงจากอกษรตวใหญไปอกษร

ตวเลก

a = tolower ('COUNT ')

ตวอยางการใชเครองหมาย {} กบค าสง format + คาทตองการจดรปแบบการแสดงคาตวเลข

Print()'{0} to {1} '.Format(100, 'TV '))

ประเภทการใชเครองหมายทท าหนาทเสมอนเปนฟงชนภายในแบบอตโนมต

python เปนภาษาทไดรบการปรบปรงใหการเรยกใชฟงกชนภายในทใชงานบอยๆ งายมากขน

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

ตวอยางแสดงการใชเครองหมาย [] ทท าหนาทแทนฟงกชนภายในรวมกบตวแปร โดยการใช

เครองหมาย [] ตอทายตวแปรเสมอการเรยกใชฟงกชนภายในทท าหนาทตดคา (เหมอน Sub String ในภาษาอน)

ก าหนดคาตวแปร a = 'This is my book ' print(a[1]) ผลลพธทไดกคอ ตวอกษร h จะปรากฏบนจอภาพ

ตวอยางการใชเครองหมาย [] ทท าหนาทแทนฟงกชนภายในรวมกบตวแปรประเภท Sequence

ก าหนดคาใหตวแปร a = ['book ', 'color ', 'fan '] print(a[1][0]) ผลลพธทได คอ ตวอกษร C จะปรากฏบนจอภาพ การใชเครองหมาย [0] ตอทาย a[1] หมายถงการ

ตดตวอกษรตวแรกของ a[1] ซงคาใน a ต าแหนงท 1 กคอ color

0 1 2

Page 15: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การใชเครองหมายคอมเมนต (Comment)

ดวยการท างานของภาษา python ซงเปนแบบ interpreter ท าใหการประมวลผลค าสงทละบรรทด การใช คอมเมนต อธบายหมายเหตตางๆ จงตองใชเครองหมายคอมเมนต ไดทละบรรทด โดยใชเครองหมาย # (Shape Sing) ตามตวอยางตอไปน ตวอยางการใชเครองหมาย # ส าหรบใสค าอธบายหรอหมายเหต # sample python code บรรทดทจะไมมการประมวลผลใดเนองจากมการคอมเมนต a = 100 b = 20 c = a + b # print(a, b) print(c) b = 20 * 100 # คณอก 100 เทา

print(b)

Python กบการใชตวอกษรตวเลกหรอใหญ (Case Sensitive) การเขยนโปรแกรมดวยภาษา python และตองใชความระมดระวงเรองการใชตวอกษรเลกหรอใหญ ส าหรบการประกาศตวแปร การเขยนค าสงภายใน การเรยกชอโพรซเจอรหรอฟงกชน และอนๆ ดงนนจงมความจ าเปนทตองใหความสนใจเมอมการเรยกใชงาน มฉะนนจะสงผลใหเกดขอผดพลาด error เกยวกบตวอกษรเลกหรอใหญระหวางใชงานขนได

มาทดลองเขยนโปรแกรมดวยภาษา python การทดลองเขยนค าสงตางๆ ของภาษา python สามารถทดสอบได 2 วธคอ 1 ทดลองเขยนค าสงดวย python shell 2 ทดลองเขยนค าสงดวยรปแบบไฟลโปรแกรมแบบ python

ทดลองเขยนค าสงดวย python shell การเรยนรเกยวกบวธการเขยนโปรแกรมทดทสดคอการทดลองพมพค าสงตางๆเพอดผลลพธทเกดขนซงอาจจะเกดขอผดพลาดในการทดสอบค าสงหรอประสบความส าเรจในการท างานของค าสงนนๆ อกทงท าใหผฝกเขยนโปรแกรมไดประสบการณการเขยนและทดสอบจรงมากกวาเขาใจจากทฤษฎแตเพยงอยางเดยว พดแลวกเรมเปดโปรแกรม python IDLE ใน Windows ตามรปท 2.11

Page 16: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปท 2.11 แสดงขนตอนการเปด python IDLE ภายใตระบบปฏบตการ Windows

หลงจากเปด python IDLE ไดแลวลองมาทดลองพมพค าสงตางๆ ตามตวอยางตอไปน

ตวอยางท 1 ทดลองพมพขอความลงใน python Shell >>> "I got Python Code"

หลงจากพมพขอความเสรจสนใหกดปม enter ผลลพธทไดจาก python Shell จะปรากฏขอความดงกลาวขนมาในบรรทดถดไป

ตวอยางท 2 ทดลองพมพขอความหลายบรรทดดวยเครองหมาย " " " หรอ ' ' '

>>> ' ' 'This book has three pages

First page is empty page ' ' '

Page 17: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 3 ทดลองใชค าสง print รวมกบขอความ

ส าหรบ Windows : >>> print(' My Book is ok ')

ส าหรบ linux: >>> print 'My book is ok ' โดยไมตองใสวงเลบรวมกบฟงกชน

ตวอยางท 4 แสดงการเชอมตอระหวางขอความตงแต 2 ขอความขนไป

>>> 'Joe ' + 'Mary ' แสดงการเชอมตอดวยเครองหมาย +

หรอ

>>> 'Joe ' 'Mary ' แสดงการเชอมตอดวยการเขยนแบบตอเนอง

หรอ

>>> 'Joe ' + ' ' + 'Mary ' แสดงการเชอมตอดวยเครองหมาย + กบขอความ 3

ขอความหรอใชรวมกบค าสง print

>>> print('Joe ', 'Mary ') แสดงการเชอมตอระหวาง 2 ขอความพรอมใชรวมกบ

ค าสง print

Page 18: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 5 แสดงการใชค าสงตรวจสอบชนดของขอมล

>>> type(100) ตรวจสอบคา 100 ใน python ผลลพธทไดจะบอกชนดของคาทตรวจสอบ <class 'int'>

>>> type(9999999)

<class 'int'>

>>> type(3.143)

<class 'float'>

>>> type('joe')

<class 'string'>

>>> type(5+4j)

<class 'complex'>

ตวอยางท 6 ทดสอบการอางองโมดลทน ามาใชงาน

กรณท 1 การอางองโมดลทมใชใน Python >>> Import os ทดสอบการอางองโมดลชอ OS >>> จะไมปรากฏอะไรถาหาก python รจกโมดลชอ OS

กรณท 2 การอางองโมดลทไมมการตดตงใน python

>>> Import mysql ทดสอบการอางองโมดลชอ mysql เพอท าการเชอมตอกบฐานขอมล

>>> จะมขอความเกด error ปรากฏขนเพอแจงเตอนการใชงานโมดล

Page 19: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 7 แสดงการใชงานตวแปรใน python Shell

>>> a = 100 >>> b = 200

>>> c = a + b

>>> print(a,b,c) พมพคาในตวแปร a, b, c รวมกบค าสง print

>>> print(' a= %d b=%d c=%d ' %(a, b, c) )

>>> type(a)

<class ' int ' >

ตวอยางท 8 แสดงการใชค าสงลปดวย python Shell >>> for a in range(1 , 10): print(a) เวนวางแลวกดปม Enter

>>> 1 ::

>>> 9

พมพคาในตวแปร a, b, c พรอมกบ

ขอความแบบผสมผสานกบคาในตว

แปรดวยคณสมบตของค าสง print

ผลลพธทเกด

Page 20: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ส าหรบการใช python Shell ทดลองค าสงทสามารถมค าสงยอยภายในตวของค าสงหลก (สงเกต

ค าสงหลกทสามารถมกลมค าสงยอยได มกจะนยมใชเครองหมาย : (Colon) กอนจะเรมแบงยอหนาและ

ก าหนดค าสงยอย) จะขนบรรทดใหมพรอมยอหนาใหอตโนมตเพอรอการพมพค าสงยอย วธท python

Shell จะรวาค าสงยอยสนสดกคอ บรรทดสดทายไมมการพมพใดๆ หรอเวนวางไว (กดปม Enter สก 2

ครงกได กถอวาสนสดแลว)

ตวอยางท 9 แสดงการใชค าสงแปลงชนดของคาในตวแปร

>>> a = '100 '

>>> b = int(a)

>>> type(b)

<class 'int '>

>>> type(a) <class 'string '>

ตวอยางท 10 แสดงการใชค าสงเกยวกบการแปลงเลขฐาน

>>> a = 255

>>> hex(a)

>>> bin(a)

>>> oct(a)

หรอใชรวมกบค าสง print

>>> print(‘%x’ %a)ใชตวอกษร x หรอ x ส าหรบเลขฐานสบหก (hex)

>>> print (‘%o’ %a)ใชตวอกษร o หรอ o ส าหรบเลขฐานแปด (oct)

ก าหนด 100 แบบ string ใหกบตวแปร a

ใชค าสงฟงกชน int ส าหรบแปลงคาจากชนด String ใหเปนชนด Int

Page 21: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

หลงจากทดลองใช python shell กบค าสงตางๆ กคงท าใหผใชงานพอไดแนวทางการเขยน

โปรแกรม และผลลพธทไดจากการทดสอบ แตการทดสอบเขยนโปรแกรมดวย python shell กมขอจ ากด

ในการจดเกบกลมค าสง ซงเปนสงจ าเปนในการพฒนางานในรปแบบทเปนซอรสโคด ดวยเหตนเราจง

สามารถเขยนโปรแกรมในรปของไฟลโปรแกรมไดดวย

ทดลองเขยนค าสงดวยรปแบบไฟลโปรแกรม

เมอพดถงรปแบบการเขยนโปรแกรมทเหมาะตอการพฒนางานจรงๆ จงๆแลว การเขยนค าสง

ทงหลายควรจะอยเปนทเปนทาง งายตอการท างานอยางตอเนองและคนหาไดงาย ซงกเปนไปตาม

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

ซอรสโคด ตองมนามสกลเปน .py สวนจะเกบในโฟลเดอรไหนกได โดยไมจ าเปนตองเกบไวทเดยวกน

กบโฟลเดอรท python ตดตงอย ตอไปนเปนการทดลองสรางไฟลซอรสโคดไอดวย Editor ดงรปท 2.13

ซงเปนการเรยกใชงาน Editor ดวย python shell

รปท 2.13 แสดงการเลอกเมนใน python Shell เพอเรยกใชงาน Editor

Page 22: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

หลงจาก Editor ปรากฏขน ใหทดลองเขยนค าสงตอไปน เพอทดสอบการเขยนโปรแกรม และ

ศกษาการใชเมนตางๆ เชน ทดสอบการท างานของโปรแกรม จดเกบไฟลซอรสโคดลงในโฟลเดอรท

ตองการ ฯลฯ

รปท 2.14 ใชเมน Run เพอทดสอบการเขยนค าสงหรอสงใหโปรแกรมท างาน

ขนตอนการทดสอบโปรแกรมตวอยาง ใหเลอกเมน Run ใน editor เพอดผลลพธทปรากฏใน

python Shell เลอกเมนยอย Run Module ( หรอจะกดป ม F5 กได) เทานกเสรจสนการทดสอบโปรแกรม

ทก าลงพฒนา

Page 23: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 3 รจกการใชตวแปรของ Python

พนฐานในการเขยนโปรแกรมทนกพฒนาโปรแกรมในแตละภาษาจ าเปนตองรและเขาใจ คอการใหงานตวแปรของภาษา ซงจะมรายละเอยดการใชงาน การประกาศตวแปร การก าหนดชนดตวแปร การท าความ

เขาใจเกยวกบกลมของชนดตวแปร ทมการใชรปแบบการเขยนตวแปรแตละชนดการใชเครองหมายเชน

'(Quote) หรอ "(Double Quote) รวมกบคาทจะจดเกบในตวแปร การก าหนดขอบเขตของตวแปรส าหรบใชงานในโมดลทก าลงเขยนโปรแกรมหรอการรเซต (Reset) คาในตวแปรแตละชนดเปนตน เพองายตอการท าความ

เขาใจเกยวกบตวแปรของ python

การเลอกใชตวแปรส าหรบเขยนโปรแกรม

ปจจบนหลกการและแนวคดการพฒนาการเขยนโปรแกรม หรอภาษาทใชในการเขยนโปรแกรม มขด

ความสามารถรองรบการเขยนโปรแกรมในรปแบบทวไป และ Object Base เชงวตถ(Object Oriented) ดงนนการเลอกตวแปรส าหรบใชงานรวมกบกลมค าสงจงตองก าหนดใหเหมาะสมและถกตอง ส าหรบตวแปรของ

ภาษาแบงออกเปน 2 กลมใหญดงน

กลมท 1 ตวแปรชนดทวไปไดแก ตวเลข(Number), ขอความ(String), วนท เวลา(Date Time), เลข

ทศนยมหรอชนดทเปน Sequence (คลายตวแปร Array ในภาษาอน) เปนตน

กลมท 2 ตวแปรชนด Object เชน ค าสง Object เกยวกบไฟล (File) หรอไดเรกทอร (Dir), ค าสง object

connect ส าหรบการเชอมตอฐานขอมล ฯลฯ

รปแบบการสรางและใชงานตวแปร

รปแบบการเขยนใน python ทไดรบการออกแบบมาใหงายตอการสราง และเรยกใชงานโดยไมตองม

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

วนท,เวลา,Object ใหกบตวแปรตามตวอยางตอไปน

ตวอยางท 1

อยาลมเครองหมาย ' และ "

Page 24: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 2 ถาตองการก าหนดคา 100 ใหกบ a, b, c

a = b = c = 100 ภาษา Python จะก าหนดชนดของตวแปรตามคาทจดเกบลงในตวแปรปจจบนโดยอตโนมต ทกครงทม

การเปลยนแปลงคาทจดเกบ ตามตวอยางดงตอไปน

a = 100 เรมตนก าหนด 100 ทเปนชนด Int type(a) ค าสง type ส าหรบตรวจชนดของตวแปร a

a = 'joe' ก าหนดคาขอความใหกบตวแปร a

type(a) ตรวจชนดของตวแปร a ซงจะปรากฏเปน String

เพอเปนการตรวจสอบชนดของตวแปร เราสามารถใชค าสงฟงกชนภายในทชอ Type ท าการทดสอบ

ชนดของตวแปรในปจจบนได

ชนดของตวแปรทมการใชงานใน Python

รปแสดงโครงสรางชนดตวแปรใน Python

ตามรปแสดงใหเหนถงโครงสรางชนดตวแปรใน Python โดยแบงชนดของตวแปรทเกยวกบเลข

จ านวนเตม,ตวเลขทศนยม,ขอความและชนดทเปน Complex ทไมตองใชค าสง import เนองจาก Python ไดก าหนดชนดตวแปรเหลานใหเปนพนฐานทรวมกบการเขยนโปรแกรมเสมอ (ในรป ใชเสนวงกลมทบส าหรบ

ชนดตวแปรทไมตอง import)

Page 25: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางชนดตวแปรพนฐานทสามารถใชงานไดโดยไมตอง import

ชอชนดตวแปร ความหมาย ตวอยาง Long, Int ตวเลขจ านวนเตม 979 Float ตวเลขทศนยม 3.1467 Complex หรอ Imaginary ตวเลขเชงซอน 5+4j String ขอความ 'Joe' หรอ ''Joe'' Boolean คาทางตรรกะ True, False

ถาเปนชนดตวแปรทจ าเปนตอง import ใหสงเกตเมอน ามาใชงาน เวลาทดสอบโปรแกรมจะเกดขอผดพลาด (Error) ขน วธแกไข กใหเพมโมดลทอางองชนดตวแปรนนเขาไปในโปรแกรมของเรา

ตวอยางชนดตวแปรทจ าเปนตอง import

ชอชนดตวแปร ความหมาย ตวอยาง Date ชนดวนท datetime Time ชนดเวลา datetime MySQL.Connect ตวเชอมฐานขอมล MySQL OS.path.isdir ตรวจชอไดเรกทอร os

ท าความเขาใจกบชนดตวแปรพนฐานของ Python

ชนดตวแปรพนฐานของ Python ถกก าหนดไวแลวภายในตว (Built-in) โดยการน าไปใชประกาศสรางตว

แปร(เชน ตวแปรชอ Id ส าหรบการจดเกบคา 100 เมอเขยนเปนค าสงจะไดดงน Id = 100) จะพรอมใชงานทนทไมตองอางองจากโมดลภายนอก ส าหรบขอบเขตของชนดตวแปรพนฐานแบบจดสรางภายใน (Built-in) ม

รายละเอยดดงน

ตวแปรชนดตวเลขจ านวนเตม

Python มตวแปรทรองรบการใชงานตวเลขแบบจ านวนเตมทมขนาดได 50 ถง 100 หลก ยงจ านวนหลก

มากเทาใด ความเรวในการใชงานของตวแปรชนดนกจะลดลงตามขนาดความจของตวเลขเมอเทยบกบความจชนดตวเลขจ านวนเตมมาตรฐานทวไป จดเดนของชนดตวเลขแบบจ านวนเตมใน Python อกประการไดแก การ

ใชงานตวเลขจ านวนเตมทเปนเลขฐานสอง(Binary), ฐานแปด(Octal), ฐานสบหก(Hexadecimal) ลงในตวแปร

ชนดตวเลขจ านวนเตมตามตวอยาง และการทดสอบตอไปน เรมจากเปด Python IDLE แลวพมพคาตวแปร a

Page 26: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ส าหรบการจดชนดตวเลขจ านวนเตมแบบฐานสองลงในตวแปร b จะก าหนด 0b น าหนาเลขฐานสอง

หรอใชฟงกชนภายในทชอวา bin() ส าหรบการจดเกบลงในตวแปร b

ทดลองโดยการพมพคาตวเลขฐานสองลงในตวแปร

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

ชอเลขฐาน ค าน าหนา ฟงกชน สอง (Binary) 0b bin(ตวเลข) แปด (Octal) 0o oct(ตวเลข) สบ (Decimal) - int(ตวเลข) สบหก (Hexadecimal) 0x hex(ตวเลข)

ตารางเทยบการใชชนดตวเลขจ านวนเตมรวมกบเลขฐานสอง,แปด,สบ,และสบหก

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

ตวแปร a จดเกบตวเลขแบบจ านวนเตมในรปแบบตวเลขฐานสบ

ผลลพธท Python Shell จะแสดงคา 12345678901234567890

ปอนคาตวเลข 1011 ฐานสองลงในตวแปร b

ผลลพธจะแสดงคาตวเลข 1011 ฐานสองหรอตรงกบตวเลข 11 ฐานสบ

ทดสอบเลขฐานสองโดยใชฟงกชนภายในท

ชอ bin ส าหรบการจดเกบคาลงในตวแปร b

Page 27: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบ ลกษณะการท างาน i | j เรยกวา Bitwise OR i ^ j เรยกวา Bitwise XOR i & j เรยกวา Bitwise AND i << j เรยกวา Shift left i >> j เรยกวา Shift right ~ i เรยกวา Inverts i’s bits

ตารางแสดงการใชเครองหมายตรรกะรวมกบตวแปรชนดตวเลข

ทดลองพมพคาตวเลขฐานแปดและฐานสบหกลงในตวแปร

ตวอยางเลขฐานแปด

ตวอยางเลขฐานสบหก

ปอนคาตวเลข 8 ฐานสบโดยใชฟงกชน

ภายในแปลงเลขฐานแปดใหกบตวแปร d

ปอนคาตวเลข 10 ฐานแปดลงในตวแปร c

ปอนคาตวเลข 255 ฐานสบแลวใชฟงกชนภายในทชอ hex

ชวยแปลงคาเปนเลขฐานสบหกเพอจดเกบในตวแปร f

ปอนคาตวเลข ff ฐานสบหกลงในตวแปร e

Page 28: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวแปรชนดบลน(Boolean)

Python ก าหนดการใชงานตวแปรชนดบลน ดวยคาตวเลขจ านวนเตมไดแก คาทเปนจรงใหมคาเทากบ 1 หรอสามารถเขยนค าวา True แทนคาตวเลข และคาทเปนเทจใหมคาเทากบตวเลข 0 หรอ False นอกจากนเรายงน าคาตวแปรชนดบลนมาใชรวมกบลอจกโอเปอเรเตอร (Logic Operator) ซงประกอบดวย and, or, Not และรปแบบฟงกชนพเศษเฉพาะ Python ทเรยกวา Short-Circuit ฟงกชน

การทดลองพมพคาตวแปรชนดบลน

ตวแปรชนดตวเลขทมทศนยม

ชนดตวเลขทมทศนยมส าหรบการใชงานใน Python แบงออกเปน 3 ชนดยอย ไดแก

1. ตวเลขทศนยมชนด Floating

2. ตวเลขทศนยมชนด Complex

3. ตวเลขทศนยมชนด Decimal

โดยตวเลขทศนยมชนด Float และ Complex จะพรอมใชงานภายใน (Built-in) รวมกบ Python ยกเวน

ชนด Decimal ทจ าเปนตอง import โมดล Decimal กอนใชงาน ทงนอยทความแตกตางของตวเลขทเปนทศนยม

ถาใชค านวณทวไปไมเกยวกบเงนๆทองๆ กใชชนด Floating แตถาเกยวกบเงนทองควรใชชนด Decimal ทตอง

ใชตางชนดกน โดยเฉพาะเกยวกบคาทางการเงนเพราะเทคนคการปดเศษและจ านวนทศนยมทมใชในชนด

Floating และ Decimal แตกตางกน ส าหรบชนด Floating อาศยการท างานของอลกอรทมทนยมใชกนทวไปของ

David Goy ซงผลลพธทไดจากการปดเศษทศนยมจะมคาคลาดเคลอนนดหนอย แตกยงน าไปใชงานทวไปได

แตถาน าไปใชกบการเงนทตองการความแมนย าในการปดเศษมาก แนะน าใหใชชนด Decimal ซงใชเทคนคการ

ปดเศษแบบ Balance Rounding ทมความเรวในการค านวณนอยกวาตวเลขทศนยม แตมความคลาดเคลอนนอย

กวาดวย

ปอนคาตวเลข b จะปรากฏเปนคาเทจหรอ False

ซงเปนผลมาจากการใชโอเปอเรเตอร Not นนเอง

ก าหนดคาบลน True ใหกบตวแปร a

ก าหนดโอเปอเรเตอร Not ใหกบคาบลนทอยในตวแปร a ซงมคาเปน True

Page 29: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

math.acos(x)

math.acosh(x)

math.asin(x)

math.asinh(x)

math.atan(x)

math.atan2(y,x)

math.atanh(x)

math.ceil(x)

math.copysign(x,y)

math.cos(x)

math.cosh(x)

math.degrees(r)

math.e

math.exp(x)

math.fabs(x)

math.factorial(x)

math.floor(x)

math.fmod(x,y)

math.frexp(x)

math.fsum(i)

math.hypot(x,y)

math.isinf(x)

math.isnan(x)

math.Idexp(m,e)

math.log(x,b)

math.log10(x)

math.loglp(x)

math.modf(x)

math.pi

math.pow(x,y)

math.radians(d)

math.sin(x)

math.sinh(x)

math.aqrt(x)

math.tan(x)

math.tanh(x)

math.trunc(x)

ตารางแสดงกลมค าสงเกยวกบคณตศาสตร

ตอไปนเปนการทดลองพมพตวเลขทศนยม

แปลงคา Floating ไปเปนเลขฐานสบหก และท าการ

จดเกบในตวแปร d เปนชนดขอความ (String)

แปลงคาในตวแปร d ซงเกบคาเลขฐานสบหกใหกลบไปเปนคาชนด Float ดวยฟงกชนภายในทชอวา fromhex()

อางองกลมฟงกชนภายในเกยวกบการค านวณภายใตโมดล math

ใน Python ใชเครองหมาย ** ส าหรบการยกก าลง

Page 30: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เครองหมายทางการค านวณ ใชงานเกยวกบตวเลข + , - ค านวณบวกหรอลบตวเลข

* ส าหรบคณตวเลข ** เกยวกบการหารคาตวเลขใน Python ใชได 2 รปแบบ

/ , // ส าหรบการยกก าลง เชน 102 กคอ 10**2 // , % ส าหรบการตดคาเฉพาะเศษทไดจากการหารคาตวเลข

ตาราง แสดงเครองหมายการค านวณ

ตวแปรชนดตวเลขจ านวนเชงซอน (Complex Number)

ส าหรบการค านวณจ านวนเชงซอน เชน 1.2 + 4j , 0.7 - 6.5j ฯลฯ ในภาษา Python ไดก าหนดตวแปร Built-in ชนด Imaginary ไวรองรบ ชวยใหท างานเกยวกบจ านวนเชงซอนไดสะดวก ลกษณะรปแบบของตวเลขจ านวนเชงซอนจะประกอบดวยคา Real และคา Imaginary

1.2 + 4j เรยกคา Real เรยกคา Imaginary

รปแสดงองคประกอบของตวเลขจ านวนเชงซอน Imaginary

ตามรป ทดลองพมพตวเลขเชงซอนตามตวอยางตอไปน

ตรวจชนดตวแปรใน a

Page 31: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวแปรชนดตวเลขทศนยม Decimal

โดยปกตทวไปถาเราก าหนดตวเลขทศนยม 3.1428 ใหกบตวแปร สมมตวาชอตวแปร a หรอ a = 3.1428

ในภาษา Python จะเปนการสรางและก าหนดชนดตวเลขทศนยมแบบ Floating ใหกบตวแปร a เมอไรกตามท

น าตวแปรไปค านวณแลวเกดคาตวเลขเศษขนมาใหม วธการปดเศษภายใตตวแปรชนด Floating จะผดเพยนไป

ทละนด โดยเฉพาะเมอมจ านวนหลกของเศษทศนยมมากๆ(ในตวเลขทศนยมชนด Floating จ านวนของเศษ

ทศนยมอยทประมาณ 17 หลก) ดงนนเมอมการน าคาตวเลขทศนยมชนด Floating ไปใชงาน สมมตน าไปใช

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

ดตวเลขทศนยมชนด Decimal กนบาง ตวเลขทศนยมชนดนมกรรมวธการปดเศษแบบใหมทใหผลลพธ

คลาดเคลอนนอยกวาชนดตวเลขทศนยม Floating แตการรองรบจ านวนตวเลขเศษของชนด Decimal กม

ประมาณ 28 ตว

ขอจ ากดของตวเลขทศนยมชนด Decimal กคงเปนเรองของความเรวในการค านวณเมอเทยบกบชนด

Floating อกเรองทส าคญในการใชงานตวเลขทศนยมชนด Decimal กคอการอางองโมดล Decimal กอนใชงาน

เสมอ

ตอไปนเปนการทดลองพมพตวอยางเกยวกบตวเลขทศนยม Decimal

อางองการใชตวเลขชนด Decimal

พมพคาตวเลขในตวแปร a

พมพชนดคาตวเลขในตวแปร a

Page 32: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวแปรชนดขอความ(String)

ตวแปรชนดขอความมความจ าเปนตอทกภาษารวมทงภาษา Python ดวย สวนใหญรปแบบการเขยนและประกาศตวแปรชนดนจะคลายกบภาษาอน จะแตกตางกคงเปนทเครองหมาย เชน ภาษา Visual Basic ใชเครองหมายอญประกาศ(Double Quote), ภาษา C หรอ C++ จะใชเครองหมายฝนทอง(Single Quote) ส าหรบภาษา Python สามารถใชไดทง 2 ภาษา(เครองหมายอญประกาศหรอฝนทอง เชน A = 'Blue Sky' หรอ A = "Blue Sky" เปนตน) Python ก าหนดการใชรหสขอความแบบ UTF-8 Unicode เพอรองรบขอความทเปนภาษาอนทวโลก รวมทงภาษาองกฤษทเปนพนฐานของการใชปกต เหตผลท Python เลอกรหส Unicode เปนหลกแทนรหส ASCII ทเรามกค นเคยบน Microsoft Windows เนองจากการปอนขอความจากการใชงานแตละประเทศ จะใชภาษาทองถนของประเทศนนๆ จ านวนพยญชนะของแตละภาษาจะมมากนอยไมเทากน ยงถามพยญชนะมากๆ เชน ภาษาจน การใชรหส ASCII จะไมสามารถรองรบพยญชนะทงหมดได ทางออกกคอตองใชรหสใหมทรองรบพยญชนะไดมากขน กคงหนไมพนรหส Unicode เพอหลกเลยงปญหาการปอนขอความทมความหลากหลายและจ านวนของพยญชนะของแตละภาษาทจะน ามาใชกบขอความของภาษา Python จงไดก าหนดรหส Unicode ส าหรบใชงานกบขอความเปนหลก อกเรองหนงกคอ Python สามารถท างานไดบนหลายระบบปฏบตการ รวมทงสามารถน ามาสรางเปนเวบแอพพลเคชนทรองรบกลมภาษาทหลากหลาย การใชรหส Unicode กบขอความจะชวยลดปญหาเรองการใชงานลง

ส าหรบรปแบบการใชขอความรวมกบตวแปรหรอฟงกชนภายใน พอสรปลกษณะการเขยนโปรแกรมของภาษา Python ได 5 รปแบบ ดงน (ทดลองพมพค าสงลงใน Python IDLE)

1. การใชงานขอความรวมกบตวแปรและฟงกชนภายใน

พมพคาในตวแปร a, b

ตรวจชนดตวแปรใน a

การใชขอความรวมกบตวแปร

การใชขอความรวมกบ

ฟงกชนภายในทชอ print()

Page 33: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2. การใชขอความ + String Escape รวมกบตวแปรและฟงกชนภายใน

กลม String Escape \newline

\\ \’ \” \a \b

\f \n

\N{name} \ooo

\r \t

\uhhhh \Uhhhhhhhh

\v \xhh

ตารางแสดงกลม String Escape

การใช String Escape กเพอน ารหส ASCII มาเสรมรวมเขากบกลมของขอความ ซงรหส ASCII ทคนเคย เชน รหส ASCII10 ส าหรบ Linefeed หรอดจากตารางท 3.5 กคอ การใชรปแบบ \n ถาน ามาเขยนรวมกบกลมขอความของ Python จะตองใชภายในเครองหมายอญประกาศ (Double Quote) หรอฝนทอง(Single Quote) ตามตวอยางตอไปน(ทดลองพมพตวอยางใน Python IDLE เพอดผลลพธ)

ตวอยางท 1 กลมขอความในตวแปร a ทไมไดใช String Escape

ตวอยางท 2 กลมขอความในตวแปร a มการใช String Escape เกยวกบการขนบรรทดใหม(\n)

ตวอยางท 3 การใช String Escape ทเกยวกบการขนบรรทดใหม \n รวมกบฟงกชนภายในทชอ print()

Page 34: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

3. การใชงานกลมขอความ + คาอารกวเมนต (Argument) รวมกบฟงกชนภายใน

บางกรณของการใชกลมขอความรวมกบฟงกชนภายในทสามารถอานคาจากตวแปร แลวน าคาทไดมาใชรวมกบกลมขอความได ตามตวอยางตอไปน

บรรทดท 5 เปนรปแบบการใชขอความผสมกบตวแปรภายใตการท างานของฟงกชนภายในทชอ print

รปแสดงรปแบบการเขยนค าสงฟงกชน print ขอความผสมกบคาในตวแปร

รปแสดงต าแหนงการวางคาทอานไดจากตวแปร

พมพคาในตวแปร a

พมพขอความอยางเดยว

บรรทดท 1 บรรทดท 2 บรรทดท 3

บรรทดท 4

บรรทดท 5

เปนกลมขอความ

เปนเครองหมายส าหรบการเชอมกลมขอความ ใหสามารถแสดงคาในตวแปรได

ตวแปรหรอคาอารกวเมนตทจะน าคาไปใชรวมกบกลมขอความ

อานคาในตวแปร a หรอคาอารกวเมนตตวแรก แลวน ามาวางลงทต าแหนงน โดยใชเครองหมาย %d ส าหรบการอานคาใน a และระบชนดคาตวเลขทอานไดจากตวแปร a ในทนจะเปนชนดตวเลขจ านวนเตม (Int)

Page 35: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เครองหมายสญลกษณ ชนดตวแปร %s String %d Int, Decimal %f Float

ตารางแสดงเครองหมายสญลกษณส าหรบ การระบต าแหนงในกลมขอความและระบชนดคาทอยในตวแปร

บรรทดท 6

ในบรรทดท 6 เปนการแสดงคาตวแปรหรออารกวเมนตมากกวา 1 ตวแปร คอ a และ b

รปแสดงการใชขอความผสมกบคาของตวแปรทมมากกวาหนงตวแปร

รปแสดงล าดบการอานคาในตวแปรหรออารกวเมนต a และ b ตามล าดบ

และน าไปใชงานรวมกบกลมขอความตามล าดบดวยเชนกน

4. การใชงานขอความ + String Escape + คาอารกวเมนต

รปแบบนเปนการน าความสามารถการท างานของรปแบบท 2 และ 3 มาใชรวมกบกลมขอความตาม

ตวอยาง

ใชวงเลบครอบตวแปร a และ b

บรรทดท 1

บรรทดท 2 บรรทดท 3

บรรทดท 4

Page 36: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บรรทดท 4 เปนการผสมการใช String Escape โดยการใชเครองหมาย \n ส าหรบข นบรรทดใหม

รวมกบการระบต าแหนงผานเครองหมายสญลกษณ %d ตวแรกทมในกลมขอความซงแทนคาตวแปร a หรอคาอารกวเมนต a และเครองหมายสญลกษณ %f ซงแทนคาตวเลขและชนดของตวแปร b ตามล าดบ

5. การใชงานขอความ + String Escape + ฟงกชนภายใน + คาอารกวเมนต

คาอารกวเมนตทเปนกลมชนดตวเลข เมอน ามาใชรวมกบกลมขอความ บางกรณกตองการจดรปแบบเพอใหงายตอการใชงาน ยกตวอยางตวเลข 10000.7687 ตองการจดรปแบบใหเปน 10,000.77 เพอน าไป

แสดงผลรวมกบกลมขอความ โดยจะแทรกเครองหมาย , หรอคอมมา(comma) ใหกบตวเลขทก 3 หลก และปด

เศษใหเหลอ 2 หลก ดวยการใชฟงกชนภายในทชอวา format() คราวนลองมาดตวอยางการใชงาน

บรรทดท 6 เปนการจดรปแบบตวเลขในตวแปร a ผานฟงกชนภายใน format โดยมการน าไปใชรวมกบ

กลมขอความเพอระบต าแหนงทจะแทรกคาตวเลขในขอความดวยการใชเครองหมาย {} ส าหรบการแทรกลงในกลมขอความ

บรรทดท 1 บรรทดท 2 บรรทดท 3

บรรทดท 4

บรรทดท 5

บรรทดท 6

บรรทดท 7

พมพกลมขอความ

พมพคาในตวแปร a

กลมขอความ ฟงกชนภายใน format

ตวแปรอารกวเมนต

ล าดบ 0 ล าดบ 1

ตวแปร a เปนล าดบอารกวเมนตล าดบท 0 และน าไปแทรกลงในขอความตรงเครองหมาย {0} หรอ {ล าดบของตวแปรอารกวเมนต ในฟงกชนภายใน format} ในกลมขอความ

การระบต าแหนงคาตวเลขลงในกลมขอความ

อารกวเมนตล าดบท 0

Page 37: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

พอจะเหนรปแบบและวธการเขยนลกษณะการอางองล าดบของตวแปรอารกวเมนต การใชเครองหมาย

ระบตวเลขทของอารกวเมนตส าหรบแทรกคาตวแปรผานเครองหมายปกกา {} ในกลมขอความตอไปนจะเปนตวอยางเชงลกส าหรบการใชฟงกชนภายในทชอ format รวมกบคาตวแปรอารกวเมนตและการอางองในการ

แทรกคาตวแปรลงในขอความ แบงออกเปน 2 สวน

1. วธอางองการแทรกล าดบเลขท คาตวแปรอารกวเมนตระหวางฟงกชนภายใน format และกลม

ขอความ

การอางองการแทรกล าดบเลขทคาตวแปรอารกวเมนตกบกลมขอความ แบงออกเปน 5 วธยอยตาม

ตวอยางตอไปน

ตวอยาง 1.1 การอางองการแทรกล าดบเลขทคาตวแปรอารกวเมนตดวยหมายเลขล าดบ

ประโยชนของการมหมายเลขล าดบเลขทของตวแปรอารกวเมนต คอเวลาอางองเลขทล าดบขณะ

แทรกในกลมขอความ ซงมความยดหยนตอการเรยกใชงานตามเลขทล าดบทรวมไดตามตองการ

ตวอยาง 1.2 การอางองการแทรกตวแปรอารกวเมนตดวยการเรยงล าดบตามตวแปรอารกวเมนตจากล าดบแรก

ไปล าดบสดทาย

จากบรรทดท 3 ลกษณะการใชเครองหมาย {} รวมกบกลมขอความจะไมรวมเลขทล าดบของตวแปร

อารกวเมนต a,b,c ดงน นการดงคาทอยในตวแปรอารกวเมนตกจะดงคาตามล าดบการเรยงชอตวแปร

อารกวเมนตภายใตฟงกชนภายในทชอวา format

ตวแปรอารกวเมนตทชอ a จะมล าดบอางองคอ 0 ตวแปร b มหมายเลขอางองล าดบท 1 และตวแปร c จะเปนหมายเลขอางองล าดบ 2

บรรทดท 1 บรรทดท 2 บรรทดท 3

Page 38: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยาง 1.3 การอางองแทรกคาของตวแปรอารกวเมนตดวยการก าหนดชอ(Field Name) แทนเลขทล าดบของ

ตวแปรอารกวเมนต

จากบรรทดท 3 ในสวนทาย .format(tv=a, cost=b) จะเปนรปแบบการก าหนดคาวา tv ใหมคาเทากบตว

แปรอารกวเมนต a เมอตองการแทรกคาของตวแปร a ดวยเครองหมาย {} ลงในกลมขอความ ตองระบค าวา tv รวมกบเครองหมาย {} เพอทจะท าการอางองดงคาจากตวแปรอารกวเมนต a มาแทรกลงในกลมขอความ

ตวอยาง 1.4 การอางองแทรกคาของตวแปรอารกวเมนตดวยการใชฟงกชนภายในทชอวา locals()

เทคนคการใชฟงกชน local() รวมกบฟงกชน format เปนวธการอางองและท าการแทรกคา(ตอนแทรกคาลงในขอความใหสงเกตทเครองหมาย {} ในกลมขอความ) ภายในของตวแปรอารกวเมนตโดยเปนการอางจากชอของตวแปรจรงๆ ภายในโมดลทเปนแบบ Local รวมกบเครองหมาย {} ซงจะเปนการแทรกคาลงตามต าแหนงในกลมขอความ

เปนวธการก าหนดชอ tv แทนการใชหมายเลขล าดบของตวแปรอารกวเมนต a

บรรทดท 1 บรรทดท 2 บรรทดท 3

ตวแปรภายในโมดลนซงเปนแบบ Local

ตวแปรในโมดลแบบ Local

ถกดงคาภายในตวแปรอารกวเมนต b ดวย

เรยกตวแปร Local ของโมดลนมาเปนตวแปรอารกวเมนตโดยอตโนมต

ล าดบในการดงตวแปรอารกวเมนต a ส าหรบแทรกคาลงในกลมขอความทมเครองหมาย {} แรกสด

บรรทดท 1 บรรทดท 2 บรรทดท 3

Page 39: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การอางองชอเดยวกบตวแปรในโมดล คอตวแปร b ส าหรบการแทรกคาในตวแปรอารกวเมนต b ลงในกลมขอความตามต าแหนงทมการใชเครองหมาย {b} เทคนคการใชงานภายใตลกษณะการอางองคาจากตวแปร Local ของโมดลแลวน ามาเปนคาของตวแปรอารกวเมนต เพอทจะน าไปแทรกคาลงในขอความ แบบนเรยกวา Mapping Unpacking(อยาลมเครองหมาย ** น าหนาฟงกชนภายใน local())

ตวอยาง 1.5 การอางองแทรกคาของตวแปรอารกวเมนตประเภท Sequence ดวยหมายเลขล าดบ

การน าตวแปรอารกวเมนตทเปนประเภท Sequence (คลายตวแปรอารเรยในภาษาอนๆ) ซงแบงยอยได

3 ประเภท ไดแก Tuple, List และ Dictionary เปนตน รปแบบของตวแปรประเภท Sequence มการเขยน ดงน

รปแบบการเขยน a = [ TV , 10000 , 'Monday' ]

วธการอางองคาภายใน a[0] a[1] a[2]

เมอน าไปใชงานรวมกบการผานคาตวแปรอารกวเมนต จะมรปแบบการเขยนโปรแกรมใชงานดงน

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

{0} ทอางองเลขทล าดบตวแปรอารกวเมนต หมายเลข 0 หรอตวแปรอารกวเมนต a ซงจะมคาทเกบภายในตวแปรอารกวเมนต a เปนประเภท Sequence ทสามารถจดเกบคาภายในไดมากกวาหนงคา การอางองแทรกคาใน

กลมขอความจะตองรวมใหชด

เลขล าดบอางองหมายเลข 0 ทตดกบเครองหมายปกกา {0} จะบงบอกใหทราบวาเปนตวแปรอารกวเมนตล าดบแรก หรอตวแปรทชอวา a แตเผอญตวแปร a เปนชนด List Sequence ทมหมายเลขอางองยอยส าหรบคา

ภายในของตวแปร a เปน [0] คอ TV,[1] คอ 10000 ฯลฯ

การใชเครองหมายแทรกกตองท าการเพมเตมเลขทล าดบยอยภายในตวแปรอารกวเมนตของ a เขาไป ดงน

[0] [1] [3]

ตวแปร a เปนประเภท List Sequence โดยมการระบคาภายใน

ดงน a[0] คอ TV , a[1] คอ 10000 , a[2] คอ Monday

อานคาตามหมายเลขล าดบประเภท Sequence ของตวแปร a โดยคาทตองการคอ TV ซงตรงกบการอางองล าดบ [0]

หมายเลขอางองล าดบตวแปรอารกวเมนต a ใน format คอล าดบท {0}

[0] [1] [3]

Page 40: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2. การจดคาในตวแปรอารกวเมนตดวยฟงกชนภายใน format

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

เลขทเปนจ านวนเตม(Int), ทศนยม(Float), ทศนยมคงท(Decimal) และชนดขอความ เปนตน

ตอไปนเปนรปแบบการใชงานฟงกชน format กบตวแปรชนดตางๆ ตามตวอยาง

ตวอยางท 2.1 เปนการใชค าสง format กบตวแปรส าหรบการแทรกคาลงในกลมขอความดวยการระบเลขท

ล าดบของตวแปรอารกวเมนต

จากบรรทดท 2 ซงน าฟงกชน format ,ตอทายกลมขอความ แลวท าการแทรกคาตวแปรอารกวเมนตดวย

เครองหมาย {} ในขอความ โดยระบเลขทล าดบของตวแปรอารกวเมนตในฟงกชน

ตวอยางท 2.2 การจดรปแบบคาในตวแปรอารกวเมนตระหวางท าการแทรกแบบปรบแตงการวางขอมลไป

ทางซาย,ขวา,ตรงกลาง,จ ากดจ านวนตวอกษรทตองการแทรก ฯลฯ การเขยนค าสงฟงกชน format แบบเพมรปแบบการจดคาขอมล

เลขทล าดบตวแปรอารกวเมนต : การจดคาขอมลภายในของตวแปรอารกวเมนต เพอท าการแทรกลงใน

ขอความ

ในตวอยางท 2.2 เมอมการเพมขดความสามารถในการจดรปแบบขอมลใหกบฟงกชน format การเขยน

ค าสงจะเพมเตมเครองหมาย : (Colon) ตอจากเลขทล าดบตวแปรอารกวเมนต

บรรทดท 1

บรรทดท 2 บรรทดท 3

เสนทางการอางองเลขทล าดบตวแปรอารกวเมนต ส าหรบ

การแทรกคาภายในตวแปรอารกวเมนตลงในขอความ

0 1 2 เลขทล าดบของตวแปร

Page 41: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เมอเพมเครองหมาย :20 ตอทายเลขทล าดบศนยของตวแปรอารกวเมนต a ในฟงกชน format จะเปน

การก าหนดจ านวนตวอกษรอยางนอย 20 ตวอกษรเสมอ เมอแทรกลงในขอความ ส าหรบกรณคาขอมลในตวแปร a ตามตวอยางขางลาง ซงมขอความ Television เมอนบจ านวนตวอกษรตงแตตวอกษร T ไปจนถง n รวม

ทงหมด 10 ตวอกษร เมอน ามาใชกบเครองหมาย :20 จ านวนในตวแปร a ทม 10 ตวอกษร จงนอยกวาจ านวนทตองแทรกตามเครองหมาย :20

ภายใตกระบวนการท างานทมสวนตางกน 9 ตวอกษร จะมการเพมรหสชองวางตอทายภายในตวแปร a

อก 9 ตวอกษร เพอทจะท าใหครบตามจ านวน 20 ตวอกษร

a =

ผลลพธเมอใชเครองหมาย :20 รวมกบคาขอมลในตวแปร a

a =

1 2 3 4 5 6 7 8 9 10 T e l e v i s i o n

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 T e l e v i s i o n

เปนการจดรปแบบทวไปส าหรบการแทรก

เตมรหสวางเปลาตอทายคาขอมลในตวแปร a ใหครบ 20 ตวอกษร

Page 42: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตอไปเปนการทดลองใช > , < , ^ ตามตวอยางค าสงตอไปน

เทคนคการ slicing และ Striding String ส าหรบตวแปรชนดขอความ

ในการเขยนภาษา Python จะมการใชเครองหมาย [] รวมกบตวแปรชนดตางๆ ใหเหนอยบอยครง แต

ละเครองแบบทน าเครองหมาย [] มาใช กไดผลลพธทแตกตางกน ขนอยกบชนดตวแปรหรอสถานการณทใช

งานเครองหมาย [] ในขณะนน ตามผลลพธทอยากได แตถาหากน าเครองหมาย [] มาใชกบตวแปรชนดขอความ กจะตองมค าศพทเชงเทคนคอย 2 ค าศพท ไดแก slicing และ Striding String

โครงสรางของขอความทจดเกบลงในตวแปร ประกอบดวย หมายเลขล าดบ(Index) ของตวอกษรภายในกลมขอความเปนหมายเลขก ากบการอางองถงทกๆ ตวอกษร ซงมอยดวยกน 2 ชนด คอ 1.ชนดหมายเลข

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 T e l e v i s i o n

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 T e l e v i s i o n

ก าหนดคาทแทรกใหครบ 20 ตวอกษร แลวเลอนไปไวทางขวาสด

ก าหนดคาทแทรกใหครบ 20 ตวอกษร แลวเลอนไปไวทางซายสด

ก าหนดคาทแทรกใหครบ 20 ตวอกษร แลวเลอนไปไวตรงกลาง

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

เมอใชเครองหมาย ^ ตวอกษรจะเลอนมาตรงกลาง

Page 43: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ล าดบ(Index) ทมหมายเลขทางดานบวก(คอเรมจากหมายเลข 0,1,2,3,… จนถงหมายเลขสดทายเหมอนกบเรม

จากตวอกษรตวแรกไปจนถงตวสดทาย) 2.ชนดหมายเลขล าดบ(Index) ทมหมายเลขทางดานลบ(คอเรมจากหมายเลข 0,-1,-2,-3,… จนถงหมายเลขตดลบตวสดทาย เรมจากตวอกษรตวสดทายยอนกลบไปตวแรกสด)

ตามโครงสรางของขอความทจดเกบในตวแปรของ Python รปแบบการเขยนค าสงเพอท าการตดค า

หรอการ Slicing มรปแบบดงน

รปแบบท 1 การตดค าดวยการระบต าแหนงตวอกษร

M Y N A M E I S J O H N 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

รปแบบท 2 การตดค าดวยการก าหนดจดเรมตนและการระบความยาวจ านวนตวอกษร

M Y N A M E I S J O H N 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

-14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 M Y N A M E I S J O H N 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

A =

การใชหมายเลขล าดบทางดานลบ

การใชหมายเลขล าดบทางดานบวก

หมายเลข Index ทางดานบวก

วธการเขยนค าสงตดค า B = A[3]

ผลทไดจากการตดค าเมอระบ A[3] ใหกบตวแปร B = หมายเลข Index ของขอความในตวแปร B

หมายเลข Index ทางดานบวก

วธการเขยนค าสงตดค า B = A[2:7]

ต าแหนงหรอจดเรมตนของตวอกษรทตองการ

จ านวนตวอกษรทจะท าการตดค า โดยเรมนบจากตวอกษรแรกสดไปถง

จ านวน 7 ตวอกษรแตมเงอนไขจากการก าหนดต าแหนงหมายเลขล าดบท 2

ส าหรบการน าคาทท าการตดไปจนถงต าแหนงสดทายมาใสลงในตวแปร B

ผลทไดจากการตดค าเมอระบ A[2:7] =

Page 44: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบท 3 การตดค าดวยการก าหนดจดเรมตนและการระบความยาวจ านวนตวอกษร พรอมดวยการก าหนด

Step ของตวอกษรส าหรบการตดค า บางครงกเรยกวา Striding String

M Y N A M E I S J O H N 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

เขยนค าสง B = A[0 : 7] = A[0 : 7 : 1]

ผลทไดจากการตดค า

สรป การใชวธตดค าในกลมขอความทง 3 รปแบบของภาษา Python เราเรยกวา Slicing และลกษณะการ Step

ของตวอกษรบางครงเรยกวา Striding String ซงใน Python จะก าหนดไวทละ 1 Step โดยอตโนมต

- ทดลองโปรแกรมส าหรบการใชตวแปรและชนดตวแปรแบบพนฐาน

หมายเลข Index ทางดานบวก

จดเรมตน

จดสนสด

จดสนสดการ Step ของการตดค า

ปกตจะก าหนดการ Step ตวอกษรหรอ Striding String ใชท 1

พมพค าสงตอไปน

ผลลพธทปรากฏ

Page 45: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

*** ค าสง print() ใชส าหรบแสดงคาทวไปหรอคาในตวแปร โดยมรปแบบการใชค าสง ดงน

print(ชอตวแปร) print('ขอความ % = ชนดตวแปร' %(ตวแปร))

แสดงขอความผสมกบคาตวแปร

การรเซตคาในตวแปร การสรางตวแปรในโปรแกรมบางครงกมความจ าเปนทตองใสคาอะไรสกอยางเขาไปในตวแปรกอนท

จะน าไปใชงาน เพอใหเกดความสมบรณตามรปแบบการสรางตวแปรของ python ดงนนคาทเหมาะสมตอการ

น ามาใชงานรวมกบการสรางตวแปร ควรจะเลอกคาเรมตนใหตรงตามชนดตวแปรตามตวอยางตอไปน

a = 0 ถาตองการสรางตวแปร a ส าหรบรอการใชงานและท างานเกยวกบตวเลข ควรก าหนดคาใหกบตว

แปร a

a = " " ถาตองการสรางและรอการน าตวแปรไปใหงาน

หรอ b = " " ควรก าหนดคาขอความแบบวางหรอเรยกวา Empty String(ตองเขยนเครองหมาย ' ให

ตดกนเลย หามกดป ม Space Bar ขนกลางระหวางเครองหมาย ' หรอ " )

c = None หากตวแปร c เปนชนด Object ระหวางรอการน าไปใชงาน เราตองการลางคา Object ทคาง

อย ดวยการก าหนดคา None กบตวแปร

การใชตวแปรประเภท Sequence โดยปกตการใชงานตวแปรส าหรบเกบคาตางๆ จะจดเกบไดทละ 1 คาตอตวแปร(ชนดตวแปรกจะ

เปลยนตามคาทจดเกบดวย) เชน a=100 เปนตน ถามกรณพเศษทตองการใหตวแปรหนงตวจดเกบไดหลายคาในเวลาเดยวกน(คลายกบการใชงานตวแปรประเภทอารเรยหรอ Array ในภาษาอน) Python ไดท าการแบงรปแบบ

ตวแปรประเภทนไว 3 ประเภทยอย ไดแก

1. ตวแปรประเภท Tuple 2.ตวแปรประเภท List

3. ตวแปรประเภท Dictionary

ตวอยางท 1 การใชตวแปรประเภท Tuple

ขอควรสงเกต ตวแปรประเภท Tuple จะใชเครองหมายวงเลบ() และใชเครองหมายคอมมา(Comma)คนกลาง

Page 46: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 2 การใชตวแปรประเภท List ส าหรบจดเกบขอมล

ขอควรสงเกต ตวแปรประเภท List จะใชเครองหมาย Slicing[] และคอมมา(Comma)

ตวอยางท 3 การใชตวแปรประเภท Dictionary ส าหรบจดเกบคาในตวแปร

ขอควรสงเกต ตวแปรประเภท Dictionary เครองหมายทใชงานกบตวแปรนคอ {} และคอมมา (Comma)

เนองจากตวแปรประเภท Tuple, List และ Dictionary สามารถเกบคาในตวแปรไดมากกวา 1 คา ตวแปรประเภทเหลานจงมโครงสรางของการจดเกบขอมล และวธการก าหนดล าดบหมายเลขอางอง(Index) ทแนนอน

ตามตวอยางโครงสรางตอไปน

ตวอยาง ตวแปร

'tv' 'dvd' 100 'fan ' 0

A[0] 1

A[1] 2

A[2] 3

A[3]

หากตองการใชคา dvd ทอยในตวแปร a จะตองใชหมายเลขอางองท 1

วธเขยนค าสง

b = a[1] คาในตวแปร b จะมค าวา dvd

กรณหมายเลขอางองมคาตดลบ

'tv' 'dvd' 100 'fan ' 0

A[0] -3

A[-3] -2

A[-2] -1

A[-1]

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

ตวอยางถาตองการคาทเปน dvd แบบหมายเลขอางองยอนกลบหรอหมายเลขอางองตดลบ

b = a[-3]

ล าดบหมายเลขอางอง

ล าดบหมายเลขอางอง

Page 47: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การจดล าดบหมายเลขอางองขอมลในตวแปรประเภท Tuple และ List Sequence จะเรมตนจากศนย

และเพมขนไปเรอยๆโดยอตโนมต ตามคาขอมลทน ามาจดเกบ บางกรณทไมตองการหมายเลขอางองบอกขอมลอตโนมตทตวแปร Sequence สรางขนเองในภาษา python กมตวแปร Dictionary Sequence เพอรองรบ

การก าหนดหมายเลขอางอง พรอมคาขอมลจากผใชงานเอง

ตวแปร Tuple

ตวแปร List

ตวแปร Dictionary

แสดงการท างานของล าดบหมายเลขอางองของตวแปรประเภท Sequence

'tv' 'dvd' 100 'fan ' คาขอมล 0 1 2 3 Positive Index 0 -3 -2 -1 Negative Index

'tv' 'dvd' 100 'fan ' คาขอมล 0 1 2 3 Positive Index 0 -3 -2 -1 Negative Index

'tv' 'dvd' 100 'fan ' คาขอมล 100 200 300 400 Index

ล าดบหมายเลขอางอง

การใชงานตวแปร Tuple b = a[1] ผลลพธใน b คอ dvd

ล าดบหมายเลขอางอง

การใชงานตวแปร Tuple ผลลพธใน b คอ dvd

b = a[1]

ล าดบหมายเลขอางอง

การใชงานตวแปร Tuple b = a[200]

หรอ b = a.get(200) ผลลพธใน b คอ dvd

Page 48: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เทคนคการใชงานตวแปรประเภท Sequence ในลกษณะ Nested

นอกจากความสามารถในการจดการโครงสรางของตวแปรประเภท Sequence เพอรองรบการจดเกบ

ขอมลแบบลกษณะทวไปแลว ยงมการจดเรยงโครงสรางขอมลแบบซอนเชงลก หรอบางครงกเรยกวา Nested Sequence อกดวย

ตวอยางการสราง : การใชตวแปรประเภท Sequence แบบเกบคาทวไป

ตวอยางการสราง : การใชตวแปรประเภท Sequence แบบ Nested Sequence

สงเกต การจดเกบขอมลเชงลกในล าดบหมายเลขอางองท 1 ซงจะมรายการขอมล DVD หลายยหอ

ตวอยางวธการอานคา : ตวแปรประเภท Sequence แบบคาทวไป

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

ตวอยางวธการอานคา : ตวแปรประเภท Nested แบบคาทวไป

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

'TV' 'DVD' 5.67 'FAN' 0 1 2 3

'TV'

'DVD' a[1]

5.67

'FAN'

SONY DVD LG DVD FAN 0 1 2

a = ล าดบหมายเลขอางองแบบ Forward

a =

0 1 2 3

1 ล าดบหมายเลขอางองขนท 1

ขนท 2 ภายใตตวแปร a[1]

b = a [1][1] ผลลพธใน b จะมคาเทากบ LG DVD

Page 49: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางทดลองการ Nested คาในตวแปรประเภท Sequence พมพค าสงตอไปน

รปแบบการเขยนตวแปรประเภท Sequence

ลกษณะการเขยนตวแปรประเภท Sequence ของภาษา Python ทมถง 3 ประเภทยอย ซงทบงบอกถง

ประเภทยอยนน จะใชเครองหมายรวมกบการก าหนดคาตางๆ ตามตารางท 3.7 ดงน

ชอประเภทยอย สญลกษณส าหรบการใชงาน ตวอยาง

1 Tuple () a = ('TV', 'DVD', 'VCD') 2 List [] a = ['TV', 'DVD', 'VCD'] 3 Dictionary {} a = {100:'TV', 200'DVD'}

ตารางท 3.7 การใชเครองหมายส าหรบการจดเกบขอมลลงในตวแปร Sequence แตละประเภทยอย

หลงจากเขาใจการจดเกบคาขอมลลงตวแปร Sequence ตามประเภทตางๆ ตอไปน การอานคาขอมลในตวแปร Sequence ในแตละประเภท ตามตารางท 3.8 ดงน

ชอประเภทยอย สญลกษณส าหรบการใชงาน ตวอยาง

Tuple a = ('TV', 'DVD', 'VCD') b = a[0] ไดคา tv List a = ['TV', 'DVD', 'VCD'] b = a[0] ไดคา tv Dictionary a = {100:'TV', 200'DVD', 300: 'VCD'} b = a[100] ไดคา tv

ตารางท 3.8 การใชเครองหมาย [] ส าหรบการอานคาขอมลจากตวแปรประเภทแบบ Sequence

Page 50: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การอานคาในตวแปรประเภท Sequence ของภาษา Python จะใชเครองหมายการอานคาเพยง

เครองหมายเดยวคอ [] โดยระบหมายเลขล าดบของคาทจดเกบตามล าดบโครงสรางทกลาวไวตอนตนหวขอน ยกเวนตวแปรทเปน Dictionary ทใชคา Key แทนหมายเลขล าดบคาขอมล

ตวอยางค าสงการใชตวแปร Sequence แตละประเภท พมพตามค าสงเพอดผลลพธ

ก าหนดใหคาตวแปร b

เปนแบบ List

ก าหนดคาลงในตวแปร c

เปนแบบ Dictionary

ก าหนดใหตวแปร a ซงเปน

แบบ Tuple Sequence

Page 51: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวแปรชนด Tuple

ตวแปรชนดนจดอยในกลมตวแปรประเภท Sequence ทสามารถเกบคาตางๆ คลายกบตวแปรอารเรย(Array) ของภาษาอนๆ ลงในตวแปรตวเดยว โดยคาทจดเกบจะจดเรยงตามล าดบการใสคาขอมลไวในตวแปร

และจะก าหนดหมายเลขล าดบ(Index) ใหกบคาในโครงสรางของตวแปร แตเนองจากตวแปรชนด Tuple จดเปน

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

จดเกบในโครงสรางนได ยกเวนการแกไขคาขอมลทมอยแลวในตวแปร)

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

การจดเกบคาขอมลทเปน Immutable โดยอตโนมต

กรณมขอมลเพยงคาเดยว แตตองการก าหนดลงในตวแปรใหเปนแบบ Tuple จะมเทคนคการก าหนดคา

ขอมลตามรปแบบการเขยนดงน

พมพคาขอมลทระบตามหมายเลขล าดบ(Index)

เปนการใหหมายเลขล าดบ(Index) ทางดานลบ

Page 52: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ขอสงเกต การใชเครองหมาย , (Comma) ตอทายกอนวงเลบปด จะเปนสงทบงบอกให Python รวาตว

แปร a จะตองเปนชนด Tuple เทานน เมอเรยกใชงานกตองเขยนค าสงดงน

b = a[0]

ถาลมเครองหมาย , (Comma) ตอทายจะเกดอะไรขนกบตวแปร a ค าตอบกคอ ตวแปร a จะเปนตวแปรปกต เกบคาขอมลไดทละ 1 คา และเปนขอมลชนดแบบขอความทวไป

ตวแปรชนด List

หนงในตวแปรประเภท Sequence ทมความยดหยนในการก าหนดคาขอมลลงในตวแปร และขณะน า

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

ของตวแปร List เปนแบบ Mutable(Mutable เปนโครงสรางทเหมาะกบคาขอมลทมการเปลยนแปลงในลกษณะการเพม,ลบ,หรอแกไข ขณะน าไปใชงาน)

a = ['ปลาท', 1000, 'ปลาสลด'], 'กโลกรม']

-4 -3 -2 -1 'ปลาท' 1000 'ปลาสลด' 'กโลกรม' 0 1 2 3

รปท 3.10 แสดงโครงสรางการจดคาขอมลของตวแปรชนด List

ลกษณะการจดเกบคาของตวแปรชนด List จะเรยงตามล าดบการน าคาขอมลเขาไปเกบภายในตวแปรและก าหนดหมายเลข Index ส าหรบขอมลแตละคาทจดเกบ ตามโครงสรางของตวแปรในรปท 3.10 เมอ

ตองการคาในตวแปรขณะใชงานจะใชวธอางหมายเลขล าดบ Index ของคาขอมลนนๆ

มเครองหมาย Comma ตวแปร a เปนชนด Tuple

ไมมเครองหมาย Comma เปนตวแปรแบบทวไป

จะไดตวอกษร ‘ป’ ซงเปนอกษรตวแรก เนองจากตวแปร b เปนตวแปรแบบ String ไมใชตวแปรแบบ Tuple

a =

หมายเลขล าดบ Index ทางดานลบ

หมายเลขล าดบ Index ทางดานบวก

Page 53: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางตวแปรชนด List และเรยกใชงานคาภายในตวแปร

ในการเพมหรอลบคาขอมลภายในตวแปร List จ าเปนตองเรยกใชค าสงพเศษ โดยเรยกค าสงพเศษนวา Method ตอไปนเปนตารางกลม Method ทมใชตวแปร List

รปแบบ ค าอธบาย A.ppend(x) น าคาในตวแปร x ไปเพมทต าแหนงทายสดของกลมขอมลในตวแปร a A.count(x) นบจ านวนกลมขอมลทอยในตวแปร a A.extend(m) A+=m

น าคาในตวแปร m ไปเพมทต าแหนงทายสดของกลมขอมลในตวแปร a

A.index(x,start,end) อานคาในตวแปร a ตามต าแหนงของ Index ทระบไวในตวแปร x A.index(i,x) น าคาในตวแปร x เพมทต าแหนงของ Index ตามทระบในตวแปร i A.pop() อานคาทต าแหนงทายสดของตวแปร a และลบคาดงกลาวออกจากตวแปร a ดวย A.pop(i) อานคาทต าแหนงทายสดของตวแปร i ระบ Index ของตวแปร a และลบคาดงกลาวออกจาก

ตวแปร a ดวย A.remove(x) ลบคาตามทระบในตวแปร x จากกลมขอมลในตวแปร a ถาหาคาดงกลาวไมเจอ จะเกด

ขอผดพลาดในกลมของ Value Error ขน A. reverse() เรยงคากลมขอมลจากทายสดไปต าแหนงแรกสด A.sort(...) เรยงคากลมขอมลจากนอยไปมาก

ก าหนดคาขอมลเรมตนลงในตวแปร a ทเปนชนด List

ท าการแกไขคาในตวแปร List

Page 54: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวแปรชนด Dictionary

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

ของคาขอมล

ลกษณะองคประกอบ รหสของขอมลทก าหนดเอง : คาขอมลทตองการจดเกบ ชอทางเทคนคใน Python Key : Value ตวอยางคาขอมล 'T100' : 'TV'

ตารางท 3.10 แสดงองคประกอบคาขอมลส าหรบใชกบตวแปรชนด Dictionary

เมอถกน ามาใชรวมกบตวแปรประเภท Sequence ดวยคาขอมล 1 คา แตประกอบดวยรหสและคาขอมล

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

ใสลงไปพรอมกบคาขอมลแทนการใชหมายเลขล าดบ Index ปกตทเราคนเคยกบตวแปร Sequence ชนด Tuple

หรอ List พอเจอเงอนไขขอหลงน กคงไมมทางเลอกทจะตองใชตวแปร Sequence ชนด Dictionary ทเหมาะตอ

การลองรบคาขอมลทมโครงสรางพเศษและเรยกใชงานดวยรหสทมาพรอมกบคาขอมล ส าหรบการเขยนค าสง

ของ Python ทจะก าหนดตวแปรใหเปนชนด Dictionary จะใชเครองหมาย {} รวมกบคาขอมล

a = { 't100': 'TV' 'd200': 'DVD' 'v300': 'VCD' } คาขอมลท 1 คาขอมลท 2 คาขอมลท 3

แสดงการก าหนดคาขอมลทมรหสและคาขอมลในตวเองลงในตวแปร a ซงเปนชนด Dictionary

b = a['d200'] หรอ a.get('d200')

แสดงวธใชงานตวแปร a เมอตองการคาขอมลทเกบไวภายในตวแปร

เนองจากตวแปรชนด Dictionary ใชโครงสรางคาขอมลเปนแบบ Mutable ทมคณสมบตในการเพม,ลบ,และแกไขคาภายในตวแปรโดยการใช Method ของตวแปรชนด Dictionary ชวยในการท างานตาม

คณสมบตตางๆ ดงตาราง 3.11

Key Value

การอาง Key หรอรหสของคาส าหรบการอานขอมล

Page 55: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบ ค าอธบาย d.clear() ลบกลมขอมลภายในตวแปร d ทงหมด d.copy() ส าหรบการ copy กลมขอมลในตวแปร d ไปยงตวแปรอกตวหนง d.fromkeys(s,v) ตรวจหาคา key ของคาขอมลทระบในตวแปร s โดยคา key ทได เกบไวในตวแปร v d.get(k) อานคาขอมลตามคา key ทระบในตวแปร k d.get(k,v) อานคาขอมลตามคา key ทระบในตวแปร k d.items() อานคาขอมลและคา key จากกลมขอมลภายในตวแปร d ทงหมด d.keys() อานเฉพาะคา key ของกลมขอมลภายในตวแปร d.pop(k) อานคาทต าแหนงทตวแปร k ระบ Index ของตวแปร d และลบคาดงกลาวออกจาก

ตวแปร d ดวย d.pop(k,v) อานคาทต าแหนงทตวแปร k ระบ Index ของตวแปร d และลบคาดงกลาวออกจาก

ตวแปร d ดวย d.popitem() อานคาขอมลทต าแหนงแรกสด และลบคาดงกลาวออกจากตวแปร d ดวย d.setdefault(k,v) ก าหนดคาขอมลภายในตวแปร d เปนคา default ส าหรบการอานคาจาก g.get() d.update(a) น าคาในตวแปร a ทเปนชนด Dictionary เชนเดยวกบตวแปร d ไปแกไขขอมลใน

ตวแปร d d.values() อานเฉพาะคาของกลมขอมลภายในตวแปร d ทงหมด

ตารางท 3.11 Method ส าหรบตวแปรชนด Dictionary

ตอไปนเปนการทดลองตวอยางค าสงของตวแปร Dictionary

เปนการใชงานตวแปรโดยการแกไขคาภายในผานรหสปจจบน

Page 56: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยาง การใชตวแปร Dictionary รวมกบกลม Method

สรป ขอแตกตางของตวแปรชนด Tuple, List และ Dictionary ส าหรบการเลอกน าไปใชงานใหเหมาะสมตาม

ลกษณะของคาขอมลทน ามาใชงานรวมกบตวแปรทง 3 ชนด ตามตารางท 3.12 ดงน

ชนดตวแปร

ใชหมายเลข

Index

ก าหนดคยส าหรบขอมล

เพมขอมลส าหรบใชงานตวแปร

แกไขคาขอมลขณะใชงาน

ลบคาขอมลขณะใชงาน

ใชโครงสรางการเกบขอมล

ความเรวในการท างาน

ชนดตวแปรทใชได

Tuple Immutable เรวทสด ทกชนด List Mutable กลาง ทกชนด Dictionary Mutable กลาง ทกชนด

น าคาขอมลจากตวแปร b เพมเขาไปในตวแปร a

ลบคาขอมลทใชรหส(Key) ทมคา 100

ประกาศคาขอมลใหมในตวแปร b

แกไขคาในตวแปร a

ลบทกคาขอมลในตวแปร a

ตาราง แสดงคณสมบตของตวแปรชนด Tuple, List และ Dictionary

Page 57: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การใชโอเปอเรเตอร (Operator) กบตวแปร การพฒนาโปรแกรม เชน a+b,c ^2 เปนตน รปแบบการเขยนค าสงจะประกอบดวยตวแปรชนดตางๆ น ามา

ค านวณรวมกน ส าหรบนกพฒนาโปรแกรมทงหลายจะเหนวาเครองหมายทเกยวของกบการค านวณทเปน

พนฐาน ไดแก

รปแบบการเขยน ความหมาย (ก าหนด A=10,B=5) ตวอยาง A+B ท าการบวกคาในตวแปร A และ B 10 + 5 = 15 A-B น าคาในตวแปร A ลบกบตวแปร B 10 – 5 = 5 A*B คณคาในตวแปร A และ B เขาดวยกน 10 * 5 = 50 A/B หรอ A // B หารคาตวแปร A ดวย B 10/5 = 2 A ^ B ใช xor ระหวางตวแปร A และ B 10 ^ 5 = 2 A % B หาคาเศษจากการหารตวแปร A ดวย B 10 % 5 = 0 A|B ท าการ or ระหวางคาในตวแปร A และ B 10 | 5 = 5 A ** B ยกก าลงคาในตวแปร A ยกก าลงดวย B 10 ** 5 = 100000 A & B ท าการ and ระหวางคาของ A และ B 10 & 5 = 0 A >> B เลอนคาบตในตวแปร A ไปทางขวาดวย B 10 >> 5 = 0 A << B เลอนคาบตในตวแปร A ไปทางซายดวย B 10 << 5 = 320 ~A เปนการ Not กลบคาในตวแปร A ~ 5 -A คาในตวแปร A ตดลบ -10

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

ลกษณะแตกตางกน ยกตวอยางค าสงของ Python ตอไปน

ก าหนดคา 10 และ 20 ลงในตวแปรทเปนชนด Int

ท าการ or คาภายในในระดบบตของตวแปรทง a,b ดวยเครองหมาย |

แสดงผลลพธทเกดจากการ or คาของตวแปร a และ b

ท าการเซตคาในกลมขอมลของตวแปร a และ b ดวยการ Union ดวยเครองหมาย |

Page 58: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จะเหนวา กลมตวแปร a,b,c มการใชเครองหมายโอเปอเรเตอร | เพอท าการ or ขอมลในระดบบต (Bit)

ผลลพธทไดในตวแปร c กเกดจากการ or คาของตวแปร a และ b คราวนมาดกลมตวแปร x,y,z ทใชเครองหมาย

โอเปอเรเตอร | เชนเดยวกบกลม a,b,c ทอธบายไปกอนหนาน เพยงแตวาการใชเครองหมายโอเปอเรเตอร | กบ

ตวแปร x,y,z ทเปนตวแปรประเภท Sequence ชนด List (สามารถจดเกบคาขอมลไดมากกวา 1 คา ภายในตว

แปร) จะอยในรปของการท ายเนยนเซตทางคณตศาสตร (Union Set) ดวยการน ากลมคาขอมลในตวแปร x มาท า

การยเนยนคากบตวแปร y หรอ x u y โดยเกบผลลพธทไดลงในตวแปร z จากทง 2 กรณของกลมตวแปร

a,b,c และกลม x,y,z ทใชเครองหมายโอเปอเรเตอรเดยวกน แตลกษณะการท างานแตกตางกน เพอความงายตอ

การศกษาการใชเครองหมายโอเปอเรเตอรของภาษา Python จะขอแบงออกเปนหวขอยอย ดงน

1. การใชโอเปอเรเตอรกบตวแปรชนดตวเลข (Numeric And Iterable Operator)

2. การใชโอเปอเรเตอรกบตวเลขจ านวนเตมในระดบบต (Integer Bitwise Operator)

3. เซตของขอมลกบการใชโอเปอเรเตอร (Set Operator)

การใชโอเปอเรเตอรกบตวแปรชนดตวเลข (Numeric And Iterable Operator)

การค านวณทางคณตศาสตรนบเปนพนฐานประกอบการเขยนค าสงรวมกบตวแปรหรอคาตวเลข

โดยตรง สวนใหญจะใชโอเปอเรเตอรดานการค านวณ เชน บวก (+), ลบ(-),คณ(*),หาร(/),ยกก าลง(**) ฯลฯ

(กรณตองการท าสตรสมการทซบซอนมากขน เชน การท า Log, ตรโกณมต ซงไมมโอเปอเรเตอรรองรบการ

ค านวณแบบนโดยตรง แตจะใชผานฟงกชนภายในทเกยวกบการค านวณมาตรฐานทวไป เพยงแตเมอใดกตามท

จะใชฟงกชนภายในเหลานกอยาลมอางองถงโมดลทชอวา Math หรอการ Import Math กอนเรยกใชงานฟงกชน

เสมอ) ตอไปนเปนตวอยางเกยวกบโอเปอเรเตอรดานการค านวณดงตวอยางตอไปน

ตวอยางท 1

Page 59: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

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

กระบวนการค านวณเหมอนกนตามตารางดานลาง แสดงรปแบบวธใชเครองหมายโอเปอเรเตอรกบการค านวณ

Numeric Operator Iterable Operator A = A + 1 A += 1 A = A * 1 A *= 1 A = A / 1 A / = 1 A = A - 1 A -= 1 A = A ** 2 A **= 2 A =A %3 A %= 3

ตารางแสดงรปแบบการใชงานเครองหมายโอเปอเรเตอรส าหรบการค านวณ

รปแบบ ค าอธบาย

s + t ถาหากตวแปร s และ t มคาขอมลทเปนชนดขอความหรอ Sequence จะเปนการเชอมตอระหวางกลมขอมลเขาดวยกน

s * n ถาคาขอมลในตวแปรเปนชนดขอความหรอ Sequence จะเปนการเชอมตอดวยคาขอมลของตวแปรซ าๆ กนตามจ านวนของตวแปร n

x in i น าคาในตวแปร I สบคนภายในคาขอมลตวแปร x ซงผลลพธจะใหคาเจอ(True) หรอไมเจอ (Flase)

all(i) กลมค าขอมลทกๆ ค าในตวแปร i จ าเปนตองมตรรกะเปนจรง (True) ผลลพธของฟงกชนจะได True เปนค าตอบ (เหมอนค าสง if ใชคกบ and) ตวอยาง i=10 j=3 all([i>2,j>2]) ผลลพธ True

any(i) กลมค าสงขอมลทกๆ คาในตวแปร i คาใดคาหนงมตรรกะเปนจรง (True) ผลลพธของฟงกชนจะได True เปนค าตอบ (เหมอนค าสง if ใชคกบ or) ตวอยาง i=30 j=30 any([i>2,j>10]) ผลลพธ True

Page 60: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบ ค าอธบาย enumerate(i,start) แสดงล าดบ Index คกบกลมคาขอมลในตวแปร i

ตวอยาง i = [‘L’,’O’,’M’] for r,v in enumerate(i): print(r,v) ผลลพธ 0 L 1 O 2 M

len(x) อานจ านวนตวอกษรในตวแปร x หรอจ านวนกลมคาตวขอมลในตวแปร x ทเปนชนด Sequence

max(i,key) บอกคา key ทมากทสดในตวแปร i ทเปนชนด Sequence min(i,key) บอกคา key ทนอยทสดในตวแปร i ทเปนชนด Sequence rang(start,stop,step) ท าการนบจ านวนตวเลขโดยเรมจาก Start และสนสดท Stop ซงผลลพธทไดจะแสดงคา

ออกมา reversed(i) อานคากลมขอมลในตวแปร i ทเปนชนด Sequence จากทายสดมาหนาสด

ตวอยาง

Sorted(i, key, reverse) เรยงคาขอมลในตวแปร i sum(i,start) หาคาผลรวมในตวแปร i ทเปนชนด Sequence ****(a,…,b) ก าหนดล าดบระหวางคาขอมลทเกดจากกลมตวแปร a ถง b

ตารางแสดงรปแบบการใชโอเปอเรเตอรและฟงกชนส าหรบขอมลชนด Sequence

Page 61: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 2 ทดลองพมพค าสงการใชสมการพทาโกรส รป004 ส าหรบการค านวณหาความยาวของดานตรง

ขามมมฉาก โดยการปอนคา a และ b ผานคยบอรด และท าการแสดงผลลพธ

การใชโอเปอเรเตอรกบตวเลขจ านวนเตมในระดบบต (Integer Bitwise Operator)

เครองหมายโอเปอเรเตอรในระดบบตมกนยมน ามาใชกบเลขฐานสอง (Binary) ส าหรบการค านวณ

ทางดานพชคณตบลน (Boolean) ซงประกอบดวยการ and, or, xor และ Not (Invert) เปนตน เมอน ามาเขยนเปน

ค าสงรวมกบภาษา Python จะใชเปนเครองหมายโอเปอเรเตอรกบตวแปรทเปนชนดตวเลขจ านวนเตมดงตาราง

รปแบบ ค าอธบาย i | j จะไดผลลพธทเกดจากตรรกะการ or จากคาในตวแปร i และ j ทเปนชนด Int i ^ j จะไดผลลพธทเกดจากตรรกะการ xor จากคาในตวแปร i และ j ทเปนชนด Int i & j จะไดผลลพธทเกดจากตรรกะการ and จากคาในตวแปร i และ j ทเปนชนด Int i << j ผลลพธจากการเลอนคา bit ไปทางซาย 1 คา คลายกบการค านวณจากสมการ i*(2**j)) i >> j ผลลพธจากการเลอนคา bit ไปทางขวา 1 คา คลายกบการค านวณจากสมการ i*(2**j)) ~ i จะไดผลลพธทเกดจากตรรกะการ Not

ตารางแสดงการใชโอเปอเรเตอรกบเลขจ านวนเตมในระดบบต

เปนการก าหนดรปแบบการค านวณทางพชคณตบลนของ Python เพอใหเกดความเขาใจตอการใชงาน

โอเปอเรเตอรทางพชคณตบลน ดงตวอยางตอไปน

Page 62: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

อธบายค าสง

a,b = 5,3

print (a|b)

print (a,b)

a |=b <--- ท าการ or คาบตของ a กบ b แลวเกบผลลพธทไดไวใน a สงเกตการณใชเครองหมาย

โอเปอเรเตอร or คกบเครองหมายเทากบ (=)

print (a)

a,b = 5,3

print (a&b) <--- ท าการ and คาบตระหวางตวแปร a และ b

print (a,b)

a &= b <--- ท าการ and คาบตของตวแปร a,b แลวเกบผลลพธทไดไวในตวแปร a

print (a)

print (a,b)

a = 2 <--- ก าหนดคา a=2 หรอ 0010 ฐานสอง

print (a>>1) <--- ใชโอเปอเรเตอร >> ส าหรบเลอนคาบตไปทางขวาตามจ านวนบตทระบ เชน a>>1 แสดง

ถงการเลอนคาบตไปทางขวา 1 ครง

Page 63: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

อธบายค าสง

a,b = 5,3

print(a)

a >>= 1 <--- เมอเพมเครองหมายเทากบตอทายเครองหมายโอเปอเรเตอร >> เพอตองการเกบผลลพธ

ทเกดจากเลอนคาบตไวในตวแปร a ดงนนคาในตวแปรจะเปลยนไปจากคาเดม

print(a)

a = 2

print(a<<1) <--- ท าการเลอนคาบตในตวแปร a ไปทางซายมอ 1 ครง โดยไมเกบผลลพธทเกดจากการ

เลอนคาบต

print(a)

a <<= 1 <--- เมอเลอนคาบตไปทางซาย 1 ครง และใหเกบผลลพธทเกดจากการเลอนไวในตวแปร a

print(a)

a,b = 7,8

print(a^b) <--- ท าการ xor คาบตในตวแปร a ดวยคาในตวแปร b

print(a,b)

a ^= b <--- หลงท าการ xor ในตวแปร a กบ b จะเกบผลลพธทไดลงในตวแปร a

print(a,b) <--- คาตวแปร a จะเปลยนไปจากเดม

Page 64: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เซตของขอมลกบการใชโอเปอเรเตอร (Set Operator)

ใน Python มตวแปรประเภท Sequence ทประกอบดวย Tuple,List และ Dictionary ทมความสามารถในการจดเกบคาขอมลชนดตางๆ เปนกลมเปนกอนลงในตวแปรประเภท Sequence ได

รปแบบ ค าอธบาย s.add(x) เพมคาขอมลในตวแปร s ดวยคาของตวแปร x s.clear() ลบกลมคาขอมลทงหมดของตวแปร s s.copy() ใชส าหรบการ copy กลมคาขอมลทงหมดของตวแปร s ใหกบตวแปรอนๆ s.difference(t) s-t

เปนฟงกชนทแสดงกลมคาขอมลทมความแตกตางของตวแปร s และ t โดยแสดงผลลพธสวนทแตกตางของตวแปร s เทานน

s. difference_update(t) s-=t

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

s.discard(x) ลบคาขอมลในตวแปร s ดวยคาขอมลของตวแปร x s.intersection(t) s&t

เปนฟงกชนทแสดงกลมคาขอมลทเหมอนกนของตวแปร s และ t โดยแสดงผลลพธสวนทเหมอนกนของตวแปร s เทานน

s. intersection_update(t) s&=t

เปนฟงกชนทแสดงกลมคาขอมลทเหมอนกนของตวแปร s และ t โดยแสดงผลลพธสวนทเหมอนกนของตวแปร s เทานนและจดเกบคาผลลพธลงในตวแปร s

s.sclisjoint(t) แสดงผลลพธเปน True เมอตรวจคากลมขอมลในตวแปร s และ t ไมมกลมขอมลใชรวมกน

s.issubset(t) s<=t

แสดงผลลพธเปน True เมอตรวจคากลมขอมลในตวแปร s และ t ทเปนลกษณะ subset

s.issuperset(t) s>=t

แสดงผลลพธเปน True เมอตรวจคากลมขอมลในตวแปร s และ t ทเปนลกษณะ superset

s.poop() ลบคาขอมลทต าแหนงทายสดของตวแปร s s.remove(x) ลบคาขอมลในตวแปร s ดวยคาขอมลของตวแปร x ถาไมเจอจะเกดขอผดพลาดใน

กลมของ Key Error s.symmetric_difference(t) s^t

เปนฟงกชนทแสดงกลมคาขอมลทมความแตกตางของตวแปร s และ t

s.symmetric_difference_ update (t) s^=t

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

Page 65: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบ ค าอธบาย s.union(t) s|t

เปนฟงกชนทแสดงกลมคาขอมลทมทงหมดของตวแปร s และ t

s.update(t) s|=t

เปนฟงกชนทแสดงกลมคาขอมลทมทงหมดของตวแปร s และ t โดยจดเกบคาผลลพธลงในตวแปร s

ตารางแสดงรปแบบการใชโอเปอเรเตอรและฟงกชนส าหรบขอมลชนด Set

แตถาตองการน ากลมขอมลเหลานนมาท างานแบบเขต ภาษา Python กมฟงกชนเซต (Set Function)

ส าหรบท างานกบคาในตวแปรประเภท Sequence โดยทฟงกชนเซตแบงออกเปน 4 ชนดยอย ไดแก

1. ฟงกชนยเนยน (Union) ใชเครองหมายโอเปอเรเตอรคอ |

2. ฟงกชนอนเตอรเซกชน (Intersection) ใชเครองหมายโอเปอเรเตอรคอ &

3. ฟงกชน Difference ใชเครองหมายโอเปอเรเตอร คอ -

4. ฟงกชน Symmetric Difference ใชเครองหมายโอเปอเรเตอรคอ ^

รปแบบการเขยนค าสงส าหรบการใชฟงกชนเซตกบตวแปร Python จะมลกษณะตามรปตวอยาง

ดานลางจะแสดงผลลพธทเกดจากการใชฟงกชนเซตแตละชนดรวมกบตวแปร

รปแสดงรปแบบและการเขยนฟงกชนเซตรวมกบตวแปร

ชนดของฟงกชนเซต รปแบบการเขยน ผลลพธ Uninon set(‘earth’) | set(‘mar’) ‘a’,‘e’, ‘h’, ‘m’, ‘r’, ‘t’ intersection set(‘earth’) & set(‘mar’) ‘a’, ‘r’ Difference set(‘earth’) – set(‘mar’) ‘h’,‘e’, ‘t’ Symmetric Difference set(‘earth’) ^ set(‘mar’) ‘h’, ‘m’, ‘r’, ‘t’

ตารางแสดงการใชงานฟงกชนเซตแตละชนด

Page 66: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

อธบายค าสง

a='earth'

b='mar'

print(set (a) | set(b)) <--- ฟงกชนเซตชนดยเนยน

print(set (a) & set(b)) <--- ฟงกชนอนเตอรเซกชน

print(set (a) - set(b)) <--- ฟงกชนชนด Difference

print(set (a) ^set(b)) <--- ฟงกชนเซตชนด Symmetric Difference

ตวอยางท 2 การใชฟงกชนเซตกบตวแปรประเภท Sequence

สมมตวามรานขายของ 2 สาขา ทมสนคาหนารานบางรายการเหมอนกน และบางรายการกตางกนคราวนลองมาใชฟงกชนเซตชนดตางๆ ชวยงานเกยวกบสนคา ดงน

Page 67: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การก าหนดขอบเขตการใชงานตวแปรในโมดล

การเขยนโปรแกรมส าหรบพฒนางานตางๆ ดวยภา Python มกนยมเขยนกลมค าสงตางๆ ลงในโมดล (ท าการเปดโมดลใหม โดยการเลอกเมน File แลวตามดวยการเลอกเมน New บนจอภาพจะปรากฏหนาจอใหม

ส าหรบเขยนโปรแกรมขนมา ส าหรบโครงสรางโมดลของ Python ประกอบดวยอะไรบาง ไดอธบายไวในบทท

2 ) สงหนงทตองใหความสนใจกบการใชงานตวแปรในโมดลทเขยนคอ การก าหนดขอบเขตการใชงานตวแปรภายในโมดล เนองจากโครงสรางในโมดลจะแบงออกเปน 4 สวน ตามรปดานลาง

รปแสดงโครงสรางของโมดลส าหรบเขยนค าสงตางๆ

สวนท2,3 และ 4 ของโครงสรางโมดล มกเปนสวนทเกยวกบการใชงานตวแปรของโปรแกรม โดยสวนใหญเรามกประกาศตวแปรในสวนท 2 ซงจะมขอบเขตทตวแปรจะถกเรยกน าไปใชงานไดในสวนท 3 และ 4

ของโมดล

รปแสดงขอบเขตการก าหนดและเรยกใชงานของตวแปรภายในโมดลของ Python

เขยนค าสงตามตวอยาง (เปดโมดลใหม Python Shell โดยการเลอกเมน File เลอกเมนยอยทชอ New)

บรรทดท 1 Import math ในสวนท 1 อางองโมดล math จากภายนอกมาใชในโมดลน

บรรทดท 2 บรรทดท 3 บรรทดท 4

a = 100 b = ‘แชมพ’ c = ‘2 ขวด’

ส าหรบสวนท 2 ไดก าหนดตวแปร a,b,c เพอใชงานในโมดลน

บรรทดท 5 บรรทดท 6

def orderme(): print(‘อยากสง %s เพมจง’ %b)

เปนสวนท 3 ส าหรบฟงกชนทชอ orderme ซงมการเรยกใชตวแปรจากสวนท 2 คอ b มาใชรวมกบค าสงอนๆ ภายในฟงกชน

Page 68: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บรรทดท 7 บรรทดท 8 บรรทดท 9 บรรทดท 10

print(‘รหส %d’ %a) print(b,c) print(‘รหส %d สง %s จ านวน %s’ %(a,b,c)) orderme()

สวนท 4 ซงเปนจดเรมตนการท างานของโปรแกรม และเรยกใชงานตวแปร a,b,c จากสวนท 2

ตวอยางการเขยนค าสง

จากตวอยางจะเหนไดถงวธก าหนดตวแปรในโมดล และวธเรยกใชตวแปรทก าหนดขนในสวนตางๆ ของโมดล ขอบเขตการใชงานตวแปร ในบางกรณจ าเปนตองระบคยบอรด (Keyword) ทชอวา Global เพมเตม

ลงไปในโพรซเจอรหรอฟงกชน อาจจะมการก าหนดตวแปรแบบ Local เพอใชงานเฉพาะภายในโพรซเจอร

หรอฟงกชนเทานน สงเกตไดจากตวอยางดานลาง

ตวอยางท 1 แสดงวธก าหนดและใชงานตวแปรแบบ Local ในฟงกชน test

Page 69: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

อธบายค าสง

a = 95 <--- ก าหนดตวแปร a ในสวนท 2 ของโมดล

def test(): <--- สรางฟงกชน test ในสวนท 3 ของโมดล

c=7

print('a = %d, c= %d' %(a,c))

print(a) <--- เปนจดเรมตนเขยนค าสงตางๆ ในสวนท 4 ของโมดล โดยบรรทดนจะพมพคาในตวแปร a ท

ก าหนดในสวนท 2

test() <--- เรยกฟงกชน test มาใชงาน

print(a) <--- พมพคาตวแปร a ทก าหนดในสวนท 2

จากตวอยางท 1 จะเหนวาในฟงกชน test มการก าหนดตวแปรภายในทชอ c ส าหรบใชงานเฉพาะใน

ฟงกชนเทานน และในฟงกชนนกยงใชงานตวแปร a ของโมดลน โดยการพมพคาตวแปร a ดวยค าสง print

ตวอยางท 2 แสดงการก าหนดตวแปรแบบ Local ในฟงกชน test ทมชอตวแปร a ของโมดล และ ตวแปรชอ a

ของฟงกชน test เหมอนกน เพอดผลลพธทเกดขน

อธบายค าสง

a=85 <--- ก าหนดตวแปร a ในสวนท 2 ของโมดล

def test(): <--- สรางฟงกชน test ในสวนท 3 ของโมดล

c=3 <---

a=65 ก าหนดตวแปรภายในทชอ a และ c ทใชเฉพาะในฟงกชนนเทานน ซงตว

แปรภายใน a ทก าหนดในฟงกชนน จะไมใชตวเดยวกนกบตวแปร a ของโมดลทประกาศในสวนท 2

Page 70: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

print(a,c) <--- พมพคาตวแปร a และ c ซงตวแปรทง 2 ตวจะใชงานเฉพาะฟงกชนนเทานน

print(a) <--- จดเรมตนของค าสงในโปรแกรมน จะท าการพมพคาในตวแปร a ของโมดล

test() <--- เรยกฟงกชนในสวนท 3 ของโมดลน

print(a)

จากตวอยางท 2 การก าหนดตวแปรทชอ a จะม 2 ตวแปรโดยตวแปร a ตวแรกจะถกก าหนดในสวนท 2

ของโมดล ซงมขอบเขตการใชงานตวแปรตวนไดทกทในโมดลน ตวแปร a ตวทสองถกก าหนดภายในฟงกชน

test ไดมการตงชอตวแปรซ ากบตวแปร a ตวแรก ภายในฟงกชน test เมอมการเรยกใชตวแปรทชอ a ฟงกชน test จะเรยกใชตวแปรภายใน a ตวทสองเสมอ

ตวอยางท 3 แสดงการใชตวแปร a ของโมดล รวมกบฟงกชน test โดยใชคยเวรด Global

รปแสดงขอความผดพลาดทเกดจากการน าตวแปร a ของโมดลมาใชค านวณภายในฟงกชน test

อธบายค าสง

a=85 <--- ก าหนดตวแปร a ในสวนท 2 ของโมดลน

def test(): <--- สรางฟงกชน test ในสวนท 3 ของโมดลน

a = a + 55 <--- เรยกใชตวแปร a ของโมดลมาท าการค านวณในฟงกชน test

print(a)

print(a) <--- จดเรมตนของค าสงในโมดลน ซงอยในสวนท 4

test()

print(a)

ผลลพธจากการท างานของโปรแกรมในตวอยางท 3 จะเกด Error ดงทปรากฏในรปดานบน ในฟงกชน test บรรทดทเปนการ

ค านวร a = a + 85

Page 71: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 4 การตรวจสอบเงอนไข

ลองนกภาพการใชงานโปรแกรมสมครสมาชกรานกาแฟ ทในชองอายของสมาชกมความจ าเปนตองกรอกจ านวนตวเลขเทานน เพอน าไปจดเกบลงบนทกเขาสระบบฐานขอมล ดแลวกนาจะเปนการใชงานทราบรนตามขนตอนการใชงานโปรแกรมทวไป แตเผอญผใชงานมนถอไปนด หนงปอนเปนคา a7 ลงในชองอาย ลกคากรบๆ เพลงใหผใชงานรบท างานใหเสรจผใชงานจงไมไดตรวจสอบความถกตองของขอมลทกรอกไวบนจอภาพกอนท าการบนทกลงในฐานขอมล คดดวาอะไรจะเกดขนกบขอมลในชองอาย ทตองเปนตวเลข ถาโปรแกรมเมอรเขยนโปรแกรมไวดกจะมการตรวจสอบขอมลตามชองกรอกขอมลวาถกตองหรอเปลา แลวแจงเตอนผใชงานใหแกไขใหถกตองจะเหนวาพนฐาน 1 ในการเขยนโปรแกรมไมวาจะเขยนดวยภาษาใดหรอแมแตภาษา python กจะตองมค าสงตรวจสอบเงอนไขเพอน ามาใชแกไขปญหาตามทยกตวอยางโปรแกรมรานกาแฟกบการปอนอายเปนตนซงสวนใหญค าสงตรวจเงอนไขวง ได (python conditional branching) มกจะใชเปนค าสง If ( If statement) โดยจะมวธการเขยนตามรปแบบดงน

If เงอนไข :

{ else :

{

ค าวา “เงอนไข” ทเหนในรปแบบของค าสง if (ซงสวนใหญ Python จะเรยกวา Comparson) ขางตน พดงายๆ กคอการเปรยบเทยบสงทตองการตรวจสอบนนเอง เชน คาในชองอาย == ตวเลขอยางเดยว (จากตวอยางทเลาเรองในตอนตนของบทน เมอตองการสรางเงอนไขส าหรบการตรวจสอบชองอาย) หรอตองการตรวจคาในตวแปร a มคาตวเลขเกน 1500 หรอเปลา วธเขยนเงอนไขเพอตรวจสอบคอ a > 1500 ลงในค าสง if หลงจากการทดสอบตามเงอนไขทระบ ค าสง if จะบอกผลลพธทไดเปน 2 ลกษณะ คอ

1. ผลลพธเปนไปตามเงอนไขหรอคาทเปนจรง (True) 2. ผลลพธไมตรงกบเงอนไขทตรวจสอบหรอไดผลเปนเทจ (False)

ชดค าสง ท าเมอตรงกบเงอนไข

ชดค าสง ท ากรณทไมตรงกบเงอนไข

Page 72: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธเปนไปตามเงอนไขหรอคาทเปนจรง (True)

แสดงการทดสอบเงอนไขของต าสง if และชดค าสงทตองท างานเมอเงอนไขเปนจรง

ผลลพธไมตรงกบเงอนไขทตรวจสอบหรอไดผลเปนเทจ (False) แสดงเสนทางการทดสอบเงอนไขทเปนเทจ และเรมกระบวนการท างานในชดค าสงหลงค าสง else ซงเปน

พนทของกลมค าสงเมอการทดสอบเปนเทจ

เมอมองดรปแบบการสรางเงอนไขเชน a > 4 จะมการใชเครองหมายทางดาน Operator ส าหรบการเปรยบเทยบ (comparison มาประกอบรวมกบคาขอมลทตองการเปรยบเทยบในทนคอตวแปรและตวเลข 4 ส าหรบการตรวจสอบเงอนไขวาคาในตวแปร a มากกวาคาตวเลข 4 หรอไม) ลกษณะของการเลอกใชเครองหมาย Operator ส าหรบการเปรยบเทยบเงอนไขแบงออกเปน 4 รปแบบดงน

1. เครองหมายส าหรบเปรยบเทยบหาคาขอมลทเทากน ( Equality comparison operation) เชน a== 10, B== c ฯลฯ จะใชเครองหมายเทากบ ( แตเขยน 2 ครงตดกนตามตวอยาง)ในการสรางเงอนไข

2. เครองหมายในการเปรยบเทยบคาขอมลทไมเทากน (Not Equality comparison operation) จะใช ! = รวมกบคาขอมลทตองการเปรยบเทยบเชน a!=10 (คาขอมลในตวแปร a ไมเทากบคาตวเลข 10 ใชหรอไมเปนตน

ชดค าสงทจะท างาน

เมอเงอนไขเปนจรง

หลงการทดสอบปรากฏวา a มคา

มากกวา 4 เงอนไขททดสอบเปนจรง

a = 5

if a > 4

print (‘ใชคาใน a มากกวา 4’ )

else Print(‘คาใน a นอยกวา 4’)

a = 0

ผลทดสอบทไม

ตรงตามเงอนไข

If a > 4 : ท าการตรวจสอบคา a ดวยเงอนไข a > 4

Print(‘ใชคาใน a มากกวา 4’)

else : print(‘คาของ a นอยกวา 4’)

ชดค าสงทตองท างานเมอผลทดสอบ ไมตรงตามเงอนไข a = 4

Page 73: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

3. เครองหมายเปรยบเทยบคาขอมลมากกวาหรอนอยกวา (Greater Than and Less Than Comparison Operation) ใชเครองหมาย > (มากกวา), < (นอยกวา), >= (มากกวาหรอเทากบ), <= (นอยกวาหรอเทากบ)

4. Not กบการท าหนาทในการเปรยบเทยบ (Not Comparition operation) โอเปอเรเตอรนเหมาะกบการน ามาใชงานกบคาขอมลทเปน True หรอ False ดวยการท างานของ โอเปอเรเตอร not จะเปลยนคาขอมลไปในทางตรงกนขามเชนถาคาในตวแปร A มคาเปน True เมอน า โอเปอเรเตอร not มาใชกบตวแปร a หรอ not a ผลลพธจะไดคา false ดวยเหตนถาขอมลทจะน ามาใชกบ โอเปอเรเตอร not ตองม2สถานะเสมอคอ True และfalse

จะเหนไดวาลกษณะการใชโอเปอเรเตอรการเปรยบเทยบของภาษา Python จะมการใชงานเหมอนภาษาโปรแกรมอนๆตามมาตรฐานทวไปจงงายตอการเรยนรรปแบบการเขยนและการท างาน

ตารางสรปการใชเครองหมายโอเปอเรเตอรเปรยบเทยบ

โอเปอเรเตอร ความมาย ตวอยาง ผลลพธ

== เทากบ A == 10 จะไดคา True กตอเมอตวแปร A มคาเปน 10 เทานน

> มากกวา A > 3 ถาคาขอมลในตวแปร A มคาตงแต 4 ขนไปจะไดผลลพธเปน True

>= มากกวาหรอเทากบ A >=3 ผลลพธจะเปน True ตงแตคาในตวแปรมคาเปน 3 ขนไป

< นอยกวา A < 2 จะเปน True เมอคาขอมลในตวแปร A มคาเปน 1 หรอนอยกวา 1 เสมอ

<= นอยกวาหรอเทากบ A <= 2 เมอไรคาขอมลในตวแปร A มคาเปน 2

!= ไมเทากบ A! = 10 จะไดผลลพธเปน True ตราบใดทคาขอมลใน A ไมเทากบ 10

not ตรวจคาตรงกนขามระหวาง True กบ False

Not A

Page 74: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ทดลองเขยนค าสงและสงเกตผลลพธทไดจากการท างานตามตวอยางตอไปนใน Python Shell ตวอยางท 1 โอเปอเรเตอรเปรยบเทยบส าหรบทดสอบคาทเทากน >>> a=100 >>> b=50 >>> a==b ตรวจคาในตวแปร a และ b เทากนหรอไม >>> b=100 แกไขคาใน b เปน 100 >>> a==b ตรวจคาใดตวแปรทง 2 ตวอกครง >>> a='TV' >>> b='VCD' >>> a==b >>> b='tv'

Page 75: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

>>> a==b >>> b='TV' >>> a==b >>> a=['TV SONY','TV LG'] >>> a==b >>> print(a[0]) >>> a[0]==b >>> print(a[0][:2]) ตดค าวา TV จาก TV SONY ซงไดจากตวแปร a [0] >>> a[0][:2]==b น าค าวา TV ใน a[0] [:2] มาเปรยบเทยบกบตวแปร b ตวอยางท 2 โอเปอเรเตอรเปรยบเทยบมากกวาและนอยกวา >>>a = input (‘ปอนคาตวเลขอะไรกได’) >>>a = int(a) >>>a > 50 ตรวจคาในตวแปร a มคามากกวา 50 หรอเปลา >>>a = ‘d’ >>>b = ‘D’ >>>a > b >>> a = ‘ปลาท’ >>> b = ‘ปลาท’ >>>a > = b ภาษาไทยไมคอยมปญหาเรองตวอกษรเลกหรอใหญ >>>a = ‘PASSWORD’ >>>b = ‘password’ >>>a >= b >>>a.lower() >= b >>>a = 1 >>>a < 2 คาในการเปรยบเทยบคอ 1 < 2 >>>a = 2

นาแปลกท TV ตวอกษรตวใหญในตวแปร a ไมเทากบ tv ของตวแปร b เนองจากเปนจาก

เปนการเปรยบเทยบดวยรหส ASCll หรอ Unicode ของตวอกษร

แปลงคาในตวแปรทรบคาจากฟงกชน Input (ซงจะเปนขอมลชนด String เสมอ) ใหเปน

ตวเลขชนดจ านวนเตมหรอ Integer ผานฟงกชนแปลงชนดทชอ Int

ตรวจคาในตวแปร a และ b ดวยโอเปอเรเตอร > (มากกวา) กระบวนการเปรยบเทยบจะน าคา ‘d’ ตวอกษรตวเลก และ ‘D’ ตวอกษรตวใหญไปถอดเปนรหส ASCll หรอ Unicode แลวน า

รหสมาเปรยบเทยบกน

ใชฟงกชน Lower แปลงคาตวอกษรในตวแปร a ใหเปนตวอกษรตวเลกทงหมด แลวคอยน าไปเปรยบเทยบกบตวแปร b

Page 76: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

>>> a < 2 คาทใชทดสอบคอ 2 < 2 >>> a <= 2 ลองใหมกบการใช <= ดวยคา 2<=2 >>> a = 1 >>> a > 2 ทดสอบคามากกวาดวย 1 > 2 >>> a = 2 >>> a > 2 ดการทดสอบเมอ a มคาเปน 2 ดวย 2 > 2 >>> a >= 2 เมอใช >= กบคา 2 >= 2 อะไรจะเกดขน

Page 77: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 3 โอเปอเรเตอรเปรยบเทยบกบการทดสอบคาทไมเทากน >>> a='TV' >>> b='tv' >>> a!=b TV ตวอกษรพมพใหญไมเทากบ tv ตวอกษรตวพมพเลกใชหรอไม >>> a=10 >>> b=7 >>> a!=b 10 ไมเทากบ 7 ใชไหม

ตวอยางท 4 โอเปอเรเตอรเปรยบเทยบกบ Not >>> a=True >>> not a >>> b=False >>> a==b เปรยบเทยบคาใน a และ b >>> not a==b >>> 10>7 ผลลพธจากการเปรยบเทยบจะได True เพราะเงอนไข 10>7 เปนจรง >>> not 10>7

ใช not a ส าหรบกลบคาใน a จาก True ใหเปน False แลวคอยน าไปเปรยบเทยบกบ b

กระบวนการจะเรมจากการเปรยบเทยบ 10 > 7 เพอใหไดผลลพธจากการ

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

Page 78: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

หลงจากท าความเขาใจการก าหนดเงอนไขดวย Operator ดานการเปรยบเทยบเมอตองน านนไขมาประกอบการเขยนรวมกบค าสง If โดยผลลพธของค าสง if มม 2 สถานะเมอตรวจสอบตรงตามเงอนไขจะไดสถานะเปน True และไดสถานะเปน false เมอการตรวจสอบไมตรงตามเงอนไขซงจะมการระบการกระท าส าหรบแตละสถานะของผลลพธตามโครงสรางของค าสง If แตงรปแสดงเสนทางการกระท าของผลลพธทเกดจากการตรวจสอบเงอนไข(ภายใตโครงสรางของค าสง If จะมวธก าหนดพนทยอยโดยแบง indent ของค าสงยอย ซงไดกลาวไวในบทท 2 เกยวกบการก าหนดกลมค าสงยอยภายใตค าสงหลก)

การเขาถงพนทของกลมค าสงยอยภายใตค าสง If ซงจะแบงออกเปน 2 พนทคอพนทของกลมค าสงยอยเมอผลลพธของการตรวจสอบเงอนไขมสถานะเปนจรง ( True) และพนทของกลมค าสงยอยทจะท างานไดกตอเมอผลการตรวจสอบเงอนไขไมตรงตามทก าหนดของเงอนไขหรอไดสถานะเปนเทจ (False) ค าสง If

เมอตองน าค าสง If มาใชรวมกบการเขยนโปรแกรม python จะมรปแบบทนกพฒนาโปรแกรมนยมเขยนอย 4 รปแบบ ตามเหตการณของการตรวจสอบเงอนไขดงนทมนคด

1. การใชค าสง If ตรวจสอบเงอนไขและท างานกลมค าสงยอย เมอการตรวจสอบเงอนไขเปนจรง ( True) เทานน

2. การใชค าสง If รวมกบ elif ส าหรบตรวจสอบเงอนไขและท ากลมค าสงยอย เมอผลลพธการตรวจสอบเปนจรง ( True) เทานน

3. การใชค าสง If ทมลกษณะการตรวจสอบเงอนไขแบบสอนกน (Nested) 4. การใชค าสง If รวมกบค าสง else

Page 79: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เสนทางการท างานเมอการตรวจสอบเงอนไขเปนจรง( True) a = 10 if a = = 10: else : print(‘พมพคาของ a = %d’ %a) print(‘คาของ b= ‘%d’ %b)

เสนทางการท างานของค าสง If เมอการตรวจสอบเปนเทจ Fasle a = 1 if a = = 10: else : print(‘พมพคาของ a = %d’ %a) print(‘คาของ b= ‘%d’ %b)

พนทของกลมค าสงยอยจะท างานเมอเงอนไขทตรวจสอบตรงตามเงอนไขหรอมสถานะเปน True

พนทของกลมค าสงยอยจะท างานกตอเมอการตรวจสอบไม

ตรงตามเงอนไขทก าหนด โดยมสถานะเปน False

พนทของกลมค าสงยอยจะท างานเมอเงอนไขทตรวจสอบ

ตามเงอนไขหรอมสถานะเปน True

พนทของกลมค าสงยอยจะท างานกตอเมอการตรวจสอบไม

ตรงตามเงอนไขทก าหนดโดยมสถานะเปน false

Page 80: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การใชค าสง if ตรวจสอบเงอนไข และท างานกลมค าสงยอย เมอการตรวจสอบเงอนไขเปนจรง ( True) เทานน การใชค าสง If ตรวจสอบเงอนไข และท างานกลมค าสงยอย เมอการตรวจสอบเงอนไขเปนจรง ( True) เทานน a = 10 if a == 10: ทดลองพมพการใช if ตามรปแบบท 1 ลงในโมดลของ Python (ใน Python shell เลอกเมน file คลกเมนยอยทชอวา New เพอเปดโมดลของ Python) a = {'STV50' : 'TV SONY 50 นว', 'LG100' : 'TV LG', 'SCD' : 'VCD SONY', 'TDVD' : 'SAMSUNG DVD'} b = input('ปอนรหสสนคา TV SONY : ') if a[b] == 'TV SONY 50 นว': print('ยงมสนคา TV SONY ในโกดง 10 เครอง') print('\n ตองการเบกตดตอฝายคลง') b = input('ปอนรหสสนคา VCD SONY : ') if a[b] == 'VCD SONY': print('สนคาอยระหวางจดสงมายงโกดง') print('\n อก 2 วนจะมาถง สามารถสงของ') print('\n ลวงหนาไดเลย')

พนทกลมค าสงยอยเมอตรวจสอบเงอนไข ตรงตามท

ก าหนดในค าสง If หรอมสถานะจรง (True)

Page 81: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การใชค าสง if รวมกบ elif ส าหรบการตรวจสอบเงอนไขและการท างานกลมค าสงยอย เมอผลลพธการตรวจสอบเปนจรง (True)

มรปแบบการเขยน ดงน A = 10 If a == 10: ท าค าสงยอยในพนทนเมอคาในตวแปร a มคาเทากบ 10 Elif a == 100: ท าค าสงยอยในพนทนเมอคาของตวแปร a มคาเทากบ 100 Ekif a > 200: ท าค าสงยอยในพนทนเมอคาของตวแปร a มคามากกวาหรอเทากบ 200 Elif a < = 0 : ท าค าสงยอยในพนทนเมอคาในตวแป a นอยกวาหรอเทากบ 0

ถาหากมโจทยทตองการตรวจคาในตวแปร a โดยมเงอนไขและการกระท าเมอการตรวจสอบเงอนไขเปนจรองทแตกตางกน ดงเชนตวอยางขางตน การตรวจสอบคาในตวแปร a จะมถง 4 ครง สงเกตจากการใชค าสง if และ elif ตรวจสอบเงอนไขและมการท างานของกลมค าสงยอยของใครของมน เมอผลลพธ

Page 82: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การตรวจสอบมสถานะเปนจรง จ านวนของค าสง if + elif กคอ จ านวนของความตองการทตรวจสอบคาในตวแปร a นนเอง เสนทางล าดบการตรวจสอบคาในตวแปร a เมอผลการทดสอบเปนเทจทงหมด a = 9 if a == 10: Print('a มคาเปน 10 จรง') elif a == 100: Print('a มคา') elif a >= 200: print('มคามากกวา 200') print('จบขนตอนการตรวจคา a') print('ท าค าสงอนๆ ตอไป')

เสนทางล าดบการตรวจสอบคาในตวแปร a เมอผลการทดสอบเปนจรง a = 100 if a == 10: print('a มคาเปน 10') elif a == 100: print('a มคา 100') elif a >= 200: print('a มคามากกวา 200') print('จบการทดสอบ') print('ท าค าสงอนๆ ')

ดานซายแสดงลกษณะการท างานของรปแบบการเขยนค าสง if + elif เมอผลลพธการตรวจสอบเปนเทจทงหมด และทางดานขวาแสดงการท างานเมอการตรวจสอบคาในตวแปร a มผลลพธการตรวจสอบมสถานะเปนจรง และไดมการกระท าของกลมค าสงยอยของค าสง if หรอ elif นน

เพอใหงายตอการท าความเขาใจจงก าหนดล าดบการตรวจสอบในแตละค าสง if และ elif ตาม

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

ทดลองการใชค าสง if + elif ลงในโมดลของ Python (บนจอภาพ Python Shell เลอกเมน file เลอกเมนยอย New เพอท าการเปด Python โมดล) import time ท าการอางองโมดลมาตรฐานเกยวกบฟงกชนเวลาหรอ time มาใชในโมดลน loadtime=time.localtime() สรางตวแปรชอ loadtime เพออานวน เวลาจาระบบปฏบตการ loadhour=loadtime.tm_hour สรางตวแปรทชอ loadhour ส าหรบอานชวโมงปจจบนมาใชงาน print('ขณะนเวลา') print(loadhour) if loadhour<7: ตรวจสอบตารางเวลาส าหรบกจกรรมประจ าวน print('ยงไมตน') elif loadhour<9: print('อาบน า ทานขาว')

Page 83: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

elif loadhour<16: print('ท างาน') elif loadhour<19: print('กลบบาน ทานขาว') elif loadhour<21: print('ดทวรายการสดโปรด')

การใชค าสง if ทมลกษณะการตรวจสอบเงอนไขแบบซอนกน (Nested) การเขยนค าสง if แบบ Nested ฟงดแลวนาจะเปนการเขยนอะไรทตองแปลกแตกตางจากรปแบบการเขยนค าสงในขอท 1 และ 2 อยางแนนอน แตความเปนจรงกคอ การเขยนค าสงแบบ Nested เปนการใชค าสง if ซอนภายในกลมค าสงยอยของค าสง if แรกเทานนเอง ประโยชนของการเขยนค าสง if แบบ Nested กเพอทจะมการตรวจสอบเงอนไขยอยลกลงไป ยกตวอยาง หากค าในตวแปร a มขอมลเกยวกบทวโซน (TV Sony), ทวแอลจ(TV LG), ทวโตชบา(TV Toshiba), ทวซมซง(TV Samsung), วซดโซน(VCD Sony), วซดแอลจ(VCD LG) เปนตน เราจะใชค าสง if ส าหรบการตรวจสอบเงอนไข ส าหรบการแบงประเภทของขอมลในตวแปร a ออกเปน 2 ประเภท หรอ 2 ค าสง if ประกอบดวย ประเภททวและประเภทวซด ตามรปแบบการเขยนค าสง ตอไปน a = ['tv sony','tv lg', 'tv toshiba', 'tv samsung', 'vcd sony', 'vcd lg']

if a[1][:2]== 'tv:':

พนทกลมค าสงยอยจะท างานกตอเมอคาในตวแปร a[1][:2] เปนประเภททวเทานน

Page 84: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

elif a[1][:3]=='vcd':

การใชค าสง if ตรวจสอบเงอนไขเพอแยกประเภทของขอมลในตวแปร a นบเปนการกรองขอมลชนท 1 ดวยค าสง if คราวนลองมาเพมการตรวจสอบเงอนไขยอยดวยค าสง if เพมลงในพนทกลมค าสงยอยของแตละค าสง if ในชนท 1 เพอตรวจสอบคาขอมลเฉพาะ ยกตวอยาง ตองการตรวจสอบหาคาในตวแปร a ทตรงกบค าวา ‘tv lg’ โดยทคาดงกลาวจะตรงกบ a[1] (เนองดวยตวแปร a เปนชนด Sequence แบบ List ซงตองใชหมายเลขอางองขอมลภายในของตวแปร a อานรายละเอยดตวแปรชนดนไดในบทท 3) ซงจะมรปแบบการเขยนค าสง if เพมเตมซอนลงในกลมค าสงยอยของค าสง if ในชนท 1 ดงตอไปน a = ['tv sony','tv lg', 'tv toshiba', 'tv samsung', 'vcd sony', 'vcd lg'] if a[1][:2]== 'tv:': b = a[1] if b == 'tv sony': print('คาในควแปร b คอ tv sony') if b == 'tv lg': print('คาในตวแปร b คอ tv lg') if b == 'tv toshiba': print('มคา tv toshiba ในตวแปร b') if b == 'tv samsung': print('ในตวแปร b มคา tv samsung ') elif a[1][:3] == 'vcd': b = a[1] if b == 'vcd sony': print('คาในตวแปร b ม vcd sony เกบไวภายใน') if b == 'vcd lg': print('มคา vcd lg ในตวแปร b')

พนทกลมค าสงยอยจะท างานเมอผลการตรวจสอบคาในตวแปร a[1][:3] เปนประเภทวซดเทานน

ตรวจสอบเงอนไขดวยค าสง if ในชนท 1 เพอแยกประเภทคาในตวแปร a เปนประเภททว

พนทกลมค าสงยอยของการตรวจสอบเงอนไขประเภททว

พนทกลมค าสงยอยของการตรวจสอบ

เงอนไขเมอตวแปร a[1] เปนประเภทวซด

Page 85: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากรปแบบการเขยนค าสงทเหนในตวอยาง จะใชค าสง if ซอนกนเปนชนๆ โดยการตรวจสอบเงอนไขจะมล าดบจากค าสง if ชนท 1 ซงประกอบดวย a[1][:2] == ‘vcd’ ภายใตเงอนไขแรกคอ a[1][:2] == ‘tv’ หรอการตรวจขอมลส าหรบกลมทว จะมค าสง if ยอยเปนชนท 2 อก 4 ค าสงส าหรบการตรวจสอบเฉพาะคาขอมลของตวแปรจรง เชน คาใน b (ซงรบคาโอนถายมาจากตวแปร a[1]) มคาเทากบ ‘tv lg’ ใชหรอไม ถาใชกท าค าสงยอยของค าสง if b == ‘tv lg’ คอท าค าสง print(‘คาในตวแปร b คอ tv lg’) ตามรปแบบการใชค าสง if ดงทอธบายไวเปนวธการใชค าสง if แบบ Nested ส าหรบการตรวจสอบเงอนไขในเชงลก เสนทางล าดบการตรวจสอบเงอนไขเชงลกดวยค าสง if แบบ Nested a = ['tv sony', 'tv lg', 'tv lg', 'tv to shiba',...] if a[1][:2] == 'tv': b = a[1] if b == 'tv sony': print('คาในตวแปร b คอ tv sony') if b == 'tv lg': print('คาในตวแปร b คอ tv lg') if b == 'tv toshiba': print('มคา toshiba ในตวแปร b') if b == 'tv samsung': print('.....') elif a[1][:3] == 'vcd': b = a[1] if b == 'vcd sony': print('........') if b == 'vcd lg': print('........') print('จบการตรวจสอบ')

ค าสง if ชนท 1 ทมค าสง if ยอยอก 4 ค าสงภายใน

การตรวจสอบเงอนไขมสถานะเปนจรง

Page 86: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ทดลองพมพการใชค าสง if แบบ Nested ลงในโมดลของ Python a = 100 if a < 40: if a == 25: print('a มคาเทากบ 25') if a == 30: print('a มคาเทากบ 30') elif a > 80: if a == 50: print('a มคาเทากบ 50') if a == 100: print('a มคาเทากบ 100')

การใชค าสง If รวมกบค าสง else พนฐานการท างานของค าสง If มหนาทตรวจสอบเงอนไขตามทก าหนด และตองมการตอบสนอง

ตอผลลพธของการตรวจสอบเงอนไขในพนทกลมค าสงยอย เมองเงอนไขเปนไปตามทก าหนดหรอมสถานะทเปนจรง ( True) แตถาหากตองการเพมพนทกลมค าสงยอยกรณผลลพธของการตรวจสอบเงอนไขไมตรงตามทก าหนดหรอมสถานะเปนเทจ (false) รปแบบการเขยนค าสงในกรณนจ าเปนตองเพมค าสง else ใหกบค าสง If

Page 87: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

a = 10 if a == 10: พนทของกลมค าสงยอยจะตอบสนองเมอ ผลลพธการตรวจสอบตรงทก าหนดหรอม สถานะเปนจรง (True) print(‘ท าตอไปเรอยๆ’) แสดงรปแบบการใชค าสง if ส าหรบการตรวจสอบเงอนไขและตอบสนองกลมค าสงยอยเมอตรงตามทก าหนดเพยงอยางเดยว

a = 7 if a == 10: พนทของกลมค าสงยอยเมอการตรวจสอบเงอนไขตรงตามเงอนไขหรอมสถานะทเปนจรง (True) else: พนทของกลมค าสงยอยกรณผลลพธของการตรวจสอบไมเปนไปตามเงอนไขหรอมสถานะทเปนเทจ (False) print(‘ท าตอไปเรอยๆ’) แสดงรปแบบการใชค าสง if รวมกบค าสง else ส าหรบตอบสนองผลลพธทเกดจากการตรวจสอบเงอนไขและกระท ากบกลมค าสงยอยทอยในพนทตามสถานะทเปนจรงหรอเทจ

แสดงรปแบบการเขยนและลกษณะการท างานของค าสง if และ else

Page 88: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ทดลองพมพค าสง if และค าสง else ส าหรบการตรวจสอบเงอนไขลงในโมดลของ Python ตวอยางท 1

Page 89: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 2

Page 90: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 3

การก าหนดเงอนไขมากกวาหนงเงอนไขใหกบค าสง if การก าหนดเงอนไขมากกวา 1 เงอนไขใหกบค าสง If

ถาหากตองการสรางเงอนไขตรวจคาขอมลทอยในตวแปร A ซงเปนขอมลชนดตวเลขจ านวนเตมทมคาตวเลขอยในชวง 37 ถง 76 จะมวธการสรางเงอนไขเพอน าไปตรวจสอบและค าสง If ถง 2 เงอนไขโดยเงอนไขแรกจะตรวจดคาตวเลขในตวแปร A ทมคามากกวาหรอเทากบตวเลข 37 ( มรปแบบการเขยนเพอน าไปใชในงานคอ a >= 37 และเงอนไขท 2 จะตรวจคาตวเลขของตวแปร A ทนอยกวาหรอเทากบตวเลข 76 (มรปแบบของการเขยนเงอนไขส าหรบน าไปใชในค าสง If ดงน a<=76) ซงในการตรวจสอบดวยค าสง If จ าเปนตองน าเงอนไขแลกมาผกรวมกบเงอนไขท 2 จงจะท าใหการตรวจสอบเงอนไขไดตามจดทตงขนสงทนาสนใจคอการผกเงอนไขทง2เขาดวยกน ใหท างานผสมผสานกนเปนอยางดโดยอาศยการใช Combining Operator ซงประกอบดวย and และ or โอเปอเรเตอรทท าหนาทผกเงอนไขของค าสง If เขาดวยกนม 3 รปแบบดงน

1. รปแบบการเขยนค าสง If รวมกบ and operator 2. รปแบบการเขยนค าสง If รวมกบ or operator 3. รปแบบการเขยนค าสง If รวมกบ and และ or operator

Page 91: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบการเขยนค าสง if รวมกบ and opreator บรรทดท 1 a = 5 บรรทดท 2 if a >= 2 and a <= 7: บรรทดท 3 print(‘ตวเลขอยในชวง 2 ถง 7 เทานน’) บรรทดท 4 print(‘ท าเรองอนตอไป’) จากการใชโอเปอเรเตอร and ในบรรทดท 2 แสดงใหเหนการทดสอบเงอนไขแรกสดคอ a >= 2 และเงอนไข a <= 7 โดยจะน าผลลพธของทงสองเงอนไขมาเทยบคณสมบตของ and operator (คณสมบตของการ and operator จะไดผลลพธเปนจรง (True) กตอเมอผลลพธของทงสองเงอนไขเปนจรง (True) เทานน) จากตวอยางค าสงในบรรทดท 2 ตวแปร a มคา 5 เมอน ามาตรวจสอบกบเงอนไขท 1 คอ a >= 2 หรอแทนคา 5 ทตวแปร a ของเงอนไขแรกจะได 5 >= 2 แนนอนผลลพธของเงอนไขนเปนจรอง (True) เชนเดยวกบเงอนไขท 2 คอ a <= 7 แทนคา 5 ทตวแปร a ในเงอนไขจะได 5 <= 7 ซงผลลพธทไดจากการตรวจสอบเงอนไขท 2 กเปนจรง (True) เชนกน เมอน าผลลพธของทงสอง 2 เงอนไขมาใชรวมกบ and ภายใตค าสง if สงผลใหการตรวจสอบเงอนไขทงหมดเปนไปตามทก าหนด หรอมสถานการณตรวจสอบเปนจรง(True) ในทนค าสงถดไปหลงการตรวจสอบเงอนไขกคอ ค าสง print บรรทดท 3 นนเอง เทคนคการเขยน and operator รวมกบค าสง if ใน Python บางรปแบบจะมลกษณะดงตอไปน รปแบบค าสง if รวมกบ and ปกต If a >= 2 and a <= 7 รปแบบค าสง if รวมกบ and operator วธลด If 2 >= a <= 7: รปแบบการเขยนค าสง if รวมกบ or operator บรรทดท 1 a,b = 5,10 บรรทดท 2 if a == 5 or b == 2: บรรทดท 3 print(‘คาในตวแปร a คอ 5 หรอคาในตวแปร b มคาเปน 2 เทานน’) บรรทดท 4 print(‘ท าค าสงอนตอไป’) โอเปอเรเตอร or จะถกน ามาใชรวมกบการตรวจสอบเงอนไขภายใตค าสง if กตอเมอตองการใหผลลพธของเงอนไขใดเงอนไขหนงเปนจรง (True) ซงเทานกสงผลใหกลมค าสงยอยทจะท างานเมอผลลพธมคาเปนจรง (True) เกดการท างาน ยกตวอยางตามบรรทดท 2 คาในตวแปร a คอ 5 และคาของตวแปร b ทมคา 10 เมอน าคาในตวแปร a มาตรวจสอบเงอนไข จะมสถานะเปนจรง (True) ตามเงอนไขก าหนดไวในขณะทการตรวจสอบเงอนไขท 2 ผลลพธทไดจากการตรวจสอบจะมสถานะเปนเทจ (False) เนองจากคาในตวแปร b ไมตรงตามเงอนไขทก าหนดไว เมอน าผลลพธของทง 2 เงอนไขมาใชกบโอเปอเรเตอร or ในบรรทดท 2 นจะท า

Page 92: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ใหการตรวจสอบของค าสง if นมสถานะเปนจรงหรอ True (เนองจากผลลพธการตรวจสอบเงอนไขแรกสดมสถานะเปนจรง) ซงจะท าค าสงตอไปในบรรทดท 3 ทอยในพนทกลมค าสงยอยของค าสง if รปแบบการเขยนค าสง if รวมกบ and และ or operator บรรทดท 1 a, b = 5, 10 บรรทดท 2 if a >= 2 and a <= 7 or b == 10: บรรทดท 3 print(‘คาของตวแปร a อยในชวง 2 ถง 7’) บรรทดท 4 print(‘หรอคาในตวแปร b มคาเทากบ 10’) บรรทดท 5 print(‘ท าค าสงอนตอไป’)

การใชค าสง If ส าหรบการตรวจสอบเงอนไขทจ านวนของเงอนไขอาจจะมมากกวา 1 เงอนไขจงมความจ าเปนทจะตองผกเงอนไขเขากบการใช and หรอ or Operator ทงนตองค านงถงคณสมบตการท างานของ operator ทน ามาใชส าหรบการผกเงอนไขบางกรณจ านวนเงอนไขมมากกวา 2 เงอนไขจ านวนของ operator ทจะน ามาผกเงอนไขกจะมมากขนอกทงยงสามารถใช Operator ทงสองชนดผสมผสานในการตรวจสอบภายใตค าสง is เดยวตามตวอยางการใชค าสงบรรทดท 2 จะเหนไดวามจ านวนเงอนไขถง 3 เงอนไขภายใตการตรวจสอบของค าสง If โดยทโจทกถกก าหนดใหเงอนไขท 1(a >= 2) และเงอนไขท 2 (a <= 7) จ าเปนตองผานตามก าหนดหรอมผลสถานะการตรวจสอบเงอนไขเปนจรง (True) ทงคความเหมาะสมตอการใช Operator กตองเลอก and operator มาผกเงอนไขท 1 และ 2 เขาดวยกนจงจะถกตองตามความตองการของโจทยในหวขอนส าหรบเงอนไขท 3 (b == 10 )ถาผลลพธการตรวจสอบเงอนไขเปนจรง(True) ค าสง if กจะสงใหป มค าสงยอยในพนททสถานการณตรวจสอบเปนจรง(True) หรอตรงตามทเงอนไขก าหนดใหท างานไดทนท เปนทนาสงเกตส าหรบการท างานของเงอนไขท 3(b == 10 ) ทมความเปนอสระในการตรวจสอบของค าสง If โดยไมตองไปยงกบเงอนไขอนๆทคนกนในค าสง If น Combining Operator ควรจะใชกบการท างานของเงอนไขทมความเปนอสระแบบนกคอ or operator พมพค าสงตอไปนส าหรบทดลองการใช Combining Operator รวมกบค าสง if โดยเขยนค าสงลงในโมดลของ python ( ทจอภาพของ Python Shell เลอกเมน file และเลอกเมนยอยทชอ New เพอก าหนดเปดโมดล python) ตวอยางท 1 การใช and operator username = input('ปอนชอผใชงาน : ') password=input('ปอนรหสผาน') if username is None : print('ปอนชอดวยคะ') elif password is None: print('ปอนรหสเทานน')

Page 93: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

elif username == 'admin' and password == 'password': print('ยนดตอนรบ') else: print('คณไมสามารถผานเขาไปใชงานในระบบได') print('\nตดตอผดแลระบบ') print('เสรจสนการทดสอบ')

การทดลองในตวอยางนเปนการใชโอเปอเรเตอร and ส าหรบตรวจสอบคาในตวแปร username และ password เพอเขาสการใชงานในระบบตามล าดบ โดยทการลอกอนเขาสระบบจะส าเรจกตอเมอชอผใชงานเปน admin และรหสผานเปนค าวา 1234

Page 94: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 2 การใช or operator a = [] b = input('ปอนผลไมทคณชอบล าดบท 1 : ') a.append(b) b = input('ปอนผลไมทคณชอบล าดบท 2 : ') a.append(b) b = input('ปอนผลไมทคณชอบล าดบท 3 : ') a.append(b) b = input('ปอนผลไมทคณชอบล าดบท 4 : ') a.append(b) b = input('ปอน 1 ใน 4 ผลไมทปอนจดเกบไว') if b == a[0] or b == a[1] or b == a[2] or b == a[3]: print('ยนดดวยคะ คณจ าผลไมทปอนไดคะ') else : print('แยแลวคะ คณจ าผลไมทปอนไวไมไดคะ')

Page 95: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ลองใชโอเปอเรเตอร or ส าหรบตรวจคาผลไมทตองการปอนเกบไวในตวแปร a (เปนตวแปร Sequence แบบ List เปนจ านวน 4 ชนด จากนนกท าการทดสอบความจ าโดยการเลอกพมพชอผลไมทเคยปอนเกบไว 1 ชนดจากทงหมด 4 ชนด ตวอยางท 3 การใช and และ or operator a = input('ปอนอเมลของคณ : ') if '@' in a and '.' in a or a == 'admin' : b = input('ปอนรหสผาน : ') if b == '1234' : print('เตรยมสงขอความจากระบบ') print('ขอความถกสงแลว') else : print('อเมลคณมรปแบบการเขยนทไมถกตอง') print('%s กรณาตรวจใหมอกครง' %a) print('ท าขนตอนตอไปน')

Page 96: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

การทดลองสมมตใหใชอเมลของผใช login เขาสระบบโดยตรวจสอบรปแบบของการเขยนอเมลจากคาในตวแปรเอดวยการสงเกตเครองหมาย @ และ . ทเปนองคประกอบของชออเมลดวยเงอนไขท 1 (‘@’ in a ) และเงอนไขท 2 (‘.’ in a ) เทคนคการเขยนค าสงดวยการใช in ซงท าหนาทคนหาตวอกษรเครองหมายหรอคาทตองการคนหา ฯลฯ ผลลพธจากการคนหาดวยค าสง in ถาไมเจอจะใหคาเทจ (False) และใหคาทเปนจรง (True) เมอเจอสงทตองการคนหาจากคาในตวแปรโจทยของการตรวจสอบรปแบบของ e mail คอเงอนไขท 1 (‘@’ in a) และเงอนไขท 2 (‘.’ in a) จ าเปนตองผกกนดวย operator an เพราะตองการผลลพธทมสถานะจรง (True) ทงคเสมอในขณะเดยวกนโจทกกยงตงเงอนไขพเศษส าหรบการ login เขาสระบบในเงอนไขท 3 (a == ‘admin’) ทมความเปนอสระจากเงอนไขอนในค าสง If นนนคอ Operator ทเหมาะสมส าหรบเงอนไขท 3 กคอ or

Page 97: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 5 ค ำสงกำรวนซ ำ

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

ลกษณะการท างานเชนนวา ค าสงการวนท าซ า (Repetition) ส าหรบภาษา Python กลมค าสงการวนท าซ าจะประกอบดวยค าสง for และค าสง while กอนทจะอธบายลงไปในรายละเอยดของท ง 2 ค าสง ลองมาด

ประโยชนของการใชค าสงการวนท าซ า และการตดสนใจทจะน าค าสงการวนท าซ ามาใชระหวางการพฒนา

งาน (การทดลองค าสงจะท าการเขยนค าสงลงในโมเดล Python โดยไปทเมน File เลอกเมนยอย New ส าหรบเปดโมดล)

ตวอยำงท 1 เปนค าสงรบขอมลแบบลกทงลกทง

a = 1

c = []

print (‘กรณาปอนชอผลไม 6 ชอ’)

b = input(‘%d ปอนชอผลไมสดโปรดของคณ’ %a) c.append(b) a = a + 1

b = input(‘%d ปอนชอผลไมสดโปรดของคณ’ %a) c.append(b) a + = 1

b = input(‘%d ปอนชอผลไมสดโปรดของคณ’ %a) c.append(b) a + = 1

b = input(‘%d ปอนชอผลไมสดโปรดของคณ’ %a) c.append(b)

a + = 1

b = input(‘%d ปอนชอผลไมสดโปรดของคณ’ %a) c.append(b)

print (‘ผลไมโปรดของคณคอ %s’%c)

print(‘จบค าสง’)

Page 98: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

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

ลองมาดลกษณะการเขยนค าสงของตวอยางท 1 พบวามการใชค าสงการรบคาจากการปอนผานคยบอรด คอ

ค าสง input และคาขอมลทไดจะถกเกบลงในตวแปร b ชวคราว (b = input (‘%d ปอนชออาหารสดโปรดของคณ%a) ซงคาขอมลในตวแปร b กคอชออาหารโปรดทผใชจะตองท าการปอน 1 ชอ หลงจากไดชออาหารก

Page 99: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จะน าไปเกบรวมกนในตวแปร c ทเปนชนด Sequence แบบ List โดยการใชค าสง c.append(b) เพยงเทานกครบตาม

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

น ามาใชส าหรบการเขยนโปรแกรมกอนหนานไปแลว ดงนนกลมค าสงชดท 2,3,4 ไปจนถง 6 หรอมากกวาน กจะใชเหมอนกนกลมค าสงในชดท 1 ซงถาดตามตวอยางท 1 จะเหนกลมค าสงทท างานซ าๆ กน โดยแบง

ออกเปน 6 ชด ประกอบดวย ค าสงตอไปน

b = input(‘%d ปอนชออาหารสดโปรดของคณ’ %a) c.append(b) คราวนลองมาดประโยชนของการน าค าสงการวนท าซ าของภาษา Python มาดดแปลงลงในกลมค าสงทใชในตวอยางท 1 ใหสงเกตการณเปลยนแปลงของค าสง หลงจากการน าค าสงการวนซ ามาใชงานรวมกน

เนองจากค าสงการวนท าซ าของภาษา Python ม 2 ค าสง วธหรอรปแบบการเขยนค าสงเพอใชงานจะคลายกน

เพยงแตแตกตางกนทวธการสนสดการวนท าซ าของกลมค าสงยอย ถาหากเปนการท าซ าทมจดเรมตน สมมตวาเรมจากตวเลข 1 และก าหนดตวเลข 5 ใหเปนจดสนสด ซงจะมความชดเจนในการก าหนดจดเรมตนและ

จดสนสด ค าสงการวนท าซ ากตองใชค าสง for โดยการมรปแบบการเขยนตามตวอยางท 2 ยง เหลอวธการ

สนสดการวนท าซ าจากค าสง while ซงอาศยการก าหนดเงอนไข และตรวจสอบเงอนไขในแตละรอบของการวนท าซ า เมอผลลพธของการตรวจสอบเงอนไขเปนเทจ (False) กจะถอวาสนสดการวนท าซ า ตวอยางท 3 จะ

แสดงวธการเขยนค าสง while และก าหนดเงอนไขส าหรบการสนสดการวนท าซ าของกลมค าสงยอย

ตวอยางท 2 เปนค าสงรบขอมลโดยใชค าสงการวนท าซ า for มาแทนการเขยนแบบลกทงลกทงใน ตวอยางท

1

บรรทดท 1 c = []

บรรทดท 2 for a in [1,2,3,4,5] :

บรรทดท 3 b = input(‘%d ปอนชออาหารสดโปรดของคณ’ %a)

บรรทดท 4 c.append(b) บรรทดท 5 print(‘อาหารโปรดของคณคอ %s ‘%c)

บรรทดท 6 print(‘จบค าสง’)

สงเกตรปแบบการเขยนค าสง for ซงจะเรมจากบรรทดท 2 โดยมกลมค าสงยอยทจะท าการวนท าซ า

คอ บรรทดท 2 และ 3 ทมจดเรมตนจากตวเลข 1 (แบบเรยงจากนอยไปมาก หรอจะแกจากมากไปนอยกพมพ

5,4,3,2,1 กได หรอชอบแบบผาดโผน เชน 1,9,17,4,100 เปนตน) ในการวนท าซ ารอบแรกซงจดเกบคาตวเลขไวทตวแปร a เมอเรมการวนท าซ าในรอบท 2 หรอรอบถดไปกจะอานคาตวเลขทเกบเรยงไวคอ 2,3,4,5 จงจะ

Page 100: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

สนสดการวนซ าของค าสง for อกเทคนคหนงทนยมน ามาใชรวมกบการก าหนดตวเลขเรมตนไปจนถงตว

เลขทสนสด ดวยการใชฟงกชน range ทมรปแบบการเขยนฟงกชน ดงน

แบบท 1 range (1,5) มคาเทากบ [1,2,3,4,5] เหมอนทใชในบรรทดท 2 เมอน าฟงกชน range มารวมกบ

ค าสง for จะมรปแบบการเขยน ดงน c = []

for a in range(1,5) :

b = input(‘%d ปอนชออาหารสดโปรดของคณ’ %a) c.append(b) print(‘อาหารโปรดของคณคอ %s’ %c) print(‘จบค าสง’)

แบบท 2 range (5,1, -1) มคาเทากบ [5,4,3,2,1] เปนการก าหนดตวเลขจากมากไปนอย จะใหลดทละ 1 ก

ก าหนด -1 ในอารกวเมนตตวท 3 ซงท าหนาทก าหนดการเพมหรอลดคาตวเลขของฟงกชน range ฟงกชนจะ

ก าหนดคาเปน 1 ไวเสมอ ซงหมายถงจะท าการเพมทละ 1 โดยอตโนมต) c = []

for a in range (5,1,-1) :

b = input(‘%d ปอนชออาหารสดโปรดของคณ’ %a)

c.append(b) print(‘อาหารโปรดของคณคอ %s’ %c) print(‘จบค าสง’)

แบบท 3 แสดงการใชค าสง while ส าหรบกลมค าสงยอยในการวนท าซ าและสนสดดวยการตรวจสอบเงอนไข

บรรทดท 1 a = 1

บรรทดท 2 c = [] บรรทดท 3 while a < 5 :

บรรทดท 4 b = input(‘%d ปอนชออาหารสดโปรดของคณ’ %a)

บรรทดท 5 c.append(b) บรรทดท 6 a += 1

บรรทดท 7 print(‘อาหารโปรดของคณคอ %s’ %c) บรรทดท 8 print(‘จบค าสง’)

Page 101: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ในบรรทดท 3 เปนรปแบบการเขยนค าสงการวนซ าดวยค าสง while พรอมเงอนไขทก าหนดขนเพอ

หยดการวนท าซ า ซงตองการผลลพธของการตรวจสอบเงอนไขทเปนเทจ (False) เทานน จากตวอยางจะเหนวาคาในตวแปร a จะเรมท 1 (ก าหนดทบรรทดท 1 ) เมอน าคาในตวแปรมาตรวจสอบเงอนไข a < 5 ของค าสง

while ผลลพธทไดจากการตรวจสอบจะเปนจรง (เนองจากคาในตวแปร a นอยกวา 5 ตามเงอนไข) กระบวนการวนท าซ ากบกลมค าสงยอยในบรรทดท 4 ถง 6 กจะเรมตนท างานแตละรอบจนกวาจะจบตาม

เงอนไขของค าสง while คราวนลองมาดตวอยางเพมเตมกรณมเงอนไขทสามารถจบการวนท าซ ามากกวา 1

เงอนไข

ตวอยำงท 4 แสดงการใชค าสง while ทมมากกวา 1 เงอนไขส าหรบการวนท าซ า

บรรทดท 1 a = 1

บรรทดท 2 c = [] บรรทดท 3 while a < 5 or b != ‘exit’ :

บรรทดท 4 b = input(‘%d ปอนชออาหารสดโปรดของคณ’ %a) บรรทดท 5 c.append(b)

บรรทดท 6 a += 1

บรรทดท 7 print(‘อาหารโปรดของคณคอ %s’ %c) บรรทดท 8 print(‘จบค าสง’)

จากตวอยางท 4 ในบรรทดท 3 จะมเงอนไข b <> ‘exit’ เพมเตม ซงมประโยชนส าหรบการหยดการ

ปอนชออาหารสดโปรด โดยการพมพค าวา exit แทนชออาหาร เทานการวนท าซ าของค าสง while กจะสนสดการท างาน

พอเหนตวอยางท 4 ท าใหนกถงเทคนคการเขยนค าสงการวนท าซ าทเปนลกษณะการวนท าซ าแบบไมมวนสนสดหรอ Infinity Repetition โดยใชค าสง while ซงเปนทนยมใชแพรหลายกบการเขยนในภาษา Python

ลองดเทคนคการก าหนดเงอนไขในลกษณะ Infinity Repetition ตามตวอยางตอไปน

ตวอยำงท 5 การใชค าสง while กบการก าหนดเงอนไขในลกษณะ Infinity Repetition (ขอควรระวงของ

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

บรรทดท 1 a = 1

บรรทดท 2 c = []

บรรทดท 3 while True :

บรรทดท 4 b = input(‘%d ปอนชออาหารสดโปรดของคณ’ %a)

Page 102: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บรรทดท 5 c.append(b)

บรรทดท 6 a += 1 บรรทดท 7 print(‘อาหารโปรดของคณคอ %s’ %c)

บรรทดท 8 print(‘จบค าสง’) จากตวอยางท 5 บรรทดท 3 ค าสง while ถกก าหนดเงอนไขดวยคาประเภทบลน (Boolean) ทเปนคา

จรง (True) ซงเปนรปแบบการเรยงเงอนไขทสนมาก แตสงผลใหการวนท าซ าจะกลายเปนแบบ Infinity

Repetition ไปเลย คอ จะท าค าสงกลมยอยในบรรทดท 4 และ 5 ทท าหนาทรนชออาหารโปรดของคณและจดเกบไวในตวแปร c ไปเรอยๆ วธหยดกตองหาทางหยดดวยตวเอง เทคนคใคร เทคนคมน ถาใครไมรจรง

กด Ctrl + C กแลวกน บาคนสงสยกบเทคนคการเขยนในลกษณะ Infinity Repetition จะน าไปใชประโยชนอะไร

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

ไมตองอยภายใตขอบเขตจ านวนรอบของคาในตวแปร a เหมอนในตวอยางท 4 เรองทสองของเทคนคการเขยนค าสงวนท าซ าแบบไมมวนสนสด คอ การหยดการวนท าซ าจากค าสงทชอวา break (เมอค าสง break

ท างานจะเปลยนสถานะเงอนไขของค าสง while จาก True ใหเปน False โดยอตโนมตซงจะท าใหการวนท าซ า

ของค าสง while หยดกระบวนการท างานทนท) ส าหรบการใชค าสง break เพอหยดการวนท าซ าของค าสง while

จะเขยนไดตามตวอยางขางลางน

บรรทดท 1 a = 1

บรรทดท 2 c = [] บรรทดท 3 while True :

บรรทดท 4 d = input(‘%d ปอนชออาหารสดโปรดของคณ’ %a) บรรทดท 5 if d = = ‘exit’:

บรรทดท 6 break

บรรทดท 7 c.append(d) บรรทดท 8 a += 1

บรรทดท 9 print(‘อาหารโปรดของคณคอ %s’ %c)

บรรทดท 10 print(‘จบค าสง’)

Page 103: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางน จะแกไขปญหาการวนท าซ าแบบไมมวนสนสดทเกดขนในตวอยางท 5 โดยจะเพมค าสง if เพอตรวจสอบคาในตวแปร b (บรรทดท 5) มการปอนค าวา exit เพอตองการหยดการวนท าซ าเกยวกบการ

ปอนชออาหารสดโปรด ดวยค าสง break ในบรรทดท 6 และเมอไรทค าสง break ท างานกจะกระโดดกลบไปทบรรทดท 3 ทเปนค าสง while พรอมกบเปลยนสถานะของเงอนไขในการวนท าซ าจาก True ใหเปน False เพยง

เทานค าสง while กเลกท าการวนท าซ า ในกลมค าสงยอยภายในทงหมด (บรรทดทเปนกลมค าสงยอยเรมจาก

บรรทดท 5 ถง 8) และเรมในค าสงถดไปทอยในระดบเดยวกนกบค าสง while คอ บรรทดท 9 เปนตนไป เพอใหเขาใจลกษณะการท างานของค าสงการวนท าซ ารวมกบค าสง break โดยศกษาจากเสนทางการท างาน

ของค าสงดงรปท 5.1

Page 104: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปท 5.1 แสดงเสนทางการท างานของค าสงการวนท าซ าแบบไมมวนสนสดและวธการหยดการวนท าซ าดวยค าสง break

อกค าสงหนงทนยมน ามาใชรวมกบค าสงการวนท าซ า (for และ while) คอ ค าสง continue ทมรปแบบ

การใชงานคลายๆ ค าสง break แตการท างานจะแตกตางกนตรงทค าสง continue จะตดขนรอบใหมของการวนท าซ า เพอใหงายตอการท าความเขาใจการท างานของค าสง continue ขอใหดจากรปท 5.2 ทเปรยบเทยบการ

ท างานของค าสงการวนท าซ าทไมมค าสง continue และทมค าสง continue

Page 105: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปท 5.2 แสดงเสนทางการเปรยบเทยบการท างานของการวนท าซ าปกต และเพมค าสง continue ในกลมค าสงยอยของค าสงวนท าซ า for

++++++++++++++++++++++++รปท 007,008,009 และ 010 ++++++++++++++++++++

สรปไดวาค าสงการวนท าซ า ซงประกอบดวยค าสง for และ while มความเหมาะสมตอการน ามาใชกบ

กลมค าสงยอยทตองการวนท าซ า โดยทค าสงทงคจะมความแตกตางกนทวธการหยดวนท าซ า ทมขอสงเกต

จากลกษณะของเงอนไขคกบค าสงวนท าซ า เชน เงอนไขก าหนดการหยดวนท าซ าทชดเจน สมมตเรมนบตวเลขจาก 4 ไปจนถง 20 เพอท าค าสงยอยเปนจ านวน 17 รอบ เงอนไขแบบนเหมาะกบค าสง for เปนอยางยง

แตถาเงอนไขของการหยดวนท าซ ามรปแบบคอ a == ‘จบ’ หรอ a > 500 หรออะไรทมเครองหมาย =,>,< ท านอง

น ตองใชค าสง while เทานน นอกจากนยงมค าสงพเศษทใชภายในค าสง for และ while คอ ค าสง break และ continue ทมรปแบบการเขยนใชงานคลายกน คอตองใชภายในรวมกบกลมค าสงยอยของค าสง for และ while

เทานน ทงสองค าสงพเศษ (break และ continue) เมอถงเวลาท างานจะกระโดดไปทค าสง for หรอ while ทนท ทจดนจะแตกตางกบทค าสง break จะหยดการวนท าซ า และออกจากค าสง for หรอ while ไปท าค าสงอนๆ

ภายนอกตอไป แตค าสง continue จะเรมรอบใหมส าหรบท างานของกลมค าสงยอยภายในของค าสง for หรอ

while ในขณะนนตอไป ทดลองพมพค าสง for รวมกบค าสงพเศษ break และ continue ตามตวอยางตอไปน

Page 106: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 6

บรรทดท 1 a = ['fc shirts','fcskirt','fc pants','fc hat'] บรรทดท 2 brand = []

บรรทดท 3 for c in a : บรรทดท 4 if ‘fc’ in c :

บรรทดท 5 brand.append(c[2:])

บรรทดท 6 print('Fashion clothing %s' %c[2:]) บรรทดท 7 if ‘skirt’ in c :

บรรทดท 8 print(‘No discounts.!!’)

บรรทดท 9 continue

บรรทดท 10 elif ‘hat’ in c :

บรรทดท 11 print(‘Waiting to order’) บรรทดท 12 break

บรรทดท 13 print(‘Waiting to order’)

บรรทดท 14 print('รานนขายเสอผาแฟชน %s' %brand) บรรทดท 15 print('ท าค าสงตอไปเลยคะ !!!')

++++++++++++++++++++++รปโคด 011 และ 012+++++++++++++++++++++++++++++++

จากตวอยางท 6 จะเปนการคนหาและจดเกบยหอเสอผาลงในตวแปรทชอ Brand (ซงเปนตวแปรแบบ

Sequence ชนด List) จากกลมของสนคาทเกบไวในตวแปร a โดยใชการวนท าซ าจากค าสง for ดงสนคาจากตวแปร a มาทละ 1 รายการ เพอจะแจงลกคาถงสวนลดของราคาสนคา 20% ของแตละรายการยกเวนกระโปรง

ทไมสวนลด (สงเกตเมอมการพมพ skirt' จะไมมการพมพค าวา “ลดราคา 20% วนนเทานน” เหมอนเสอผา

อนๆ เนองจากมค าสง continue ในบรรทดท 9 ) และการอานรายการสนคาจากค าสง for จะสนสดกอนความเปนจรง เนองจากถาพบทวยหอ hat (สมมตวาหมวกทจะขายยงมาไมถง) จากการตรวจเงอนไขในบรรทดท 10

กจะท าการ break ดวยค าสงจากบรรทดท 12 เปนผลใหการวนท าซ าของค าสง for นหยดลง และกระโดดไปท าค าสงในบรรทดท 14,15 ตอไป

ตวอยางท 7 การใชค าสง while รวมกบ break และ continue สมมตขอมลรายชอลกคาทมรปแบบการปอนขอมล

ดงน

Page 107: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

1406: มาณ:กทม

3767:ประเสรฐ:อยธยา 7499:หนาตาด:ขอนแกน

และตองการผลลพธเปนรายงานทมรปแบบตอไปน -----------------------------------------------------

รหส ชอ จงหวด

----------------------------------------------------- 1406 มาณ (กทม )

3767 ประเสรฐ (อยธยา )

7499 หนาตาด (ขอนแกน )

บรรทดท 1 a = []

บรรทดท 2 while True :

บรรทดท 3 b = input(‘รานคา \n เพม [a] \n แสดง [s] \n ออกจากระบบ [x]’)

บรรทดท 4 b = b.lower()

บรรทดท 5 if b = = ‘a’ :

บรรทดท 6 c = input(‘ปอนรายการลกคา’)

บรรทดท 7 a.append(c)

บรรทดท 8 print(‘***ขอมลไดเขาสระบบแลว***’)

บรรทดท 9 elif b = = ‘s’ :

บรรทดท 10 print(‘{0:-<6}{0:-<10}{0:-<10}’.format(‘’))

บรรทดท 11 print(‘{0:<6}{1:<10}{2:10}’.format(‘รหส’,’ชอ’,’จงหวด’))

บรรทดท 12 print(‘{0:-<6}{0:-<10}{0:-<10}’.format(“”))

บรรทดท 13 for d in a :

บรรทดท 14 e = d.split(“:”)

บรรทดท 15 print(‘{0[0]:<6} {0[1]:<10} ({0[2]:10})’.format(e))

บรรทดท 16 continue

บรรทดท 17 elif b = = ‘x’ :

บรรทดท 18 break บรรทดท 19 print(‘ท าค าสงถดไป.....’)

Page 108: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

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

ผใชเลอกเมนเกยวกบการเพมลกคา, การพมพรายการของลกคา และการสนสดการใชงานของโปรแกรม เปนตน โดยทลกษณะการท างานของโปรแกรมจะใชวธการวนท าซ าดวยค าสง while ทใชเงอนไขแบบไมม

วนสนสดคอ True แสดงวากลมค าสงยอยภายในค าสง while จะตองมค าสงพเศษทชอ break เพอหยดการวนท าซ าเปนอยางแนนอน (สงเกตบรรทดท 17.18 เปนการตรวจดการเลอกเมนเพอเลกใชงาน โดยการพมพ

ตวอกษร x เพอสงใหค าสง break ท างานนนเอง) ส าหรบเทคนคการสรางเมนใหผใชเลอกกอาศยเทคนคงายๆ

จากบรรทดท 2 คอการรอรบการปองกนขอมลผานคยบอรดจากค าสง input ทสามารถแสดงขอความได เราก

ดดแปลงขอความนนมาท าเปนเมนดวยการเพมเครองหมาย \n ส าหรบขนบรรทดใหมเทานนกเปนเมนได

แลว เมอผใชงานตองการเพมรายการลกคาใหพมพตวอกษร a ซงจะท าใหค าสงบรรทดท 5,6 และ 7 ท างาน

หากตองการดรายการลกคาทงหมด ใหพมพตวอกษร s จะมการท างานในบรรทดท 9 ไปจนถงบรรทดท 16 ส าหรบการพมพรายการของลกคาแตละคน ตามรปแบบรายงานทก าหนดไวในโจทย

Page 109: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 6 การสรางโพรซเจอรหรอฟงกชนของ Python

โพรซเจอร หรอฟงกชน มกจะเปนชอทนกพฒนาโปรแกรมทงหลายตองคนห และจ าเปนตองรจก

รปแบบการเขยน ประโยชนของการใชงาน เทคนคการเขยนในลกษณะตางๆ ตามความสามารถของแตละ

ภาษา ทงโพรซเจอรและฟงกชนจะมความคลายคลงกนมาก จงมกจะเกดค าถามส าหรบนกพฒนาโปรแกรมมอใหม ถงการเลอกใชโพรซเจอรหรอฟงกชนเสมอ กลาวตามหลกการวชาการมกจะใหค าจ ากดความ

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

โพรซเจอร ฟงกชน 1. เปนทอยของกลมค าสงทมโอกาสเรยกใชงานซ าๆได

2. สามารถก าหนดตวแปรทใชงานเฉพาะภาพในโพรซเจอรนไดเทานน

3. รองรบการผานคาขอมลจากภายนอกในรปแบบอารกวเมนต

4. สามารถดงตวแปรภายนอกโพรซเจอรมาใชรวมภายในโพรซเจอรได

5. ไมสามารถสงคาผลลพธกลบในรปแบบการ return ได

ขอ 1-4 มคณสมบตเหมอนกบโพรซเจอร ขอ 5 สามารถ return คาผลลพธภายในของฟงกชนกลบไปยงจดทเรยกฟงกชนมาใชงานได

จากรายละเอยดในตาราง จะเหนความแตกตางกนเพยงขอท 5 ความสามารถในการสงคาผลลพธ

ภายในกลบออกไปดวยการใชค าสง return ซงจะมใชเฉพาะกบฟงกชนเทานน ดวยเหตทมความแตกตางจากลกษณะการใชงานเพยงเลกนอย ภาษา Python จงรวมโครงสรางของทงโพรซเจอรและฟงกชนใหเปนเรอง

เดยวกน โดยจะอางองคณลกษณะของการใชงานแบบฟงกชนเปนหลก ดงนนในภาษา Python จะมเพยงแค

การสรางฟงกชน (Custom Function) ส าหรบใชงานในโมดลเทานน กอนทจะท าความเขาใจรปแบบการสรางฟงกชนดวยค าสงของภาษา Python ลองมาดโครงสรางโดยรวมและเสนทางการท างานของฟงกชน

ตามรปท 1

Page 110: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปท 1 แสดงการสรางฟงกชน, วธการเรยกใชงาน พรอมเสนทางการท างานของแตละ

ฟงกชนในโมดลของ Python

ต าแหนงของการสรางฟงกชนส าหรบการใชงายภายในโครงสรางของโมดล รวมทงลกษณะวธการ

เรยกใชฟงกชน (สงเกตสนทางเมอฟงกชนแตละชอถกเรยกใชงาน โดยเรมจากฟงกชนทชอ main เปน

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

import os จดเรมตนของโมดลตวอยางน

yourchoice = 0 ก าหนดตวแปรส าหรบใชในโมดลและฟงกชน

def main( ) :

def showdirectory ( ):

def showfilelist( ):

main( )

showdirectory( )

print(‘ท าตอไป’)

ค าสงยอยของฟงกชน Main

กลมค าสงยอยของฟงกชนแสดงรายชอ Folder

กลมค าสงยอยของฟงกชน

ส าหรบแสดงรายชอไฟล

กลม Custom ฟงกชน

พรอมกบการแสดง

เสนทางการเรยกใชฟงกชนของโมดลน

ค าสงทเรมท างานของ

โมดลน โดยเรมจากการเรยนฟงกชน main

2

1

4

5

4

3

4

6

4

Page 111: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

กระโดดไปยงฟงกชน main ตามเสนทางหมายเลข 1 และเรมท างานกบกลมค าสงยอยภายในฟงกชน main จนสนสดจงกระโดดกลบมาทกลมค าสงเรมตนตามเสนทางกลบหมายเลข 2 ทค าสงถดไป คอ ค าสงทเรยกฟงกชนทชอวา showdirectory ซงจะกระโดดไปทฟงกชนตามเสนทางหมายเลข 3 เพอท าค าสงยอยตางๆ

ภายในของฟงกชน showdirectory ขณะทท าค าสงยอยภายใน จะมการเรยกฟงกชนทชอ showfilelist ซงจะกระโดดไปยงทอยของฟงกชนดงกลาวตามเสนทางหมายเลข 4 เพอท างานกบกลมค าสงยอยภายในของ

ฟงกชน showfilelist จนกระทงสนสดการท างานของกลมค าสงยอยจงกระโดดกลบตามเสนทางหมายเลข 5

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

โปรแกรม คงพอจะเหนภาพการท างานและวธเรยกใชงานฟงกชนภายในโมดลของภาษา Python และเพอให

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

1. รปแบบการสรางฟงกชนของภาษา Python และวธเขยนโปรแกรมเพอเรยกใชงาน

2. การก าหนดขอบเขตของตวแปรภายในของฟงกชน

3. ลกษณะการใชคยเวรดอารกวเมนตและพารามเตอรรวมกบฟงกชน (Argument And Parameter

Function Keyword)

4. ความแตกตางระหวางฟงกชนทใชและไมใชค าสง return

Page 112: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบการสรางฟงกชนของภาษา Python และวธเขยนโปรแกรมเพอเรยกใชงาน

ลกษณะการสรางฟงกชนมรปแบบ (Syntax) ของการเขยนทคอนขางงาย ดงรปท 2 แสดงวธการ

เขยนฟงกชนทแบงตามการน าไปใชงาน 4 รปแบบ ไดแก

1. การสรางฟงกชนทท างานเหมอนโพรซเจอร (ไมมการสงคาใดๆ กลบ)

2. การสรางฟงกชนทท างานเหมอนโพรซเจอร แตมการสงผานคาตางๆ รวมกบตวแปรอารกวเมนต

3. การสรางฟงกชนรวมกบการสงคาผลลพธกลบดวยค าสง return 4. การสรางฟงกชนทมการใชตวแปรอารกวเมนตและการสงคาผลลพธกลบ

1. def ชอฟงกชน( ) :

a = 100 print(‘a=%d’ % a) print(a+10)

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

2. def ชอฟงกชน(ตวแปรอารกวเมนต):

a = คาอารกวเมนต print(a+10)

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

3. def ชอฟงกชน( ) :

a = 1 b = 2 print(a + b) return a + b

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

4. def ชอฟงกชน(ตวแปรอารกวเมนต): a = คาอารกวเมนต b = 5 print(a * b) return a * b

การท างานของฟงกชนในหวขอนมหลกการท างานเหมอนหวขอท 3 โดยแตกตางกนตรงทฟงกชนสามารถผานค าขอมลจากภายนอกดวยตวแปรอารกวเมนตมาใชงานภายในฟงกชนได

Page 113: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปท 2 แสดงรปแบบวธการสรางฟงกชนของภาษา Python

ซงทง 4 รปแบบจะถกน ามาใชงานภายในโมดลของภาษา Python ตามคณสมบตของแตละรปแบบโดยนกพฒนาโปรแกรมจะเปนผทตดสนใจเลอกใชงานใหตรงกบรปแบบโปรแกรมค าสงทก าลงพฒนา และ

ตรงตามการออกแบบโครงสราง เพอพฒนาโปรแกรม เชน โปรแกรมทเปนลกษณะ Procedural ซงกเปนรปแบบการเขยนโปรแกรมทเปนพนฐานของภาษา Python ทมการใชฟงกชนทง 4 รปแบบ เปนสวนรวม

ภายในโมดล และแบงลกษณะการใชงานฟงกชนทง 4 รปแบบ ออกเปน 2 ลกษณะ คอ

1. ฟงกชนทใชงานแบบ Global 2. ฟงกชนทใชงานแบบ Local

ฟงกชนทใชแบบ

ฟงกชนประเภทนถกสรางขนภายในโมดลมาตรฐานปกตของ Python ซงสามารถน าฟงกชนนไปใช

งานรวมกบโมดลอนๆ โดยเชอมโยงการใชงานดวยค าสง import จากรปท 3 แสดงวธการ import การใช Global ฟงกชนระหวางโมดลกบโมดล

รปท 3 แสดงลกษณะการสราง Global ฟงกชนและการเรยกใชงานฟงกชนระหวางโมดล

เงอนไขเลกๆ นอยๆ ทผใชงานไมควรพลาดในการสรางโมดลและฟงกชนลกษณะ Global ส าหรบใชงานรวมกบโมดลอนๆ คอการจดบนทกไฟลโมดลทงหมดไวในโฟลเดอรเดยวกน มาลองท าตวอยาง

เกยวกบฟงกชนประเภท Global

มฟงกชนทชอวา

check และเปน

global ฟงกชน

check

เปนวธการเรยกใชทกๆ

ฟงกชนทเปน global

ของโมดล stock Import stock

stock.check

วธการเรยกใช

ฟงกชน check

ทเปน global ของโมดล

stock โมดล stock.py โมดล shop.py

Page 114: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 1 สรางโฟลเดอรใน Local Drive ทชอวา Go Sample (ถาใชระบบปฏบตการวนโดวสให

ทดลองสรางไวใน Drive C:\Go Sample) จากนนเปดโปรแกรม IDLE Python เลอกเมน File, เมนยอยNew

Window เมอจอภาพโมดลของ Python ปรากฏใหบนทกไฟลลงในโฟลเดอร Go Sample โดยใชชอวา check.py กลบไปท IDLE Python เปด New Window อกครงหนง ท าการบนทกจอภาพโมดลท 2 ลงในไฟล

ทชอวา shop.py ลงในโฟลเดอรเดยวกบไฟล check.py

รปท 4 ล าดบการสรางโมดลไปเกบไวใน C:\Go Sample

โมดล

Check.py

โฟลเดอร

โมดล

shop.py

IDLE Python

Page 115: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ทดลองสรางฟงกชน Global ลงในโมดล check.py ดงน

จากนนท าการบนทกไฟลโมดล check.py เมอเสรจสนแลวใหท าการทดลองเปดโมดล shop.py เพอเรยกใชฟงกชน Global จากโมดล check.py ตามค าสงตอไปน

Import check ส าหรบอางองโมดล check.py

check.stockin( ) เรยกใชฟงกชน global ทชอ stockin จากโมดล check.py

check.stockout( ) check.checkstock( )

Page 116: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ท าการทดสอบโปรแกรมโดยการรนค าสงในโมดล shop เพอดผลลพธการเรยกใชงานฟงกชนGlobal จากโมดล check.py ขอควรสงเกตการณเรยกใชฟงกชนแบบ Global เนองจากชอฟงกชนแบบ Global

มโอกาสซ ากบชอฟงกชนภายในโมดล shop ซงเปนฟงกชนแบบ Local ได รปแบบการเขยนโปรแกรม

เรยกใชฟงกชน Global จ าเปนตองมชอโมดล (บางครงเรยก Name Space) ของฟงกชน Global พมพไวขางหนาการเรยกใชฟงกชนเสมอ

ฟงกชนทใชงานแบบ Local

การสรางฟงกชนใดๆ ภายในโมดลมาตรฐานของ Python และมการเรยกใชงานฟงกชนเฉพาะ

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

Page 117: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 1 ท าการเปดโมดลวนโดวจาก IDLE Python

Page 118: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางน จะตองทดลองสรางโฟลเดอร python31 ไวใน Drive C:\ โดยสรางโฟลเดอรและไฟล

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

showdirectory, showfilelist โดยฟงกชนแรกทถกเรยกใชงานคอฟงกชน main ท าหนาทเปนเมนส าหรบ

เรยกใชฟงกชน showdirectory และ showfilelist ผานตวแปรทชอ yourchoice ทเกบคาหมายเลขหวเรองจากภายในฟงกชน main ส าหรบฟงกชนแสดงรายชอโฟลเดอรใน Drive C คอฟงกชนทชอ showdirectory

ประกอบดวยค าสง os.listdir( ) รวมกบค าสง for เพออานรายชอโฟลเดอรและไฟลตามทระบชอ Path หรอ Drive ในตวอยางนระบใหอานใน Drive C:\ ทงหมด เนองจากค าสง os.listdir( ) จะอานรายชอโฟลเดอรและ

ไฟล จงจ าเปนตองเลอกเฉพาะชอโฟลเดอรเทานน วธการกใชค าสง if เพอสรางเงอนไขในการแยกชอทเปน

Page 119: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

โฟลเดอร (สงเกตไมมการใชเครองหมาย. และนามสกล) ออกจากชอไฟลโดยการคนหาเครองหมาย. ภายใน

ตวแปร sNamedir ทมรปแบบค าสงในการคนหาเครองหมายดงน ‘.’in sNamedir ซงผลลพธทไดจากการคนหาเครองหมายจด เมอตรวจพบจะมคาเปน True เมอน าค าสงการคนหามารวมกบค าสง if (if ‘.’ In

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

‘.’ in sNamedir จะเหนวามการเพมค าสง not แทรกลงในการตรวจเงอนไข แคนกจะคนหาเฉพาะชอทเปน

โฟลเดอรเทานน นอกจากการใชงานฟงกชนทเปน Global และ Local แลวกมการสรางหรอเขยนฟงกชนเพอใชงาน

ภายใตรปแบบการเขยนโปรแกรมเชงวตถ (Object Oriented Programming) ตอนนหากเปดโมดลมาตรฐาน

ปกตทวไปมาเขยนโปรแกรม OOP แลวเราจะเรยกโมดลเปน Class Module แทนค าวาโมดลเฉยๆ และแนนอน ค าวาฟงกชนทเราสรางในโมดลเฉยๆ กตองเปลยนชอเรยกฟงกชนใหมเปนค าวา Method ของ Class

Module โดยแบงลกษณะการใชงาน Methon ออกเปน 2 ลกษณะการใชงาน คอ 1. Internal Method หรอ Private Method

2. Interface Method

การก าหนดขอบเขตของตวแปรภายในของฟงกชน

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

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

ของการประกาศตวแปรในโมดล เพอน ามาใชในฟงกชนมรปแบบตามตวอยางตอไปน

ตวอยางท 1 การใชตวแปรระดบโมดลรวมกบค าสงยอยภายในฟงกชน

Page 120: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางท 1 เปนการแสดงตวแปรทประกาศและใชงานในโมดล สงเกตในฟงกชน test จะมการ

เรยกใชงานตวแปร fullname รวมกบกลมค าสงยอยภายในฟงกชน เมอท าการทดสอบรนโปรแกรมตวแปร fullmane ทประการไว และตองน ามาใชรวมภายในฟงกชน test กสามารถแสดงคาขอมลทเกบไวในตวแปร

ไดอยางถกตอง ซงผลลพธทไดจะแสดงดงตอไปน

ผลลพธของการทดสอบโปรแกรมในตวอยางท 1 >>> จองพนท 3 X 3 ม.

>>> ของรานชอ shop

ตวอยางท 2 ท าไมถงตองใชค าสง Global กบตวแปรของโมดลภายในฟงกชน

Page 121: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

โปรแกรมเรมตนท างานทจดนโดยเรมจากฟงกชน one และ two

Page 122: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เมอรนโปรแกรมเพอทดสอบจะไดผลลพธดงน

นาแปลกมากทเกด Error เกดขนเมอเรยกใชฟงกชนทชอวา two ในบรรทด (x=x+300) ทตวแปร

ของโมดลมการเปลยนแปลงคาใหมภายในฟงกชนน ขอความ Error ทปรากฏจะถามถงตวแปร x ทก าลงจะเปลยนแปลงคาใหมเปนตวแปร x แบบ Local ภายในฟงกชนหรอตวแปร x นไดมาจากขางนอกฟงกชน (ตว

แปรของโมดล) ตรงนผพฒนาโปรแกรมตองเปนผเลอกการใชตวแปร x ตวนเอง ถาใชตวแปร x แบบ Local กแกไขค าสงเพมตามตวอยางตอไปนลงในฟงกชน two และท าการทดลองรนโปรแกรมใหม

ในบรรทด x=0 ทท าการเพมในฟงกชน two จะถอวาเปนตวแปรใหมทชอ x และจะใชงานเฉพาะในฟงกชน two เทานน ส าหรบตวแปร x ของโมดลจะไมสามารถน ามาใชงานในฟงกชนไดอกเลย

ตอมาในกรณทตองการใชตวแปร x ของโมดล ซงประกาศอยภายนอกฟงกชน มเงอนไขคอ ตอง

เกด Error จาก

ฟงกชนทชอ two

เกดจากการเรยกใชฟงกชนทชอ one ซงแสดงคาขอมลในตวแปร x

Page 123: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เปลยนแปลงคาภายในของตวแปร x ของโมดลนไดตลอดเวลา ตวอยางการเพมค าสง global เสรมลงใน

ฟงกชน two แสดงไวดงน

เมอก าหนด global x ในฟงกชน two ตอไปน การใชงานตวแปร x ตวนจะสามารถเปลยนแปลงคาภายในตวแปรได (ตวแปร x ตองประกาศในโมดลกอนเรยกใชในฟงกชนเสมอ)

ตวอยางท 3 แสดงการก าหนดขอบเขตของตวแปรทใชงานกบฟงกชน ใหเปดวนโดวโมดลใหมจาก IDLE ของ Python Shell เพอทดลองโปรแกรมตอไปน

import os #เชอมตอโมดลค าสงเกยวกบการเรยกใชไฟลตางๆ ใน Drive C:\

choice = 0 #ประกาศตวแปรโมดลเพอใชงานรวมกนในโมดลน filename = ‘’

def menu() :

global choice #อางถงตวแปรโมดลมาใชภายในฟงกชนและสามารถเปลยนแปลงคาขอมลของตวแปรนไดดวย

print(‘ เมนใชงาน \n 1.เปดใชเครองคดเลข \n 2.บนทกขอความ \n3.ออกจากการใชงาน’) choice = input('เลอกเมนยอยเพอใชงาน :')

def opennotpad():

filename = 'C:\\Windows\\notepad.exe' #เปนตวแปร Local ของฟงกชนเทานน

print('บนทกหมายเหตดวย %s' %filename)

os.system(filename)

def opencalculator():

filename = 'C:\\Windows\\system32\\calc.exe'

เพมค าสง global ตวแปรกอนเปลยนแปลงคาในตวแปร x

Page 124: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

print('คดเงนดวยโปรแกรมเครองคดเลขทชอ %s' %filename)

os.system(filename)

#จดเรมตนของโปรแกรม

while True : menu()

if choice == '1':

opencalculator() elif choice == '2' :

opennotepad()

else : break

Page 125: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 126: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางท 3 จะใชตวแปรทชอ choice เปนตวแปรเกบหวขอทตองการใชงาน (ตวแปร choice จะถกใชงานในหลายแหง เชน ในฟงกชนทชอ menu และทกลมค าสงเรมตนทค าสง if กรณนตวแปร choice

ควรประกาศในระดบโมดลจงจะเหมาะสมตอการใชงาน) จากฟงกชนทชอ menu ซงจะท าหนาทแสดงรายการของเมนการใชงานและรอรบหวเรองทตองการใชงานจากค าสง input ภายในฟงกชน เนองจากจะม

การเปลยนแปลงคาขอมลในตวแปร choice ทอยภายนอกฟงกชน จงจ าเปนตองระบค าวา Clobal choice ลง

ในฟงกชน menu เมอไดหมายเลขหวเรองกจะน าไปตรวจดวยกลมค าสง if เพอเรยกใชฟงกชนยอยอนๆ เชน กดหมายเลข 1 จะเรยกใชฟงกชน opencalculator ซงภายในฟงกชนนจะมตวแปรภายในทเปนแบบ Local

(ตวแปรชอ filename) เพอก าหนดชอไฟลเครองคดเลขหรอ call.exe (ไฟลเครองคดเลขทเรยกใชงานจาก

ตวอยางนจะไดรบการตดตง และมใชงานในระบบปฏบตการ Windows อยแลว) โดยจะน าคาในตวแปร filename ไปใชรวมกบค าสง os.system(filename) ซงท าหนาทรนไฟลทมนามสกลเปน .exe ของ

ระบบปฏบตการ Windows กดหมายเลข 2 ส าหรบรยกฟงกชน opennotepad (ลกษณะการใชค าสงและตวแปรจะคลายกบฟงกชน opencalculator) ส าหรบเปดโปรแกรม Notepad ของระบบปฏบตการสรปไดวาการ

ท างานของโปรแกรมในตวอยางท 3 ตวแปร choice คอยขางมบทบาทในการใชคาทไดรบมาจากภายใน

Page 127: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ฟงกชน menu เชอมโยงกบกลมค าสงในจดอนๆ ภายในโมดล ดงนนฟงกชนใดตองการใชตวแปร choice ท

ตองการเปลยนแปลงคาขอมลกอยาลมใช Global choice ไวในฟงกชนดวย

ลกษณะการใชคยเวรดอารกวเมนตและพารามเตอรรวมกบฟงกชน

(Argument And Parameter Function Keyword)

“ เพมอารกวเมนตสก 2 ตวในฟงชน Payment ดวย “ ถาใครเปนนกพฒนาโปรแกรมมอใหมหรอมอ

เกากคงไมมปญหาในการสรางอารกวเมนตเพมใหกบฟงกชนมากนก เพยงแตขอตวอยางรปแบบ (Syntax)

ของการเขยนใน python วาเคามรปแบบอยางไร เทานกลยท างานทเหลอตอไปได กอนทจะมาดวธการใชอารกวเมนตหรอบางครงกเรยกวาพารามเตอรเพมใหกบฟงกชน ตองมาดเหลผลวาท าไมตองใชอารกวเมนต

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

ฟงกชน

รปท 1 แสดงรปแบบการก าหนดอารกวเมนตใหกบฟงกชน

รปท 1 แสดงรปแบบการก าหนดอารกวเมนตส าหรบใหงานกบฟงกชน

อารกวเมนตทใชรวมกบฟงกชนของ Python จะประกอบดวย 2 ลกษณะคอ 1. อารกวเมนตแบบต าแหนงและจ านวนใชงานทแนนอน (Positional Argument)

2. อารกวเมนตแบบขยายจ านวนตามคาขอมล (Sequence Unpacking Operator)

อารกวเมนตแบบต าแหนงและจ านวนใชงานทแนนอน (Positional Argument)

การใชงานอารกวเมนตลกษณะนมกนยมใชงานทวไปรวมกบฟงกชนปกต รปแบบการประกาศ

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

ดงแสดงไวในตวอยางตอไปน

Page 128: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยาง แสดงวธประกาศอารกวเมนตทชอวา startno และ endno

การระบ startno และ endno ใหกบฟงกชน shownumber เปนทางผานคาขอมลจากภายนอกฟงกชนเขาไปใช

งานภายในฟงกชน ดวยการเรยกใชงานฟงกชนตามตวอยางตอไปน

a, b = 5, 10

shownumber(a, b)

โดยก าหนดคา 5 ใหกบตวแปร a และคา 10 ใหกบตวแปร b เมอเรยกใชฟงกชน shownumber ก

ก าหนดตวแปร a ณ ต าแหนงอารกวเมนตแรกฟงกชน ซงจะตรงกบอารกวเมนตทชอ startno เชนเดยวกบตวแปร b ทจะก าหนดต าแหนงอารกวเมนตท 2 ซงตรงกบอารกวเมนต endno

a, b = 5, 10 def shownumber (startno, endno)

shownumber (a, b) for …

……. …….

ค าสงดานเรยกใชฟงกชน ฟงกชนและค าสงภายใน

รปท 2 แสดงการผานคาขอมลจากตวแปร a และ b ตรงตามต าแหนงของอารกวเมนตแตละตว

การโอนถายคาขอมลในตวแปร a ไปยงอารกวเมนต startno จะเกดขนโดยอตโนมต (ชนดการโอนยายขอมลระหวางตวแปรปกตกบอารกวเมนตจะเปนแบบ Tuple ซงมความหมายวา เมอคาขอมลอารกวเมนตมการ

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

Page 129: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ซงเปนตวแปรตนทาง เมอตวแปร a ผานคาขอมลไปยงอารกวเมนต startno จาก 5 ไปเปน 7 คาขอมลในตว

แปรตนทางคอ ตวแปร a กคงคาเทากบ 5 ไวดงเดม) เมอฟงกชนถกเรยกใชงานเสนอ ลองพมพกลมสงเกยวกบฟงกชนรวมกบอารกวเมนตแบบท 1 ตามตวอยางตอไปน

ตวอยางท 1 แสดงการเรยกใชฟงกชนพรอมการผานคาขอมลใหกบอารกวเมนตของฟงกชน เปดวนโดวโมดลใหมจาก IDLE ของ Python Shell เพอทดลองโปรแกรม

Page 130: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 131: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางท 1 สมมตใหเปนโปรแกรมเกยวกบรายชอนกเรยนในหองเรยนภาษาองกฤษ

โดยจดเกบรายชอนกเรยนไวในตวแปร englishroom ในโปรแกรมตวอยางนประกอบดวย 2 ฟงกชนท า

หนาทคนหาชอทมตวอกษรของชอมากนอยตามทตองการ ยกตวอยาง ถาตองการแสดงรายชอนกเรยนทมมากกวา 3 ตวอกษร ใหเลอกเมนหมายเลข 1 จะเปนการเลอกฟงกชนชอ namemorechar ทประกอบดวย

อารกวเมนตชอ room ส าหรบรบคาขอมลทเปนรายชอนกเรยน ซงจะไดจากตวแปร englishroom และ

อารกวเมนตชอ numchar ส าหรบรนจ านวนตวอกษรทตองการเปรยบเทยบในฟงกชน โดยจะไดคาจากตวแปร b หรอหากตองการแสดงรายชอนกเรยนทมนอยกวา 3 ตวอกษร ใหเลอกเมนหมายเลข 2 ซงจะ

เรยกใชฟงกชนชอ namemorechar ทม 2 อารกวเมนตและมการท างานคลายๆ กบฟงกชนแรก

Page 132: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

อารกวเมนตแบบขยายจ านวนตามคาขอมล (Sequence Unpacking Operator)

การสรางฟงกชนทมอารกวเมนตส าหรบใชงาน โดยสวนใหญจะก าหนดอารกวเมนตใชงานเปนจ านวนทแนนอน แตในกรณทตองการสรางฟงกชนทจ าเปนตองมอารกวเมนต แตไมตองการก าหนดจ านวน

ทแนนอน แบบนควรจะใชอารกวเมนตแบบ Sequence Unpacking Operator (ในภาษา Python จะใชเครองหมาย * น าหนาอารกวเมนตแบบน) ลองมาดรปแบบการก าหนดอารกวเมนตแบบนรวมกบฟงกชน

ตามตวอยางตอไปน

def shownumber(*startendno) : for x in range(startendno[0], startendno[1])

print(x)

จากตวอยางนฟงกชน shownumber จะมเพยงแคหนงอารกวเมนตทชอ *startendno (ซงในตวอยางจากหวขอท 1 ซงเปนแบบ Positional Argument จะม 2 อารกวเมนตคอ startno endno) แตสามารถรองรบ

การขยายจ านวนอารกวเมนตทตองใชงานโดยอตโนมต ตามรป 9 แสดงการเรยกใชฟงกชนทมอารกวเมนตแบบขยายจ านวนตามคาขอมล

เสนทางการสงผานคาขอมลของทง 3 ตวแปร

ภาพแสดงการเรยกใชฟงกชนและผานคาขอมลไปใหกบอารกวเมนต

ค าสงดานเรยกใชฟงกชน

a,b,c = 5,7,10

Shownumber(a,b,c)

def

shownumber(*startendno) :

(a)

startendno[0]

(b)

startendno[2] (c)

startendno[1]

แสดงการขยายจ านวนอารกวเมนตของ startendno

ออกเปน 3 อารกวเมนตโดยอตโนมต โดยภายใน

ฟงกชนจะเรยกเปน startendno[0] ส าหรบ

อารกวเมนตแรก ซงไดคาขอมลจากตวแปร a,

อารกวเมนต startendno[1] ไดจากตวแปร b

ตามล าดบไปจนครบ

Page 133: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ทดลองการใชงานอารกวเมนตตามตวอยางโปรแกรมตอไปน

ตวอยางท 1 เปดวนโดวโมดลใหมจาก IDLE ของ Python Shell ทดลองปอนค าสงตอไปน

จากตวอยางท 1 แสดงการผานคาตวแปรจ านวน 3 คาไปยงฟงกชน showitem ซงภายในฟงกชนจะแสดงวธการเขยนโปรแกรมดงคาจากอารกวเมนตแบบขยายจ านวนตามคาขอมลดวย (Item[0], Item[1],

Item[2])

ตวอยางท 2 แสดงวธดงคาจากอารกวเมนตในฟงกชนดวยค าสง for

Page 134: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางนแสดงการผานคาจากตวแปรตนทางจ านวน 3 คา ผานอารกวเมนตทชอ * item เมอตองการ

ใชคาในอารกวเมนตภายในฟงกชนจะใชวธอานคาดวยค าสงวนท าซ าหรอค าสง for เพออานคาทเกบไวใน

อารกวเมนต * item ตงแตคาแรกไปจนคาสดทาย (ลกษณะคาทจดเกบใน * item จะมวธเกบเหมอนกบตวแปร Collection Data ประเภท Tuple ภาพจ าลองการเกบคาขอมลในอารกวเมนตเปนดงน

* item = (TV’, ‘DVD’, ‘VCD’)

การอางต าแหนงโดยตรง (Item[0], Item[1], Item[2])

ดงนนการเรยกใชคาภายในอารกวเมนตจงเรยกไดจากต าแหนงโดยอางองหมายเลข Index ตามตวอยางท 1 หรอใชวธการอานจากค าสง for ในตวอยางท 2

ตวอยางท 3 แสดงโปรแกรมการใชอารกวเมนตแบบ Sequence Unpacking Operator โดยผานตวแปร

Collection Data ประเภท Dictionary ดวยเทคนคการผานคาขอมล **- Operator

Page 135: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 3 เปนเทคนคการใช Unpacking Operator ในฝงคาขอมลตนทาง ใหสงเกตทตวแปรตน

ทาง ซงปกตจะมจ านวนตวแปรเทากบจ านวนคาขอมลทตองการผานไปยงอารกวเมนตของฟงกชน แตใน

ตวอยางนตวแปรตนทางจะมเพยงตวเดยว และเปนตวแปรชนด Dictionary คอมคาขอมลในตวแปรไดมากกวาหนงคา ในทนประกอบดวย code : sotv42, title : sony42tv, cost : 50000 ซงนบไดจ านวน 3 คา

ขอมล เมอสงผานไปยงอารกวเมนตของฟงกชน ซงประกอบดวย code, title, cost (การตงชออารกวเมนตของฟงกชนเมอตองใชเทคนคการสงผานคาจากตวแปรตนทางหนงตวแปรหลายคาขอมล ชออารกวเมนต

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

Page 136: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Stock = [‘code’ : ‘sotv42’, ‘title’ : ‘sony42tv’...]

น าชอ Key มาก าหนดชออารกวเมนต

Def showitem(code, title..) :

จงจะสามารถสงผานขอมลดวยเทคนค Unpacking Operator ตนทางได จากตวแปร stock ซงอาศย

เทคนคการกระจายคาขอมลภายในแบบ Dictionary ใหลงพอดกบอารกวเมนตจงตองระบเครองหมาย ** ไวหนาตวแปรตนทาง ซงจะเขยนไดเปน **stock รวมกบการเรยกฟงกชน showitem(**stock) เพอใชงาน

ความแตกตางระหวางฟงกชนทใชและไมใชค าสง return

การสรางฟงกชนเพอใชงานในโมดลบางกรณ เมอมการประมวลผลภายในฟงกชนเสรจสน กม

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

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

ค าสง return ภายในฟงกชน Factorial ตามตวอยาง

เมอมการค านวณคาของ Factorial ภายใตค าสง for เสรจสนแลวจะท าการสงคาทอยในตวแปร a กลบไปจดทเรยกใชฟงกชน ตามตวอยางการเรยกใชฟงกชน Factorial ดงน

Key ท 1 คาขอมลท 1 Key ท 2 คาขอมลท 2

Page 137: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Resultfactorial = factorial(5)

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

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

ทดลองโปรแกรมตามตวอยางตอไปน ส าหรบการใชค าสง return รวมกบฟงกชน

ตวอยางท 1 เปดวนโดวโมดลใหมจาก IDLE ของ Python Shell และทดลองปอนค าสงตอไปน

Page 138: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 139: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางขางตนเปนโปรแกรมส าหรบค านวณคา Factorial และ Fibonacci โดยเลอกจากเมนท

ตองการค านวณ เชน เลอกเมนหมายเลข 1 ส าหรบค านวณคา Factorial โดยเรยกใชฟงกชนทชอ Factorial พรอมสงคาขอมลผานอารกวเมนตของฟงกชน เขาสกระบวนการค านวณกลมค าสงในลปหรอค าสง for จน

Page 140: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ไดค าตอบสดทายทเกบคาผลลพธนน ตวแปร a ในขนตอนสดทายของฟงกชนคอการใชค าสง return คาใน

ตวแปร a กลบออกไปขางนอกฟงกชน ซงจะสงผานคาขอมลไปยงตวแปรตนทางทชอ y ส าหรบฟงกชน Fibonacci กมลกษณะการ return ผลลพธเชนเดยวกน

Page 141: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 7 ฝกเขยนโปรแกรมกบเตาไพทอน

ไพทอนมโมดล turtle ซงมตนฉบบมาจากภาษา Logo โดยจะมในโปรแกรม Python เวอรชน Python

2.6 และ Python 3 เปนตนมา สาหรบใชฝกเขยนโปรแกรมขนเรมตน โดยใชเตาในการลากเสนหรอวาดรป

ในทนจะแนะนาใหใชโหมดสครปต

ตวอยาง ใหทดลองเขยนคาสงดงตอไปน

เมอรนโปรแกรม จะไดผลลพธคอ

บรรทดบนสดของโคดคาสง จะตองใชคาสง from turtle import * เพอเรยกใชตวแปร ฟงกชน หรอเมธ

อดทงหมดจากโมดล turtle เพอใชในการวาดภาพได

Page 142: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

1. forward() / fd() ลากเสนตรงไปขางหนามหนวยเปนพกเซล โดยภายในวงเลบใสตวเลขทเปนชนด integer

หรอ float เชน

forward(100) เตาจะเดนหนา 100 พกเซล

forward(-100) เตาจะเดนหนา -100 พกเซล หรอถอยหลง 100 พกเซลนนเอง (ทศตรงขาม)

2. back() / bk() / backward() ลากเสนตรงไปขางหลง มหนวยเปนพกเซล เชน

backward(100) เตาจะเดนถอยหลง 100 พกเซล

backward(-100) เตาจะเดนถอยหลง -100 พกเซล หรอเดนหนา 100 พกเซลนนเอง

Page 143: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

3. right() / rt() หนไปทางขวา ทามมตามองศาทกาหนดจากมมเดม เชน right(90) หนหวเตาไปทางขวา 90

องศาจากมมเดม

4. left() / lt() หนไปทางซาย ทามมตามองศาทกาหนดจากมมเดม เชน left(90) หนหวเตาไปทางซาย 90 องศา

จากมมเดม

5. goto(x, y) / setpos(x, y) / setposition(x, y) ยายเตาไปยงตาแหนงทแนนอน โดยไมเปลยนทศทางของเตา

ตวอยางเชน

Page 144: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

6. setx() ตงคาพกดในแกน x ของเตา โดยทพกดในแกน y ไมมการเปลยนแปลง

7. sety() ตงคาพกดในแกน y ของเตา โดยทพกดในแกน x ไมมการเปลยนแปลง

Page 145: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

8. setheading() / seth() กาหนดหวเตาใหหนไปตามทศทตองการ ในวงเลบใหใสตวเลของศาเขาไป โดย 0

คอทศตะวนออก, 90 คอ ทศเหนอ, 180 คอ ทศตะวนตก และ 270 คอ ทศใต

9. home() ยายเตาไปยงจดเรมตน นนกคอ พกด (0,0) และตงคาหวเตาไวททศทางเรมตน นนคอ 0 องศา หรอ

ชไปทางขวา

10. circle(รศม, องศา, จานวนเหลยม) ใชวาดรปวงกลม

- circle(รศม) ใชวาดรปวงกลม เชน circle(50) จะไดวงกลมทมรศมเทากบ 50

- circle(รศม, องศา) ใชวาดรปวงกลมไมครบวง ตามองศาทกาหนด เชน circle(50,180) จะไดครง

วงกลมทมรศมเทากบ 50

- circle(รศม, องศา, จานวนเหลยม) ใชวาดรปหลายเหลยม เชน circle(100,360,5) จะไดวงกลมทม

หาเหลยม

Page 146: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

11. dot(ขนาดเสนผานศนยกลาง, "ส") ใชวาดจดวงกลม โดยระบเสนผานศนยกลางและส

12. stamp() ปมตวเตาใหอยในตาแหนงทกาหนด เชน เมอเดนเตาเดนหนาไป 100 พกเซล ใหทาการปมรป

เตาไวตาแหนงนน ตวอยางเชน

Page 147: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 148: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

13. clearstamp() ลบตวเตาทเราทาการปมเอาไว

14. undo() ยกเลก (ซ าๆ) การกระทาของเตาครงลาสด

15. speed() ใสความเรวในการเดนของตวเตา มคาตงแต 0 - 10 โดย 0 = เรวทสด, 10 = เรว, 6 = ปกต, 3 = ชา,

1= ชาทสด เชน speed(3)

Page 149: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

1. position() / pos() สงกลบคาตาแหนงปจจบนของเตา (x, y)

2. towards(x, y) สงกลบคามมระหวางเสนจากตาแหนงเตาไปยงตาแหนงทระบ

3. xcor() สงกลบคาพกดแกน x ของตวเตา

4. ycor() สงกลบคาพกดแกน y ของตวเตา

5. heading() สงกลบคาองศาของหวเตา

6. distance(x, y) สงกลบคาระยะทางจากเตาไปยงตาแหนง (x, y) ทอางอง

1. pendown() / pd() / down() เปนคาสงวางปากกา

2. penup() / pu() / up() เปนคาสงยกปากกา

3. pensize() เปนคาสงสาหรบใชกาหนดขนาดตวเตาและขนาดของเสนเปนหนวยเปนพกเซล เชน pensize(3)

4. pen() ตงคาแอตทรบวตหลายๆ อยางของปากกาในคาสงเดยว ซงมคาดงตอไปน :

- shown แสดงหรอซอนปากกา ม 2 คา คอ True/False

- pendown วางปากกา ม 2 คา คอ True/False

Page 150: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

- pencolor ใสสปากกา โดยระบชอสลงไป เชน pencolor = "red"

- fillcolor เตมสวตถแบบปด โดยระบชอสลงไป เชน fillcolor = "red"

- pensize ใสขนาดปากกา

- speed ใสความเรวในการวาดของปากกา มคาตงแต 0 - 10

5. isdown() สงกลบคา True ถาสถานะเปนวางปากกา และสงกลบคา False ถาสถานะเปนยกปากกา

1. pencolor() สงกลบคาหรอตงคาสปากกา โดยม 3 รปแบบ คอ

- pencolor() สงกลบคา pencolor ปจจบน สงคากลบมาเปนสตรงระบส

- pencolor(ชอส) ตงคา pencolor เปน colorstring เชน "red", "yellow" หรอ "# 33cc8c"

- pencolor(r, g, b) ตงคา pencolor เปนส RGB โดยแตละ R, G และ B ตองอยในชวง 1.0 - 255

2. fillcolor() สงกลบคาหรอตงคาการเตมส โดยม 3 รปแบบ คอ

- fillcolor() สงกลบคา fillcolor ปจจบน สงคากลบมาเปนสตรงระบส

- fillcolor(ชอส) ตงคา fillcolor เปน colorstring เชน "red", "yellow" หรอ "# 33cc8c"

- fillcolor(r, g, b) ตงคา fillcolor เปนส RGB โดยแตละ R, G และ B ตองอยในชวง 1.0 - 255

3. color() เปนคาสงกาหนดสใหกบเสน (ชอสในภาษาองกฤษ) เชน color("yellow") ตวอยางเชน

Page 151: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 152: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

1. begin_fill() กาหนดจดเรมตนในการเตมส โดยจะตองใสคาสงนกอนคาสงวาดรปทรง

2. end_fill() เตมสรปทรง โดยจะตองใสคาสงนหลงคาสง begin_fill()

1. reset() เปนคาสงทใชลบภาพวาดของเตาออกจากหนาจอ ปรบตาแหนงตวเตามาอยตรงกลางหนาจออก

ครง และตงคาตวแปรใหเปนคาเรมตน

Page 153: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2. clear() เปนคาสงทใชลบภาพวาดของเตาออกจากหนาจอ แตตาแหนงของเตาและภาพวาดของเตาอน ๆ จะ

ไมไดรบผลกระทบ

3. write(arg, move, align, font) ใชเขยนขอความ เชน write("Python", True, align = "left", font = ("Arial",

8, "normal"))

- arg การแทนสตรงของอารกวเมนต เชน "Python"

- move หากเปน True ปากกาจะถกยายไปทมมลางขวาของขอความ โดยคาเรมตนยายเปน False

- align การจดตาแหนงขอความ ไดแก "left", "center" และ "right" เชน align = "left"

- font กาหนดรปแบบตวอกษร ไดแก fontname, fontsize, fonttype เชน font = ("Arial",

8, "normal")

1. hideturtle() / ht() คาสงในการซอนเตาไมใหมองเหนตวเตา เมออยในระหวางการทาภาพวาดทซบซอน

บางสวน เพราะการซอนเตาจะชวยใหการวาดภาพสามารถสงเกตไดงายขน

2. showturtle() / st() คาสงในการแสดงเตา

3. isvisible() สงกลบคา True ถาอยในสถานะแสดงตวเตา สงกลบคา False ถาอยในสถานะซอนตวเตา

Page 154: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

4. shape() เปนการระบรปรางของตวเตา โดยระบรปรางเปนสตรงอยภายในวงเลบ ()

ไดแก "arrow", "turtle", "circle", "square", "triangle", "classic" ลงไป เชน shape("circle") หรอ

shape("square") หากตองการเปลยนกลบเปนรปลกศรใหใช shape("classic")

5. shapesize(กวาง, ยาว) / turtlesize(กวาง, ยาว) กาหนดขนาดรปราง

6. tilt(angle) หมนรปรางของเตาใหเอยงจากมมของรปรางเดมของเตา แตไมเปลยนทศทางของหวเตา

Page 155: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

1. onclick() กาหนดเหตการณเมอมการคลกเมาสทตวเตา โดยมการสงคาพกด x, y ของจดทคลกบนตวเตา

เชน เมอคลกทตวเตาใหโปรแกรมเรยกฟงกชน rectangle

2. onrelease() กาหนดเหตการณเมอมการปลอยเมาสทตวเตา

Page 156: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เมอคลกเมาสทตวเตา เมอปลอยเมาส

3. ondrag() กาหนดเหตการณเมอมการคลกคางทตวเตาแลวลาก ตวอยางเชน คาสง ondrag(goto) เมอคลก

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

Page 157: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

1. bgcolor() เปนคาสงกาหนดสภาพพนหลง (ชอสในภาษาองกฤษ) เชน bgcolor("orange")

2. clear() / clearscreen() ลบภาพวาดทงหมดและเตาทงหมดออกจากหนาจอ รเซตหนาจอใหมสถานะ

เรมตน คอ พนหลงสขาว

3. reset() / resetscreen() รเซตเตาทงหมดบนหนาจอใหอยในสถานะเรมตน

Page 158: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

4. screensize() เปนคาสงกาหนดขนาดใหกบหนาตาง มหนวยเปนพกเซล เชน screensize(2000,1500)

5. title() เปนคาสงกาหนดหวขอ title ของหนาตาง เชน title("Rectangle")

6. mainloop() เปนคาสงลปคางหนาจอไวสาหรบรอวาดรปตอ

ตวอยางท 1

Page 159: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางท 2

Page 160: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 8 Python กบการเชอมตอฐานขอมล

ภาษา Python มชองทางในการเชอมโยงกบฐานขอมล 2 แบบ คอ

1. การเชอมโยงกบฐานขอมลผานไลบรารมาตรฐานประเภท DBM (Database Manager) เหมาะ

กบขอมลทไมมความซบซอนมาก เชน ขอมลมเพยง 1 ตาราง เปนตน

2. การเชอมโยงฐานขอมลผานไลบรารมาตรฐาน DB-API 2.0 เหมาะกบฐานขอมลประเภท

RDBMS (Relational Database Management System) เชน Oracle, MySQL หรอ MS SQL Server เปนตน

โครงสรางฐานขอมล

1. ตาราง (Table) ส าหรบจดเกบกลมขอมล เชน ตารางลกคา ภายในตารางจะเปนขอมลของลกคา

ทงหมด ตารางสนคา จะเกบกลมรายละเอยดสนคาแตละรายการไวในตารางสนคาเทานน

2. เรคอรด (Record) บางครงเรยกวา Row รายละเอยดขอมลแตละรายการ เชน เรคอรดของลกคา

คนท 1 มรายละเอยดดงน คอ รหส, ชอ, นามสกล, ทอย, เบอรโทร, อเมล หรอเรคอรดของสนคาชนท 1 จะมรายละเอยดดงน คอ รหสสนคา, ชอ, ยหอ, รน, หมายเลขเครอง, สสนคา เปนตน

3. ฟลด (Field) หรอบางครงเรยกวา คอลมน (Column) เปนองคประกอบของเรคอรด เชน เรคอรด

ของลกคาคนท 1 มการเกบรายละเอยด 6 รายการตอการบนทก 1 เรคอรด ภายในรายละเอยด 6 รายการดงกลาว ประกอบดวย รหส, ชอ, นามสกล, ทอย, เบอรโทร, อเมล ซงทกรายการยอยทยกตวอยางกคอ Field

ยอยภายในเรคอรดนนเอง

ทมาของภาพ : https://www.9experttraining.com

Page 161: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

1. การเลอกใชฐานขอมลประเภท Flat File Database

เปนพนฐานการจดเกบขอมลเปนไฟล Text หรอ Binary เหมาะกบขอมลขนาดเลกจนถงขนาดกลาง ไฟลชนดนจะมความจทไมจ ากด ขนอยกบปรมาณของขอมลทจดเกบ เมอเทยบกบอก 2 ประเภท ไฟล

ฐานขอมลประเภทนจะมความจไฟลนอยทสด อกทงยงงายตอการสราง คาใชจายนอย สามารถใชงานรวมกบโปรแกรม Spreadsheet ได แตขอดอยคอความเรวในการเรยกใชงานขอมล ยงมขอมลมาก ความเรว

ในการคนหาหรอดงขอมลมาใชกจะท างานไดชา ส าหรบภาษา Python สามารถใชค าสงในการสราง อาน

เขยนคาขอมลทตองการจดเกบในไฟลฐานขอมลประเภทนได

ตวอยางท 1 โปรแกรมจะท าการสรางไฟล datatest.txt ขนมาหนา Desktop แลวใหรบคาการปอนชอ

สนคาและราคาสนคาในหนาตาง Python Shell ไปเรอยๆ จนกวาจะพมพ exit ในชองปอนชอสนคาและปอนราคาสนคา ขอมลชอสนคาและราคาสนคาจะถกจดเกบในไฟล datatest.txt โดยอตโนมต

- เขยนค าสง Python

Page 162: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

- ปอนชอสนคาและราคาสนคาในหนาตาง Python Shell

- เปดไฟล datatest.txt บนหนา Desktop จะมขอมลดงน

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

ขอมลใหมนจะไปทบขอมลเดม ท าใหขอมลเดมหายไป เพราะจากค าสงในบรรทดท 2 คอ fdata =

open('C:\\Users\OFFBKK\Desktop\datatest.txt', 'w') จะพบวาเมอใชอารกวเมนตตวอกษร 'w' จะท าใหขอมลใหมไปทบขอมลเดม หากตองการเพมขอมลเขาไป โดยไมใหขอมลเดมสญหาย ตองเปลยนจาก 'w' เปน 'a'

คาคงทส าหรบใชงานกบอารกวเมนต ลกษณะการท างานรวมกบค าสง open

a สรางไฟลหรอแกไขขอมลแบบเพมเตม w สรางไฟลหรอแกไขขอมลแบบทบซ า r อานขอมลในไฟลทก าลงเปดใชงาน

Page 163: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางท 1 ประกาศตวแปร lineno เพอใชเกบจ านวนครงในการปอนขอมล โดยมคาเรมตน

เทากบ 1 และจะเพมขนทละหนงเพอรบขอมลชอสนคาและราคาสนคาชดใหม โปรแกรมจะเชอมตอกบไฟล datatest.txt ดวยค าสง open และสนสดการเชอมตอดวยค าสง close ในการวนซ าเพอรบคาการปอนขอมล

ของสนคาแตละรอบจะใชค าสง while True ซงในแตละครงของการวนลปจะเขยนขอมลลงในไฟล datatest.txt ดวยค าสง write

ตวอยางท 2 เขยนโปรแกรมรวมค าสงเขยนไฟล และอานคาขอมลแบบ read, readline และ

readlines

Page 164: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 165: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เมอพมพ 1 จะท าตามค าสงฟงกชน writefile() จนกวาจะปอนค าวา exit กจะออกจากฟงกชน

Page 166: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เมอพมพ 2 จะท าตามค าสงฟงกชน readallfile()

เมอพมพ 3 จะท าตามค าสงฟงกชน readonelinefile()

Page 167: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เมอพมพ 4 จะท าตามค าสงฟงกชน readlineloopfile ()

2. ฐานขอมลประเภท File Server-Based Database

ภาษา Python มโมดลทมความสามารถในการจดสรางไฟลฐานขอมลแบบ RDBMS (Relational

Database Management System) ทมขนาดของไฟลเหมาะกบการจดเกบขอมลระดบเลกถงระดบกลาง ส าหรบโมดลของ Python ทใชดแลไฟลฐานขอมลน คอ SQLite3 ซงถกตดตงพรอมกบโปรแกรม Python

แลว โดยรองรบการใชค าสง select, insert, delete, update, create, drop, alter เปนตน

การใชงาน SQLite3 แบงออกเปนล าดบขนตอนดงน คอ

2.1 การอางองโมดลของ SQLite3

Page 168: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2.2 สรางไฟลฐานขอมล มรปแบบการเขยน ดงน

โดย cn เปนตวแปรของ Connect Object

sqlite3 เปนประเภทของฐานขอมลทใชงาน ในทนคอโมดล SQLite3 student เปนทอยของไฟลฐานขอมล ซงจะตอง path ทอยของไฟลใหถกตอง

2.3 การใช Cursor Object เมอเชอมตอกบฐานขอมลไดแลว ตอมาจะตองใช Cursor Object เพอ

เขาถงตารางและขอมลในตาราง โดยตองเขยนค าสง cur = cn.cursor() เพอเชอม Cursor เขากบ Cursor

Object

2.3.1 การใช Cursor Object กบการอานคาขอมลดวยค าสง Select ค าสงทใชในการอานคาขอมล

ตางๆ จากตาราง คอ ค าสง select โดยมรปแบบการเขยน ดงน คอ

รปแบบการใช select ส าหรบอานเฉพาะ Field ทระบ

รปแบบ : select ชอฟลดท 1, ชอฟลดท 2 from ชอตาราง

ตวอยาง : select id, name, lastname from student

รปแบบการใช select ส าหรบอานทกฟลดในตาราง

รปแบบ : select * from ชอตาราง

ตวอยาง : select * from student

Page 169: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบการใช select พรอมเงอนไขทตองการอานเรคอรด

รปแบบ : select * from ชอตาราง where เงอนไข

ตวอยาง : select * from student where age > 15

รปแบบการใช select รวมกบการเรยงขอมล (Sort)

รปแบบ : select * from ชอตาราง order by ชอฟลด

ตวอยาง (นอยไปมาก) : select * from student order by age

ตวอยาง (มากไปนอย) : select * from student order by age desc

รปแบบการใช select พรอมเงอนไขและการเรยงขอมล

รปแบบ : select * from ชอตาราง where เงอนไข order by ชอฟลด

ตวอยาง : select * from student where age > 15 order by age

รปแบบการใช select กบการเชอมระหวางตาราง รปแบบค าสง จะเขยนไดดงน

select ชอตารางท 1.ชอฟลด, ชอตารางท 2.ชอฟลด from ชอตารางท 1, ชอตารางท 2

where ชอตารางท 1.ชอฟลด (คยรองหรอ FK) = ชอตารางท 2.ชอฟลด (คยหลก หรอ PK)

ตวอยาง : select ORDER.OrderNo, ORDER.OrderDate, CUSTOMER.CustFirst,

CUSTOMER.CustLast, CUSTOMER.CustPhone

from ORDER, CUSTOMER

where ORDER.CustID = CUSTOMER. CustID

Page 170: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2.3.2 การใช Cursor Object กบการเพมขอมลใหมในตารางดวยค าสง Insert

รปแบบการเขยนค าสง insert ส าหรบเพมขอมลใหม

รปแบบการใชค าสง insert ส าหรบเพมขอมลลงทกฟลดของตาราง

รปแบบ : insert into ชอตาราง values (คาขอมลท 1, คาขอมลท 2, ..., คาขอมลท n)

ตวอยาง : insert into student values (1,'Sawittree', 'Taweekarn', 13, 'M.2/5')

รปแบบการใชค าสง insert ส าหรบเพมขอมลบางฟลดของตาราง

รปแบบ : insert into ชอตาราง(ชอฟลดท 1, ชอฟลดท 2)values(คาขอมลท 1, คาขอมลท 2)

ตวอยาง : insert into student (id, name, lastname) values (2,'Tawee', 'Meesuk')

2.3.3 การใช Cursor Object กบการแกไขขอมลในตารางดวยค าสง Update

รปแบบการเขยนค าสง update ส าหรบแกไขขอมลในตาราง

Page 171: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบการใชค าสง update ส าหรบแกไขขอมลในฟลดทระบทกเรคอรดในตาราง

รปแบบ : update ชอตาราง set ชอฟลดท 1 = คาขอมล, ชอฟลดท 2 = คาขอมล

ตวอยาง : update student set age = age + 1

จากตวอยางจะเปนการเพมอายนกเรยนทกคนในตาราง โดยเพมขนคนละ 1 ป

รปแบบการใชค าสง update โดยใชรวมกบค าสง where เพอแกไขขอมลบางเรคอรด

รปแบบ : update ช อตาราง set ช อ ฟลดท 1 = ค าขอ มล , ชอ ฟลดท 2 = ค าขอ มล

Where ชอฟลด 1 = คาขอมล

ตวอยาง : update student set classroom = 'M.3/2' age = 14 where id = 1

2.3.4 การใช Cursor Object กบการลบเรคอรดขอมลจากตารางดวยค าสง Delete

รปแบบการใชค าสง delete ส าหรบลบเรคอรดทงหมดในตาราง

รปแบบ : delete from ชอตาราง

ตวอยาง : delete from student

รปแบบการใชค าสง delete รวมกบค าสง where ส าหรบลบบางเรคอรดในตาราง

รปแบบ : delete from ชอตาราง where ชอฟลด = คาขอมล

ตวอยาง : delete from student where id = 1

Page 172: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2.4 การสรางตารางและความสมพนธของตาราง (Relationship)

การสรางตารางในไฟลฐานขอมล ม 2 วธ คอ การเขยนโคดค าสงสรางตาราง และการใชโปรแกรมส า เรจรปสรางตาราง โดยใหท าการดาวนโหลดโปรแกรม DB Browser for SQLite จากเวบไซต

https://sqlitebrowser.org/ และท าการตดตงโปรแกรมเพอใชจดการฐานขอมล ดงน

Page 173: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบการเขยนค าสง create เพอสรางตาราง :

create table ชอตาราง (

ชอฟลดท 1 ชนดขอมล, ชอฟลดท 2 ชนดขอมล,

ชอฟลดสดทาย ชนดขอมล)

ตวอยาง :

Page 174: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เปดโปรแกรม DB Browser for SQLite ขนมา แลวคลกทป ม open Database เปดไฟลฐานขอมล

product.db ทสรางไวขนมา เพอดตารางทสรางขนจากการเขยนโคดค าสง

รปแบบการเขยนค าสง create เพอสรางตาราง โดยระบ Primary Key:

create table ชอตาราง (

ชอฟลดท 1 ชนดขอมล, ชอฟลดท 2 ชนดขอมล,

ชอฟลดสดทาย ชนดขอมล,

constraint[] primary key (ชอฟลดทเปนคยหลก PK))

ตวอยาง :

Page 175: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เปดโปรแกรม DB Browser for SQLite ขนมา แลวคลกทป ม open Database เปดไฟลฐานขอมล

student.db ทสรางไวขนมา เพอดตารางทสรางขนจากการเขยนโคดค าสง

รปแบบการเขยนค าสง create เพอสรางตารางทมความสมพนธ (Relationship) กบตารางอน :

create table ชอตาราง (

ชอฟลดท 1 ชนดขอมล,

ชอฟลดท 2 ชนดขอมล, ชอฟลดท 3 ชนดขอมล, constraint [ชอฟลดทเปน Foreign Key] references

ชอตารางทอางอง Primary Key(ฟลดทเปน Primary Key)

on update cascade

Page 176: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

on delete cascade

)

ตวอยาง :

เมอรนโปรแกรม จะไดตาราง 2 ตาราง คอ product และ productgroup ดงรป

Page 177: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2.5 เพมเรคอรดขอมลลงในตาราง ดวยค าสง insert ของ SQL Statement

รปแบบการใชค าสง insert เพมเรคอรดในตาราง

insert into ชอตาราง values (คาขอมล, คาขอมล, คาขอมล)

ตวอยาง :

Page 178: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยาง มการสรางฟงกชน productinput() ขนมาเพอรบคาขอมลใสในตาราง product (สราง

เอาไวกอนแลวในขนตอนการสรางตาราง) โดยรบคาขอมลทางคยบอรดดวยค าสง input() แลวบนทกไวในตวแปร a, b, c, d, e ตามล าดบ (ตามจ านวนฟลดในตาราง) หลงจากนนใชค าสง cur.execute("insert into

product values(?,?,?,?,?)",(a,b,c,d,e)) โดยใชเครองหมาย ? อางองคาขอมลของตวแปรทจะน าไปใสในแตละ

ฟลดของตาราง product

Page 179: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

เมอรนโปรแกรม จะเขาสหนาจอ Python Shell ใหเราท าการกรอกขอมล ดงรป

เมอเปดโปรแกรม DB Browser for SQLite กจะไดเรคอรดขอมลในตาราง ดงรป

Page 180: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2.6 อานคาขอมลจากตารางดวยค าสง select มหลายรปแบบ ดงน

รปแบบท 1 การอานเรคอรดระหวางค าสง cursor กบตวแปร Python แบบสงผานคาขอมลไปยงตว

แปรโดยตรง

รปแบบ : cur.execute("select * from ชอตาราง")

ชอตวแปร = cur.fetchall() print(ชอตวแปร)

ตวอยาง :

Page 181: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธ :

เมอใชค าสง fetchall ขอมลจะออกมาเปนชนด List โดยสามารถอานคาขอมลบางฟลดของบางเร

คอรดได โดยการอางหมายเลขล าดบของตวแปร List เชน เมอใชค าสง showgroup = cur.fetchall() ผลลพธทไดคอ [('01', 'computer'), ('02', 'stationery'), ('03',

'clothes')] โดยสามารถระบขอมลบางสวนของเรคอรดได ดงนคอ

- showgroup[0] คอ เรคอรดท 1 ในทนคอ ('01', 'computer') ถาระบต าแหนง showgroup[0][0] คอ ฟลดแรกของเรคอรดแรก คอ '01' สวน showgroup[0][1] คอ ฟลดท 2 ของเรคอรดท 1 คอ ' computer '

- showgroup[1] คอ เรคอรดท 2 ในทนคอ ('02', 'stationery') ถาระบต าแหนง showgroup[1][0] คอ ฟลดแรกของเรคอรดท 2 คอ '02' สวน showgroup[1][1] คอ ฟลดท 2 ของเรคอรดท 2 คอ 'stationery'

- showgroup[2] คอ เรคอรดท 3 ในทนคอ ('03', 'clothes') ถาระบต าแหนง showgroup[2][0] คอ

ฟลดแรกของเรคอรดท 3 คอ '03' สวน showgroup[2][1] คอ ฟลดท 2 ของเรคอรดท 3 คอ 'clothes'

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

Page 182: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดคอ

รปแบบท 2 การใชค าสง for รวมกบค าสง Cursor Object ส าหรบอานคาขอมลในตาราง

รปแบบ : cur.execute("select * from ชอตาราง")

for ชอตวแปร in cur.fetchall()

print(ชอตวแปร)

ตวอยาง :

Page 183: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธ :

ถาตองการอานคาขอมลบางฟลดของเรคอรด ใหระบค าสงเปน print(a[0]) แสดงคาขอมลในฟลด

แรก print(a[1]) แสดงคาขอมลในฟลดท 2 ไปเรอยๆ ตามล าดบ ตวอยางเชน

Page 184: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบท 3 การใชค าสง select อานคาขอมลตารางมากกวา 1 ตารางทมความสมพนธกน

ตวอยางเชน :

ผลลพธทได คอ จะแสดงขอมลในฟลด pid, title, price ของตาราง product และฟลด title ของตาราง

productgroup โดยเรยงล าดบขอมลตามทเราก าหนด ซงสามารถแสดงขอมลจาก 2 ตารางได เพราะมฟลดท

สมพนธกนคอ ฟลด groupid นนเอง

2.7 แกไขคาขอมลเดมในตารางดวยค าสง update

รปแบบ : update ชอตาราง set ชอฟลด = คาขอมลใหม where ชอฟลด = คาขอมล

เชน : update product set title = 'computer' where pid = '01'

ตวอยาง :

Page 185: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 186: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทได คอ

Page 187: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2.8 ลบคาขอมลในตารางดวยค าสง delete

รปแบบ : delete from ชอตาราง where ชอฟลด = คาขอมล

เชน : delete from product where pid = '01'

ตวอยาง

ผลลพธทได

Page 188: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2.9 ปดการเชอมตอฐานขอมล

การปดการเชอมตอไฟลฐานขอมล มรปแบบการเขยนค าสง ดงนคอ

cn.close()

มกใชค าสงนกอนสนสดการใชงานของโปรแกรม เพอไมใหกระบวนการท างาน Engine ดานฐานขอมลตกคางในระบบปฏบตการ เมอยตการใชโปรแกรมไปแลว

3. ฐานขอมลประเภท Database Server

3.1 ดาวนโหลดและตดตง Appserv เพอใชงาน localhost โดยมขนตอนดงน

3.1.1 ดาวนโหลด appserv จากเวบไซต https://www.appserv.org/th/ ดงรป

Page 189: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จะไดไฟลตดตง Appserv ชอวา appserv-win32-8.6.0.exe ใหดบเบลคลกทไฟลเพอท าการตดตง

โปรแกรม

3.1.2 ตดตงโปรแกรม appserv โดยท าตามขนตอนตอไปน

Page 190: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 191: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 192: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

3.1.3 เปดบราวเซอร Internet Explorer หรอ Google Chrome ขนมา แลวเขาสหนาแรกของ Appserv

โดยพมพค าวา http://127.0.0.1:81 แลวคลกท phpMyAdmin Database Manager Version 4.6.6 ดงรป

3.1.4 กรอก Username และ Password ทไดก าหนดไวในขนตอนการตดตง แลวคลกป ม Go

Page 193: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

3.1.5 สรางฐานขอมล หรอ Database โดยคลกท New

ใสชอ database และภาษา ซงทนจะเลอกเปน utf8_unicode_ci เพอใหรองรบขอมลภาษาไทย แลวกดป ม Create

Page 194: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

3.2 ดาวนโหลดโมดลพเศษ MySQLdb

3.2.1 ท าการตดตงโมดลพเศษทชอวา MySQLdb เพอเชอมตอฐานขอมล MySQL กบภาษา Python

จากเวบไซต https://pypi.org/project/mysqlclient/#files โดยเลอกไฟลทชอวา “mysqlclient-1.3.12-cp36-cp36m-win32.whl” ดงรป

3.2.2 เมอท าการดาวนโหลดไฟลเรยบรอยแลว ไฟลตดตงจะอยในโฟลเดอร Downloads ของเครองคอมพวเตอร ใหท าตามขนตอนดงตอไปน

1) คดลอกต าแหนงทอยของไฟลทเพงดาวนโหลดมา

Page 195: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2) เปดโปรแกรม Command Prompt ขนมา แลวพมพวา cd ตามดวยต าแหนงไฟลท เราคดลอกมา ในทนจะเปน cd C:\Users\OFFBKK\Downloads ดงรป

แลวกดป ม Enter จะไดผลลพธดงรป

3) หลงจากนนใหพมพค าสง pip install ตามดวยชอไฟล (โดยคดลอกชอไฟล ดงรป) ในทน

ไฟลทดาวนโหลดมาชอวา mysqlclient-1.3.12-cp36-cp36m-win32.whl

Page 196: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จงตองพมพวา pip install mysqlclient-1.3.12-cp36-cp36m-win32.whl แลวกด Enter เพอท าการตดตง เมอตดตงเรยบรอยแลว จะมขอความวา Successfully

3.2.3 เปดโปรแกรม Python ขนมา หลงจากนนใหลองพมพค าสง import MySQLdb ถาไมม Error

แสดงวาไดท าการตดตงโมดล MySQLdb เรยบรอยแลว

3.3 การเขยนโปรแกรมส าหรบเชอมตอฐานขอมล MySQL ดวยโมดล MySQLdb

3.3.1 เรยกใชโมดล MySQLdb โดยใชค าสง

import MySQLdb

3.3.2 ใช Connect Object เชอมตอกบฐานขอมล MySQL โดยจะตองระบชอผใชและรหสผาน โดย

มรปแบบการเขยนดงน คอ

cn = MySQLdb.connect(host = "ชอ host", user = "ชอผใช", passwd = "รหสผาน", db = "ชอฐานขอมล")

cur = cn.cursor()

Page 197: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางเชน

3.3.3 เขยนโปรแกรมส าหรบเชอมตอฐานขอมล MySQL

การเขยนโปรแกรมส าหรบเชอมตอฐานขอมล MySQL ดวยโมดล MySQLdb จะมลกษณะเหมอนกบการใชโมดล SQLite ในหวขอทผานมา โดยมค าสงในการจดการฐานขอมล เชน การสรางตาราง

ดวยค าสง create, การเพมเรคอรดขอมลใหมดวยค าสง insert, การเรยกดขอมลดวยค าสง select, การแกไขเร

คอรดขอมลดวยค าสง update, การลบเรคอรดขอมลดวยค าสง delete เปนตน

1) การสรางตารางดวยค าสง create

Page 198: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2) การเพมเรคอรดขอมลใหมดวยค าสง insert

ผลลพธทได

หมายเหต : %s ใชส าหรบตวแปรชนด integer สวน '%s' ใชส าหรบตวแปรชนด string

Page 199: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

3) การเรยกดขอมลดวยค าสง select

ผลลพธทได

Page 200: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

4) การแกไขเรคอรดขอมลดวยค าสง update

Page 201: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 202: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทได

ลกษณะการท างานของโปรแกรม

รบคารหสนกเรยนทางคยบอรดดวยค าสง input() และแปลงคาเปน integer เพราะจะตองน าคาตวแปร student_id ไปเปรยบเทยบกบฟลด id (row[0]) ของตาราง ซงเปนชนด integer หลงจากนนใชค าสง

cur.execute("select * from student") เพอเรยกดขอมลทงหมดในตาราง วนลปค าสง for row in cur.fetchall()

เพอดขอมลทละเรคอรด ในระหวางการวนลปใหท าการตรวจสอบเงอนไขวา รหสนกเรยนทกรอกเขามาตรงกบฟลด id ในตารางหรอไม (student_id == row[0]) ถาตรงกนใหแสดงเรคอรดนนมาทางหนาจอดวยค าสง

print(row) จากนนใหกรอกคาเดมทตองการแกไข แลวน าคามาเปรยบเทยบวาตรงกบฟลดใด เชน ถาตรงกบฟลด id กใหท าการแทนทขอมลของฟลด id ดวยค าสง cur.execute("update student set id = %s where id =

%s",(newdata, row[0])) โดย %s ตวแรกคอตวแปร newdata กคอขอมลใหมทตองใสเขาไป สวน %s ตวท

สองคอ row[0] เปนการระบต าแหนงของเรคอรดทตองการแกไข

Page 203: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

5) การลบเรคอรดขอมลดวยค าสง delete

ผลลพธทได

Page 204: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ลกษณะการท างานของโปรแกรม

รบคารหสนกเรยนทางคยบอรดดวยค าสง input() และแปลงคาเปน integer เพราะจะตองน าคาตวแปร student_id ไปเปรยบเทยบกบฟลด id (row[0]) ของตาราง ซงเปนชนด integer หลงจากนนใชค าสง

cur.execute("select * from student") เพอเรยกดขอมลทงหมดในตาราง วนลปค าสง for row in cur.fetchall() เพอดขอมลทละเรคอรด ในระหวางการวนลปใหท าการตรวจสอบเงอนไขวา รหสนกเรยนทกรอกเขามาตรง

กบฟลด id ในตารางหรอไม (student_id == row[0]) ถาตรงกนใหแสดงเรคอรดนนมาทางหนาจอดวยค าสง

print(row) จากนนใหท าการยนยนการลบ ถามการพมพ y หรอ Y ทางคยบอรดใหท าการลบเรคอรดนนดวยค าสง cur.execute("delete from student where id = %s", (row[0],))

Page 205: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

บทท 9 พนฐานการใชโมดล tkinter ส าหรบ Graphical User Interface (GUI)

รปแบบการเขยนค าสงภาษาไพธอนม 2 รปแบบ คอ แบบปอนค าสงทละบรรทด (Command line

interface และแบบกราฟก คอ การตดตอสอสารกบระบบคอมพวเตอรโดยอาศยอนเตอรเฟสแบบกราฟก ซง

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

ไพธอนไดรบการสนบสนนโมดลส าหรบพฒนา GUI (Graphic User Interface) ไวมากมาย เชน

tkinter, wxPython, JPython, wxWidgets, Qt, Gtk+, FLTK, FOX และ OpenGL เปนตน ซงมรายละเอยดเฉพาะโมดลทส าคญๆ ดงนคอ

1. Tkinter เปนโมดลทพฒนามาจาก Tk GUI Toolkit ซงทางานอยบนระบบปฏบตการยนกซมา

กอน ไพธอนไดเลอกโมดลนในการพฒนากราฟกบนไพธอนเปนหลก

2. wxPython เปนโมดลทถกพฒนาขนเพอใหทางานอยบนระบบปฏบตการวนโดวสเปนหลก และ

เปนลขสทธแบบ Open source

3. JPython เปนโมดลทพฒนาขนเพอใหไพธอนสามารถท างานรวมกบกราฟกของภาษาจาวาได

1. แนวความคดในการออกแบบ GUI

กอนการพฒนา GUI ดวยไพธอน จะตองออกแบบหนาตาของ GUI เสยกอน โดยการสเกตชภาพบน

กระดาษ หรอออกแบบดวยโปรแกรมส าหรบสรางงานกราฟกดวยคอมพวเตอรอยางคราวๆ เสยกอน ดงรป

รปท 9.1 การสเกตช GUI อยางคราวๆ บนกระดาษ

Page 206: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ยกตวอยางการเขยนโปรแกรมแปลงคาหนวยวดระยะทางจากฟต (feet) เปนเมตร (meters)

รปท 9.2 แสดงภาพสเกตชของโปรแกรมแปลงจาก feet เปน meters

จากรปท 9.2 ผใชจะปอนตวเลขจ านวนจรงในชอง Feet เมอกดป ม calculate โปรแกรมจะท าการแปลงคาจ านวนจรงทปอนใหกบโปรแกรมเปนเมตรและแสดงใน meters ขนตอนตอไปใหผเขยนโปรแกรม

ท าการวาดเสนกรดเพอใชก าหนดขอบเขตส าหรบจดวางต าแหนง (Layout) ของออปเจกตตางๆ ในโปรแกรม จากตวอยางดานบน จะท าการก าหนดเสนกรดเปน 3 แถว 3 คอลมนดงรปท 9.3

รปท 9.3 แสดงการวาดเสนกรด 3 x 3 ลงบนภาพสเกตช

Page 207: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2. การสราง GUI ดวย Tk

กอนการสรางกราฟกจาก Tk หรอ Tkinter ผเขยนโปรแกรมจ าเปนตองเขาใจถงแนวความคดและหลกการท างานของ Tk เสยกอน เพอเปนพนฐานในการสราง GUI ทสมบรณตอไป Tk ประกอบไปดวย 3

สวนทส าคญคอ widgets, geometry management และ event handling ซงมรายละเอยดดงน

2.1 Widgets คอสงตางๆ (หรอเรยกวา ออปเจกต) ทปรากฏอยบนจอภาพ เชน Button, Label, Frame,

checkbox, tree views, scrollbars, text areas เปนตน ดงรปท 9.4

รปท 9.4 แสดงตวอยาง Widgets บนระบบปฏบตการตางๆ

Widgets ตางๆ เหลานถกออกแบบใหมลกษณะการท างานแบบล าดบชน นน คอ การสราง GUI ใดๆ ใหปรากฏบนจอภาพ จะเรมตนสรางจากล าดบชน ทเรยกวา root window (root) ขนเสยกอน ดงรปท

9.5 ล าดบชนท 2 จงสรางเฟรม (Content frame) หรอผนผา (Canvas) เพอบรรจ widgets ตางๆ ลงบน root

window ในล าดบชนท 3 เปนการเพม Widgets ตางๆ ทไดออกแบบไวบนกระดาษลงบนเฟรมหรอ Canvas ทไดจดเตรยมไว ส าหรบการควบคมการท างานของWidgets จะเปนแบบล าดบชนเชนเดยวกน

รปท 9.5 แสดงล าดบของการสราง GUI ดวย Tk

Page 208: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากรปท 9.5 แสดงล าดบชนการสราง GUI ของโปรแกรมแปลงหนวยวดระยะทางจากฟตเปนเมตร

โดยเรมตนจากการสรางหนาตางหลก (Root) ขนกอนเสมอ เพอรองรบ Widgets ทท าหนาทตางๆ กน โดย Widgets จะถกสรางขนลงบนเฟรม (Content frame) อกท ซงเฟรมดงกลาวเปรยบเสมอนหนากระดาษบน

คอมพวเตอรนนเอง

2. การเรยกใชงาน Widgets โดย Widgets ในภาษาไพธอนถกเขยนขนดวยโปรแกรมเชงวตถ ดงนน

ทกๆ Widget ทสรางขนจะถกเรยกวา ออปเจกต (Object) หรอวตถ เมอท าการสรางอนสแตนซของ Widget

ใดๆ ขนจะตองสงพารามเตอรใหกบคลาสแมตามล าดบชนตามทกลาวมาแลว ยกเวน Root ซงเปนคลาสแมทอยในต าแหนงบนสด (Top level window) ของล าดบชน คลาสลกทกๆ คลาสจะถกสรางภายใน root เทานน

จากตวอยางตอไปนเปนตวอยางการสราง Root, Content frame และ Widgets

Widget แตละประเภทมหนาทการท างานทตางกน ดงนนเมอสราง Widget ขนมาแลวจ าเปนท

จะตองการท าการปรบแตงคณสมบตของ Widgets (Configuration option) แตละตวใหเหมาะสมกบงานทจะ

ท า ตวอยางเชน Label และ Button สามารถก าหนดขอความทแสดงผลดวยออฟชน text = "Textname" ในขณะท scrollbar ไมจ าเปนตองใชออฟชนดงกลาว และถามการกดป ม Button จะตองเรยกใชฟงกชนหรอ

เมธอดทเหมาะกบงานดงกลาวโดยใชค าสง command แตส าหรบ Label ไมจ าเปนตองใชค าสง command ในการท างาน เปนตน

Configuration option จะถกก าหนดในขณะทท าการสราง Widget โดยการสงเปนพารามเตอรท

เหมาะสมใหกบแตละ Widget ทจะถกสรางขน ตวอยางเชน เมอตองการสรางป ม Button โดยป มดงกลาวประกอบดวยชอของป ม และเหตการณทเกดขนหลงจากมการกดป มดงกลาว ดงน

1. น าเขาโมดล tkinter

2. สรางป ม Button โดยสงพารามเตอรให 2 คา คอ ขอความทแสดงบนป ม (text = "Hello") และ

วธการตอบสนองเมอป มดงกลาวถกกด (command = "buttonpressed") พรอมกบก าหนดคากรด

Page 209: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทได คอ

3. ทดสอบเปลยนขอความทแสดงบนป มจาก "Hello" เปน "Goodbye"

หรอใชเมธอด configure() เพอเปลยนขอความบนป มแทนกได

ผลลพธทได คอ

Page 210: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

3. การจดการรปทรงเรขาคณตใหกบ Widgets (Geometry management) จากทกลาวมาแลวขางตนวาการวาง Widgets ลงบนเฟรมนน จะตองก าหนดต าแหนงในการวาง โดยอาศยศาสตรทางดานเรขาคณตเขาชวย เพอให Widgets ทจะวางอยในต าแหนงทเหมาะสม ซงไพธอนม 3 เมธอดในการจดการเกยวกบ

เรขาคณตของ Widgets ประกอบไปดวยเมธอด pack(), grid() และ place() ซงจะกลาวในหวขอการจดวาง Widgets ดวยเรขาคณต

ส าหรบปญหาการวาง Widgets ทเกดขนเสมอ คอ การปรบขนาดของเฟรมหรอ Widgets จะสงผล

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

ปญหาตางๆ เหลานจะถกจดการดวย Geometry management ทอยใน Tk โดยใชเทคนคทเรยกวา Master and

Slave โดย Master คอออปเจกตทท าหนาทรองรบ Widgets ตางๆ ทจะท างาน เชน root หรอ content frame ส าหรบ Slave คอ Widgets ตางๆ ทวาดหรอวางลงบน Master นนเอง

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

management จะค านวณพนททงหมดในภาพรวม เพอจดวาง Widgets เหลานนในต าแหนงทเหมาะสมตอไป

จากตวอยาง เมอผใชตองการเพม Widget อนใดอนหนงลงบนเฟรมจะเรยกใชเมธอด grid() และตามดวยพารามเตอรคอลมน (Column) และแถว (Low) ในการก าหนดต าแหนงการวาง พรอมกบพารามเตอร

"sticky" เพอบอกวาใหวาง Widget ตามขนาดจรงทปรากฏ เชน ความกวางและยาวของป มจะมขนาดตาม

ฟอนตทปรากฏบนป ม เปนตน หรออาจจะใชเมธอด columnconfigure() หรอ rowconfigure() เพอปรบขนาดของ Widget ตามทผใชงานตองการกได

4. การจดการกบเหตการณตางๆ (Event Handling) Event handling คอ เหตการณตางๆ ทผใชงาน

กระท ากบ Widgets ใดๆ บน GUI เชน การกดป ม การกดป มใดๆ บนแปนพมพ การเคลอนเมาส การปรบ

ขนาดของหนาตางวนโดวส เปนตน ซงเหตการณตาง ๆ เหลานจะถกจดการโดย Tk ซงเรยกวา event loop

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

Page 211: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

5. การตอบสนองตอเหตการณทเกดขน (Command Callbacks) มหลาย Widgets จ าเปนตองกระท า

อยางใดอยางหนงเมอมการคลกหรอกระท ากบ Widgets เหลานน เชน เมอกดป ม Save as… จะสงผลใหมการเปดหนาตางวนโดวส เพอใหผใชเลอกไดเรคทอรทตองการบนทกผลลงฮารดดสก เปนตน ในไพธอนจะ

ใชค าสง "command" หรอเรยกวา "Callbacks" ในการตอบสนองตอเหตการณตางๆ ทเกดขนกบ Widgets โดยมรปแบบค าสงคอ

command = functionName

ตวอยางเชน เมอคลกป ม Hello แลวไปยงฟงกชน helloCallBack เพอพมพค าวา Hello World!

ผลลพธทได คอ

6. การผกเหตการณตางๆ เขากบไพธอน Widgets มค าสง "command" ซงมาพรอมกบขณะทมการ

สราง Widget อยแลว เพอผกเหตการณตางๆ เขากบการกระท าอยางใดอยางหนงในโปรแกรม แตผใช

สามารถเรยกใชค าสง bind เพอเปนทางเลอกในการดกจบเหตการณตางๆ เหมอนกบการใชค าสง command ไดเชนเดยวกน ดงตวอยางตอไปนจะแสดงการจดการกบ Widget ชนด Label ดวยค าสง bind ดงน

Page 212: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม คอ

เรมโปรแกรม เคลอนเมาสไปใน

วนโดวส เคลอนเมาสออก

จากวนโดวส ดบเบลคลกเมาส

ในวนโดวส คลกขวาและลาก

เมาส

จากภาพดานบนแสดงการท างานของโปรแกรม โดยเรมจากบรรทดท 2 โปรแกรมท าการสราง

หนาตางหลก (root) โดยเรยกคลาส Tk() ขนมาท างาน จากนนบรรทดท 3 โปรแกรมท าการสราง Label ลงบนหนาตางหลก โดยมพารามเตอร 2 ตวคอ หนาตางหลกทจะเพม Label ลงไป ในทนคอ root และขอความ

ทจะใหปรากฏบน Label คอ text="Starting..." บรรทดท 4 โปรแกรมเรยกใชเมธอดกรด (เมอไมก าหนด

คอลมนและแถวจะมคาเปน 1 คอลมน และ 1 แถว) บรรทดท 6 ท าการผกเหตการณเมอผใชมการกระท า ใดๆ บน Label ดงกลาวดวยค าสง bind โดยจะท างานกตอเมอผใชเคลอนเมาสเขาไปในวนโดวส โดยจะ

พมพขอความวา "Move mouse inside" บรรทดท 6, 7, 8 และ 9 จะท างานกตอเมอผใชเคลอนเมาสออกจาก

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

โปรแกรม

7. สรปขนตอนการสราง GUI ดวย tkinter มขนตอนดงน

1. น าเขาโมดล Tkinter ดวยค าสง from tkinter import *

Page 213: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2. สรางหนาตาง GUI หลก ดวยค าสง root = Tk()

3. เพมWidgets หรอออปเจกตลงในหนาตางหลก เชน Button, Canvas หรอ Label เปนตน

4. เขยนโปรแกรมส าหรบตรวจสอบเหตการณตางๆ (Events) ทเกดขนจากผใชงานกระท า

กบออปเจกตใดๆ เชน การคลก การลาก การปลอย เปนตน

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

root.mainloop()

- ล าดบการสรางหนาตาง GUI ดวย Tk

- แสดงหนาตางหลก (root window)

3. การจดวาง Widgets ดวยเรขาคณต (Geometry management)

ทกๆ Widgets จะตองอาศยเรขาคณตชวยในการจดวาง (Geometry management) ซงไพธอนไดจดเตรยมไว 3 เมธอดคอ pack(), grid() และ place() ดงน

3.1 เมธอด pack() ท าหนาทจดวาง Widgets ใหอยในกลม (block) กอนวางลงใน Widget แม ซงม

รปแบบค าสงดงน

widget.pack( pack_options )

pack_options ม 3 รปแบบคอ expand, fill และ side

Page 214: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

1) expand เมอก าหนดใหเปน True หรอ YES โปรแกรมจะขยายขนาด Widget โดยการเพมชองวาง

เขาไปแทน และอยตรงกลางหนาตางหลก เชน widget.pack(expand = True)

2) fill ก าหนดใหขยายขนาดของ Widget ตามขนาดจรงทนอยทสด หรอสามารถก าหนดเปน Y

(vertically : ขยายทางแนวตง) หรอก าหนดเปน X (horizontally : ขยายทางแนวนอน) หรอทงคกได แตคาด

ฟอลต (default) เปน NONE เชน fill = X, fill = Y หรอ fill = BOTH ตวอยางเชน widget.pack(fill = BOTH)

3) side ก าหนดต าแหนงในการวาง Widget คอ TOP (ดฟอลต) ดานบน, BOTTOM ดานลาง, LEFT

ดานซาย และ RIGHT ดานขวา เชน side = BOTTOM เชน widget.pack(side = BOTTOM)

ตวอยางการใชงานเมธอด pack() ดงน

Page 215: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทได คอ

จากตวอยางโปรแกรม แสดงการใชเมธอด pack() ในการจดวาง Widgets โดยโปรแกรมสรางเฟรม

(บรรทดท 4) ดวยเมธอด Frame(root) ออปเจกตทสรางขนจะเกบไวในตวแปรชอ frame จากนนบรรทดท 5

โปรแกรมเรยกเมธอด pack() โดยไมมพารามเตอร ซงสงผลใหเฟรมดงกลาวจะวางอยในต าแหนงบนสดของหนาตางหลก (root window) บรรทดท 6 – 11 โปรแกรมสรางป มสแดง น าเงน และน าตาลลงบนเฟรม

ดงกลาว

บรรทดท 13 และ 14 โปรแกรมสรางเฟรมชอ bottomframe โดยวางอยในต าแหนงดานลางของหนาตางหลก บรรทดท 15 และ 16 โปรแกรมสรางป มสด า และวางลงในเฟรมชอ bottomframe

2. เมธอด grid() ท าหนาทจดวาง Widgets ลงในหนาตางหลก (root window) โดยอยในรปแบบของ

ตาราง ซงมรปแบบค าสง ดงน

widget.grid( grid_options )

grid_options มรปแบบ ดงนคอ

1. column ต าแหนงคอลมนทตองการวาง Widget คาดฟอลตคอ 0 (คอลมนซายสด)

2. columnspan จ านวนคอลมนทตองการใช คาดฟอลตคอ 1 บรรทด

3. ipadx, ipady ขนาดภายในขอบของ Widget ในแนวตงและแนวนอน มหนวยเปนพกเซล

4. padx, pady ขนาดภายนอกขอบของ Widget ในแนวตงและแนวนอน มหนวยเปนพกเซล

5. row ต าแหนงแถวทตองการวาง Widget

6. rowspan จ านวนแถวทตองการใช คาดฟอลตคอ 1 คอลมน

7. sticky ใชเมอตองการวาง Widget ในต าแหนงทตองการ โดยคาดฟอลตจะอยตรงกลาง แต

สามารถก าหนดต าแหนงดวยการบอกทศทาง โดยใชอกษรตางๆ ดงน N (ทศเหนอ), E (ตะวนออก), S (ใต),

Page 216: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

W (ตะวนตก), NE (ทศตะวนออกเฉยงเหนอ), NW (ทศตะวนตกเฉยงเหนอ), SE (ทศตะวนออกเฉยงใต)

และ SW (ทศตะวนตกเฉยงใต) เปนตน

ตวอยางการใชงานเมธอด grid() ดงน

ผลลพธทไดเมอสงรนโปรแกรมดงรป

จากตวอยางโปรแกรม แสดงการใชเมธอด grid() ในการจดวาง Widgets โดยบรรทดท 5 โปรแกรมสรางเลเบลทท าการพมพต าแหนงแถวและคอลมนลงบนหนาตางหลก โดยใชเมธอด grid() ในการก าหนด

ต าแหนงของเลเบล ผลลพธทไดแสดงดงรปดานบน

3. เมธอด place() ท าหนาทจดวาง Widgets ลงในหนาตางหลก (root window) โดยการระบต าแหนง

ซงมรปแบบค าสง ดงน

widget.place( place_options )

place_options มรปแบบดงน คอ

1. anchor ก าหนดต าแหนงการวาง Widget โดยอาศยทศ เชน N (ทศเหนอ), E (ตะวนออก), S, W,

NE, NW, SE หรอ SW เปนตน

2. bordermode ก าหนดต าแหนงการวาง Widget โดยอาศยขอบดานใน (INSIDE) และขอบดาน

นอก (OUTSIDE) คาดฟอลตคอ INSIDE

3. height, width ก าหนดขนาดความกวางและความยาว มหนวยเปนพกเซล

Page 217: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

4. relheight, relwidth ก าหนดขนาดความกวางและความยาว โดยใชเลขจ านวนจรงระหวาง 0.0 –

1.0

5. relx, rely ขนาดแนวตงและแนวนอนของ offset โดยใชเลขจ านวนจรงระหวาง 0.0 – 1.0

6. x, y ขนาดแนวตงและแนวนอนของ offset มหนวยเปนพกเซล

ตวอยางการใชงานเมธอด place() ดงน

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการใชเมธอด place() ในการจดวาง Widgets โดยบรรทดท 6 โปรแกรม

สรางเมธอดชอวา helloCallBack() ท าหนาทแสดงกลองขอความ (messagebox) โดยพมพขอความวา "Hello World" เมธอดดงกลาวนจะถกเรยกใชเมอมการกดป ม Hello บรรทดท 8 โปรแกรมสรางป มซงมขอความบน

ป มคอ "Hello" โดยมพารามเตอร 3 ตวคอ ออปเจกตของหนาตางหลก (root), ขอความทตองการแสดงบน

Page 218: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ป ม ("Hello") และการกระท า (action) เมอป มถกกด ในทนโปรแกรมจะเรยกเมธอด helloCallBack() มา

ท างาน บรรทดท 10 โปรแกรมจะวางป มดงกลาวนอกขอบ (border = OUTSIDE) ทเมธอด pack() ไดก าหนดไว โดยป มมขนาดความกวางและความยาวเทากบ 100 พกเซล

4. คณสมบตพนฐานของ Widgets

Widgets ตางๆ ทใชส าหรบออกแบบ GUI มคณสมบตพนฐานหลายประการทสามารถใชงาน

รวมกนได เชน ขนาด ส และฟอนต เปนตน ซงมรายละเอยดของคณสมบตตางๆ ดงน

1. Dimension (ขนาด): ขนาดของ Widgets สามารถก าหนดไดหลายแบบดงน

- ก าหนดขนาดดวยตวอกษร เชน 'c' = เซนตเมตร (Centimeters), 'i' = นว (Inches), 'm' =

มลลเมตร (Millimeters), 'p' = Printer's points (ประมาณ 1/72)

- ก าหนดขนาดดวยตวเลข มหนวยเปนพกเซล (Pixels) เชน 1, 3, หรอ 5 เปนตน

Dimension ถกน าไปใชก าหนดคณสมบตของ Widgets ดงตอไปน

- borderwidth ความกวางเสนขอบของ Widget

- highlightthickness ความกวางของรปสเหลยมทใชส าหรบเนนความสนใจ (highlight

rectangle) เมอ Widget ถกโฟกส

- padX padY ขนาดพนทวางเพมเตมรอบๆ Widget

- selectborderwidth ความกวางเสนขอบเมอ Widget ถกเลอก

- wraplength ความยาวสงสดทเกดจากการครอบค าหรอขอความ

- height ก าหนดความสงของ Widget

- width ความกวางของ Widget

- underline ขดเสนใตตวอกษรทตองการ (0 คออกษรตวแรกของขอความ)

Page 219: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2. Color (ส) การก าหนดสใหกบตวอกษรหรอ Widgets ได 2 รปแบบคอ

- ก าหนดคาของสโดยใชเลขฐาน 16 ตวอยางเชน #ffff คอสขาว, #0000 คอสด า หรอ #00ffff คอสฟา เปนตน

- ก าหนดคาของสโดยใชขอความ เชน "red" = สแดง, "green" = สเขยว หรอ "white" = สขาว เปนตน ดงรปดานลาง

Color ถกน าไปใชก าหนดคณสมบตของ Widgets ดงตอไปน

- activebackground ก าหนดสพนหลงของ Widgets เมอ Widgets ท างาน (Active)

- activeforeground ก าหนดสดานหนาของ Widgets เมอ Widgets ท างาน (Active)

- background ก าหนดสพนหลงของ Widgets หรอเขยนยอเปน bg

Page 220: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

- foreground ก าหนดสดานหนาของ Widgets หรอเขยนยอเปน fg

- disabledforeground ก าหนดสดานหนาของ Widgets เมอ Widgets ถก Disable

- highlightbackground ก าหนดสพนหลงเมอ Widgets ถกโฟกส

- highlightcolor ก าหนดสดานหนาเมอ Widgets ถกโฟกส

- selectbackground ก าหนดสพนหลงเมอมการเลอกรายการใดรายการหนงใน Widget

เชน เลอกรายการจาก Dropdown

- selectforeground ก าหนดสดานหนาเมอมการเลอกรายการใดรายการหนงใน Widget

3. Font (ฟอนต) การก าหนดรปแบบของฟอนตใหกบ Widgets สามารถก าหนดได 2 รปแบบ คอ

- ก าหนดฟอนตโดยใชเครองหมายวงเลบครอบ เชน ("Helvetica", "16") หรอ ("Times", "24", "bold italic")

- ก าหนดฟอนตโดยใชเมธอด font ทมากบ Tk ซงมรปแบบคอ

myFont = font.Font( option, ... )

ส าหรบ option มรายละเอยดดงน

- family ชอของฟอนต เชน 'Helvetica', 'Verdana', 'Times' ตวอยาง family = 'Helvetica'

- size ขนาดของฟอนต เชน size = 15

- weight ขนาดความหนาของฟอนต เชน bold คอฟอนตตวหนา, normal คอ ความหนา

ปกต ตวอยาง weight = 'bold'

- slant ตวอกษรเอยง เชน italic คอตวอกษรเอยง, roman คอ ตวอกษรปกต

- underline ขดเสนใต เชน underline = 1 คอการขดเสนตวอกษร, 0 คอ ตวอกษรปกต

- overstrike ขดเสนทบตวอกษร เชน overstrike = 1 คอขดเสนทบตวอกษร, 0 คอไมขดเสน

ทบ

Page 221: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

4. Anchors ก าหนดจดอางองทใชส าหรบจดวาง Widgets มรปแบบคอ NW: ทศตะวนตกเฉยงเหนอ

, N: ทศเหนอ , NE: ทศตะวนออกเฉยงเหนอ , W: ทศตะวนตก , CENTER: จดกลางของแผนท , E: ทศตะวนออก, SW: ทศตะวนตกเฉยงใต, S: ทศใต, SE: ทศตะวนออกเฉยงใต

ตวอยางเชน anchor = NE, anchor = SE ส าหรบตวอยางต าแหนงทศตางๆ แสดงดงรป

5. Relief styles ก าหนดลกษณะภาพในรปแบบ 3 มต (3D) รอบๆ บรเวณ Widgets มรปแบบคอ

- FLAT แสดงภาพในลกษณะแบนราบ (ไมเปนภาพนน)

- RAISED แสดงภาพในลกษณะยกขน หรอนนขน

- SUNKEN แสดงภาพในลกษณะจมลงไป

- GROOVE แสดงภาพในลกษณะกรอบเปนรองลก

- RIDGE แสดงภาพในลกษณะกรอบนนขน

ตวอยางการใชงาน Relief แสดงในโปรแกรม

Page 222: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

6. Bitmaps (บตแมป) Bitmap คอภาพทเกดจากจดสทเรยกวา Pixel (พกเซล) ประกอบกนเปน

รปรางบนพนททมลกษณะเปนเสนตาราง (กรด) แตละพกเซลจะมคาของต าแหนง และคาสของตวเอง ภาพหนงภาพ จะประกอบดวยพกเซลหลายๆ พกเซลผสมกน ไฟลภาพเหลานมหลายรปแบบ อาท เชน BMP,

TIF, JPG, PCT เปนตน ไพธอนมภาพบตแมปใหเลอกใชงานดงรป

ตวอยางการใชงาน Bitmaps

Page 223: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

7. Cursors เคอรเซอรหรอตวชเมาส คอ สญลกษณแสดงต าแหนงของเมาสบนจอภาพ ไพธอน

เตรยมสญลกษณส าหรบใชเปนเคอรเซอรใหเลอกใชงานดงรป

Page 224: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการใชงานเคอรเซอร

ผลลพธทไดเมอสงรนโปรแกรม

5. การสรางและใชงาน Widgets พนฐาน

ในหวขอนจะกลาวถงวธการสราง Widgets พนฐานทส าคญๆ ส าหรบใชในการสราง GUI เชน

frames, labels, buttons, checkbuttons, radiobuttons, entries และ comboboxes เปนตน

1. Frame เฟรมเปน Widget ทมลกษณะเปนรปสเหลยม โดยปกตเฟรมจะถกใชส าหรบจดกลมหรอ

บรรจ Widgets อนๆ ทเกยวของหรอสมพนธกนเขาไวดวยกน

รปแบบค าสงส าหรบการสรางเฟรม คอ f = Frame( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของเฟรม แสดงในตารางดานลาง

Option ค าอธบาย bd ก าหนดขนาดความกวางของขอบเฟรม มหนวยเปนพกเซล คาเรมตนเทากบ 2 พก

เซล เชน Frame(root, bd = 5, height = 50, width = 100, relief = GROOVE) bg ก าหนดสพนดานหลงของเฟรม เชน Frame(root, bd = 5, height = 50, width =

100, relief = GROOVE, bg = "green")

Page 225: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

cursor ก าหนดรปแบบของเคอรเซอร เคอรเซอรจะเปลยนรปเมอเคลอนเมาสทบบนเฟรม เ ชน Frame(root, bd = 3, height = 50, width = 100, relief = GROOVE, cursor = "hand1")

height ก าหนดความสงของเฟรม มหนวยเปนพกเซล เชน Frame(root, bd = 3, height = 50, width = 100, relief = GROOVE)

width ก าหนดความกวางของเฟรม ถาไมก าหนดไพธอนจะก าหนดขนาดเทากบความกวางของฟอนตแทน เชน Frame(root, bd = 3, height = 50, width = 100)

highlightbackground ก าหนดแถบสพนหลงเมอเฟรมไดรบความสนใจ (Focus) เชน Frame(root, bd = 3, height = 50, width = 100, highlightbackground = "green")

highlightcolor ก าหนดแถบสเมอเฟรมไดรบความสนใจ เชน Frame(root, bd = 3, height = 50, width = 100, highlightcolor = "green")

highlightthickness ก าหนดความกวางจากขอบของเฟรม เชน Frame(root, bd = 3, height = 50, width = 100, highlightthickness = 2)

relief ก าหนดลกษณะเฟรมในรปแบบ 3 มต เชน Frame(root, bd = 5, height = 50, width = 100, relief = GROOVE)

ตวอยางการใชงานเฟรม (ตวอยางท 1)

Page 226: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางเฟรมเพอรอบรบการวาง Widget ชนดป มลงในเฟรมดงกลาว

บรรทดท 4 เปนการสรางเฟรมชอ frame ใหมขนาดสงเทากบ 300 และกวางเทากบ 500 โดยมความหนาของ

ขอบเฟรมเทากบ 3 (bd = 3) กรอบของเฟรมเปนแบบรองลก (relief = GROOVE) มขนาดความกวางจากขอบเฟรมเทากบ 20 (highlightthickness = 20) เมอเลอนเมาสเขาใกลเฟรมดงกลาว เคอรเซอรจะเปลยนเปนรปมอ

(cursor = "hand1") และเฟรมทสรางขนจะเขยนลงบนหนาตางหลกของโปรแกรม (root) บรรทดท 5 เปนการก าหนดใหเฟรมดงกลาววางลงตรงกลางหนาตางหลกดวยเมธอด frame.pack(expand=True) บรรทด

ถดไปโปรแกรมท าการสรางป ม มขอความสแดง น าตาล และน าเงนลงบนเฟรมดงกลาวตามล าดบ สงเกตวา

ขนาดของเฟรมจะเทากบขนาดของป ม เนองจากเมธอด pack() จะบบอดใหเฟรมมขนาดเทากบผลรวมความกวางและความยาวของ Widgets ทอยในเฟรมนนเอง (โปรแกรมจะไมสนใจความสงและความกวางท

ก าหนดในเฟรม)

บรรทดท 12 โปรแกรมท าการสรางเฟรมอกครง ชอ bottomframe โดยเฟรมดงกลาวมลกษณะของกรอบทจมลกลงไป (relief = SUNKEN) และเฟรมดงกลาวถกจดวางใหอยในต าแหนงดานลางของหนาตาง

หลกดวยเมธอด bottomframe.pack(side = BOTTOM) จากนนโปรแกรมสรางป มทมขอความสด า ใสลงในเฟรม bottomframe โดยก าหนดใหวางในต าแหนงดานลางของเฟรม (side = BOTTOM) ผลลพธทไดแสดง

ในรปดานบน ผเขยนโปรแกรมสามารถเลอกใชเมธอด grid() แทนเมธอด pack() ในการจดวาง Widgets ก

ได ดงตวอยางโปรแกรมดานลาง

Page 227: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการใชงานเฟรม (ตวอยางท 2)

ผลลพธทไดเมอสงรนโปรแกรม

2. Button (ป ม) Button คอ Widget ทมลกษณะเปนรปสเหลยมผนผา มหนาทตอบสนองกบผใชงาน

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

(เกด event) จะสงผลใหเกดการเรยกใชงานฟงกชนหรอเมธอดทฝงอยกบป มได เพอท าหนาทอยางใดอยางหนง เชน กดป ม Cancel จะท าใหโปรแกรมยกเลกค าสงทเพงกระท าเสรจ เปนตน

รปแบบค าสงส าหรบการสรางป ม คอ b = Button( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของป ม แสดงในตารางดานลาง

Page 228: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Option ค าอธบาย activebackground ก าหนดสบนพนหลงของป มเมอผใชคลกบนป ม เชน Button(root, text = "Hello",

activebackground = "yellow") activeforeground ก าหนดสขอความบนป มเมอผใชคลกบนป ม เชน Button(root, text = "Hello",

activebackground = "yellow", activeforeground = "red") bd ก าหนดขนาดความกวางขอบป มมหนวยเปนพกเซล คาเรมตนเทากบ 2 พกเซล

เชน Button(root, text = "Hello", bd = 5) bg ก าหนดสพนหลงของป ม เชน Button(root, text = "Hello", bg = "red") command ฟงชนหรอเมธอดทจะถกเรยกใชเมอป มถกกดหรอคลก เชน Button(root, text =

"Hello", bg = "red", command = myFunc) fg ก าหนดสของฟอนต เชน Button(root, text = "Hello", bg = "red", fg = "blue") font ก าหนดรปแบบฟอนตของป ม เชน Button(root, text = "Hello", bg = "red", font =

"Times 10 bold") หรอ font = ("Helvetica", 16) height ก าหนดความสงของป ม (กรณป มทถกสรางดวยรปภาพ จะมหนวยเปนพกเซล)

เชน Button(root, text = "Hello", height = 5) highlightcolor ก าหนดแถบสเมอเฟรมไดรบความสนใจ เชน Button(root, text = "Hello",

highlightcolor = "green") image ก าหนดรปภาพใหกบป มแทนการใชขอความ เชน

image = PhotoImage(file = 'printer.png') B = Button(root, text ="Hello", image=image)

justify ก าหนดต าแหนงการแสดงผลขอความบนป ม โดย LEFT = วางขอความชดดานซายของป ม , RIGHT = ชดดานขวา , CENTER = วางตรงกลางป ม เชน Button(root, text = "Hello\nPython\nLanguage", justify=LEFT)

padx เตมขอความวาง (Padding) ดานซายและขวาของขอความในป ม เชน Button(root, text = "Hello", padx = 5)

pady เตมขอความวาง (Padding) ดานบนและลางของขอความในป ม เชน Button(root, text = "Hello", pady = 5)

relief ก าหนดลกษณะขอบของป มในแบบ 3D เชน Button(root, text = "Hello", relief = GROOVE)

Page 229: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

state ก าหนดใหป มท างานหรอไมท างาน ถาก าหนดเปน DISABLED ป มจะไมสามารถกดได แตถาก าหนดเปน ACTIVE จะสามารถกดป มได เชน Button(root, text = "Hello", state = DISABLED)

underline ตวอกษรของป มจะถกขดเสนใต โดยคา -1 คอป มจะไมถกขดเสน แตตวเลขอนๆ ท เปนคาบวกจะท าใหตวอกษรบนป มถกขดเสน (0 คออกษรตวแรก) เชน Button(root, text = "Hello", underline = 1)

width ก าหนดความกวางของป ม (กรณป มทถกสรางดวยรปภาพ จะมหนวยเปนพกเซล) เชน Button(root, text = "Hello", width = 5)

wraplength เมอคาดงกลาวถกก าหนดเปนจ านวนเตมบวก ขอความบนป มจะถกจ ากดพนท โดยจะแสดงผลอยในขอบเขตทก าหนดใน wraplength เทาน น เชน ขอความ "Hello" จะใชพนทในการแสดงผลเทากบ 28 พกเซล เมอก าหนด wraplength = 10 จะท าใหขอความแสดงในแนวต ง ตวอยางเชน Button(root, text = "Hello", wraplength = 10)

Widget ชนดป มมเมธอดทชวยเสรมในการท างานของป มคอ

- เมธอด flash() ท าหนาทวาดป มใหม เชน

B = Button(root, text = "Hello")

B.flash()

- เมธอด invoke() บงคบใหค าสงออฟชน command ทก าหนดไวในป มท างานทนท เชน

B = Button(root, text = "Hello", command = callBack)

B.invoke()

เมอสงรนโปรแกรมจะสงผลใหไพธอนเรยกเมธอด callback() มาท างานทนทโดยไมตองคลกทป ม

Page 230: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางและใชงานป ม

ผลลพธทไดเมอสงรนโปรแกรม ใหทดลองคลกทป ม Go! และป มเครองพมพ

Page 231: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Button (ป ม) โดยบรรทดท 7 โปรแกรมสรางเมธ

อดชอ helloCallBack() มหนาทสรางกลองขอความโดยพมพขอความวา "Hello World" ออกจอภาพ บรรทดท 10 โปรแกรมสรางเมธอดชอ printCallBack() มหนาทสรางกลองขอความ โดยพมพขอความวา "Hello

Printer" ออกจอภาพ บรรทดท 12 สรางออปเจกต image ทเชอมโยงไปยงรปภาพชอวา "printer.png" เพอใชส าหรบแสดงบนป ม บรรทดท 13 โปรแกรมสรางป มโดยมขอความบนป มคอ "Go!" (text = "Go!"), ขดเสน

ใตทตวอกษร "G" (underline=0), ขอบของป มเปนแบบรองลก (relief=GROOVE), เมอป มถกกด ป มจะเปน

สเหลอง (activebackground = "yellow"), เมอป มถกกดขอความจะเปนสแดง (activeforeground = "red") และเมอป มดงกลาวถกคลก โปรแกรมจะเรยกใชเมธอด helloCallBack()

บรรทดท 15 โปรแกรมสรางป มโดยมภาพบนป มคอ "printer.png" (image = image) เมอป มดงกลาว

ถกคลก โปรแกรมจะเรยกใชเมธอด printCallBack() ผลลพธทไดแสดงดงรปดานบน

3. Canvas คอ Widget ทมลกษณะเปนรปสเหลยม มเปาหมายเพอใชส าหรบจดวางรปภาพ เฟรม

ขอความ หรอวาดรปภาพทมความซบซอนได รปรางของ Canvas แสดงดงรป

รปแบบค าสงส าหรบการสราง Canvas คอ

c = Canvas( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Canvas แสดงในตารางดานลาง

Page 232: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Option ค าอธบาย confine ก าหนดให Canvas สามารถ เ ล อน Scroll ได ( ดฟอลต เท ากบ True) เ ชน

Canvas(root, bd = 5 , relief = GROOVE, height = 250 , width = 300 , confine = False)

cursor ก าหนดรปแบบของเคอรเซอร เคอรเซอรจะเปลยนรปเมอเคลอนเมาสทบบน Canvas เชน Canvas(root, bd = 5, relief = GROOVE, height = 250, width = 300, cursor = "hand1")

bd ก าหนดขนาดความกวางขอบ Canvas มหนวยเปนพกเซล คาเรมตนเทากบ 2 พกเซล เชน Canvas(root, bd = 3, relief = GROOVE, height = 250, width = 300)

bg ก าหนดสพนหลงของ Canvas เชน Canvas(root, bd = 3, relief = GROOVE, bg = "blue", height = 250, width = 300)

scrollregion ก าหนดพนทท Canvas สามารถขยายไดสงสดเทาใด โดยขอบเขตพนทก าหนดในตวแปรชนด Tuple ซงมรปแบบ tuple(w, e, n, s) โดย w คอขอบดานซาย, e คอขอบดานขวา, n คอดานบน และ s คอดานลาง เชน Canvas(root, bd = 5, relief = GROOVE, scrollregion = (0, 0, 500, 500))

xscrollincrement ก าหนดขนาดการเพมข นของจ านวนคอลมน เมอ Canvas ใช Scrollbar ในแนวนอน ใชในกรณท Canvas ตองการแสดงผลมากกวาขอบเขตท Canvas ก าหนดไว เชน Canvas(frame, xscrollcommand = xscrollbar.set, yscrollcommand = yscrollbar.set, xscrollincrement = 10, yscrollincrement=10)

height ก าหนดความสงของ Canvas เชน Canvas(root, bd = 3, relief = GROOVE, height = 250, width = 300)

highlightcolor ก าหนดแถบสเมอ Canvas ไดรบความสนใจ (Focus) เชน Canvas(root, bd = 5, relief = GROOVE, height = 250, width = 300, highlightcolor = "green")

xscrollcommand ก าหนดให Canvas สามารถใชงาน Scrollbar ในแนวนอนได เชน Canvas(frame, xscrollcommand = xscrollbar.set, yscrollcommand = yscrollbar.set)

yscrollincrement เหมอนกบ xscrollincrement แตเปลยนเปนแนวตงแทน เชน Canvas(frame, xscrollcommand = xscrollbar.set, yscrollcommand = yscrollbar.set, xscrollincrement = 10, yscrollincrement = 10)

yscrollcommand ก าหนดให Canvas สามารถใชงาน Scrollbar ในแนวตงได เชน Canvas(frame, xscrollcommand = xscrollbar.set, yscrollcommand = yscrollbar.set)

Page 233: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

relief ก าหนดลกษณะขอบของ Canvas ในแบบ 3D เชน Canvas(root, bd = 5, relief = GROOVE, height = 250, width = 300)

width ก าหนดความกวางของ Canvas เชน Canvas(root, bd = 3, relief = GROOVE, height = 250, width = 300)

Canvas สามารถวาดรปตางๆ ลงบน Canvas ได ดงนนเมธอดตอไปน จงใชงานรวมกบ Canvas ได

เปนอยางด

- การวาดเสนโคงบน Canvas ดวยเมธอด create_arc() ตวอยางเชน

coord = 10, 50, 240, 210

arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")

- การสรางรปภาพบน Canvas ดวยเมธอด create_image() ตวอยางเชน

filename = PhotoImage(file = "sunshine.gif")

image = canvas.create_image(50, 50, anchor = NE, image = filename)

- การวาดเสนบน Canvas ดวยเมธอด create_line() ตวอยางเชน

line = canvas.create_line(x0, y0, x1, y1,..., xn, yn, options)

- การวาดรปวงรบน Canvas ดวยเมธอด create_oval() ตวอยางเชน

oval = canvas.create_oval(x0, y0, x1, y1, options)

- การวาดรปหลายเหลยมบน Canvas ดวยเมธอด create_ polygon() ตวอยางเชน

polygon = canvas.create_polygon(x0, y0, x1, y1,...xn, yn, options)

- การวาดรปสเหลยมบน Canvas ดวยเมธอด create_ rectangle() ตวอยางเชน

rect = canvas.create_rectangle(50, 25, 150, 75,fill = "blue")

- การลบภาพวาดทงหมดออกจาก Canvas ดวยเมธอด create_ delete() ตวอยางเชน

rect = canvas.delect(oval) #remove oval from Canvas

Page 234: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

rect = canvas.delect(ALL) #remove ALL from Canvas

ตวอยางการสรางและใชงาน Canvas

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Canvas โดยบรรทดท 4 โปรแกรมสราง Canvas

ทมสพนหลงเปนสน าเงน (bg = "blue") มความกวางเทากบ 300 และสงเทากบ 250 บรรทดท 5 ก าหนดต าแหนงของ coord ซงเปนตวแปรชนด Tuple เทากบ 10, 50, 240, 210 ตามล าดบ บรรทดท 6 โปรแกรมท า

การวาดวงกลมเสยวสแดงลงบน Canvas ดงรปดานบน

4. Checkbutton คอ Widget ทมลกษณะเปนรปสเหลยมเลกๆ เพอใหผใชสามารถเลอกไดโดยการ

คลกบน Checkbutton ดงกลาว ผใชสามารถเลอกไดมากกวา 1 ตวเลอก

รปแบบค าสงส าหรบการสราง Checkbutton คอ

cb = Checkbutton( root, option=value, ... )

Page 235: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Checkbutton แสดงในตารางดานลาง

Option ค าอธบาย activebackground ก าหนดสบนพนหลงของ Checkbutton เมอผใชคลกบนป ม เชน

Checkbutton(root, text = "Music", activebackground = "gray") activeforeground ก าหนดสขอความบน Checkbutton เมอผใชคลกบนป ม เชน Checkbutton(root,

text = "Music", activebackground = "gray", activeforeground = "white") bd ก าหนดขนาดความกวางขอบ Checkbutton มหนวยเปนพกเซล คาเรมตนเทากบ 2

พก เซล เ ชน Checkbutton(root, text = "Music", bg = "yellow", bd = 5, relief = GROOVE)

bg ก าหนดสพนหลงของ Checkbutton เชน Checkbutton(root, text = "Music", bg = "yellow")

bitmap แสดงภาพแบบ monochrome บน Checkbutton command ฟงชนหรอเมธอดทจะถกเรยกใชเมอ Checkbutton ถกกดหรอคลก เชน

Checkbutton(root, text = "Music", command = myFunc) fg ก าหนดสของฟอนต เชน Checkbutton(root, text = "Music", fg = "red") cursor ก าหนดรปแบบของเคอรเซอร เคอรเซอรจะเปลยนรปเมอเคลอนเมาสทบบน

Checkbutton เชน Checkbutton(root, text = "Music", fg = "red", cursor = "hand1") font ก าหนดรปแบบของฟอนตของ Checkbutton เชน

Checkbutton(root, text = "Music", fg = "red", font = "Times 10 bold") height ก าหนดความสงของ Checkbutton เชน

Checkbutton(root, text = "Music", height = 5, width = 10, bg = "pink") width ก าหนดความกวางของ Checkbutton เชน

Checkbutton(root, text = "Music", height = 5, width = 10, bg = "pink") highlightcolor ก าหนดแถบสเมอ Checkbutton ไดรบความสนใจ เชน Checkbutton(root, text =

"Music", height = 5, width = 10, highlightcolor = "green") image ก าหนดรปภาพใหกบป มแทนการใชขอความ เชน

image = PhotoImage(file = 'printer.png') Checkbutton(root, text = "Music", height = 5, width = 10, image = image)

Page 236: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

justify ก าหนดต าแหนงการแสดงผลขอความบนป ม โดย LEFT = วางขอความชดดานซายของป ม , RIGHT = ชดดานขวา , CENTER = วางตรงกลางป ม เชน Checkbutton(root, text = "Music\nVideo", justify = LEFT)

padx เตมขอความวาง (Padding) ดานซายและขวาของขอความใน Checkbutton เชน Checkbutton(root, text = "Music", padx = 5)

pady เตมขอความวาง (Padding) ดานบนและลางของขอความใน Checkbutton เชน Checkbutton(root, text = "Music", pady = 5)

relief ก าหนดลกษณะขอบของ Checkbutton ในแบบ 3D เชน Checkbutton(root, text = "Music", relief = GROOVE)

state ก าหนดให Checkbutton ท างานหรอไมท างาน ถาก าหนดเปน DISABLED Checkbutton จ ะ ไ ม ท า ง า น เ ช น Checkbutton(root, text = "Music", state = DISABLED)

underline ตวอกษรของ Checkbutton จะถกขดเสนใต (0 คออกษรตวแรก, -1 = ไมขดเสนใต) เชน Checkbutton(root, text = "Music", underline = 1)

wraplength ขอความบนป มจะถกจ ากดพนท โดยจะแสดงผลอยในขอบเขตทก าหนดใน wraplength เทานน เชน Checkbutton(root, text = "Music", wraplength = 20)

onvalue ก าหนดคาเรมตนใหกบ Checkbutton เมอ Checkbutton ถกคลกเลอกโปรแกรมจะดงคาใน onvalue ไปใชงาน เชน Checkbutton(root, text = "Music", onvalue = 1), หนาทของ onvalue คอ จดเตรยมคาขอมลเพอใหเมธอดอนๆ น าไปใชงานนนเอง (onvalue ในรปแบบสตรงคอ "on" )

offvalue ก าหนดคาเรมตนใหกบ Checkbutton เมอ Checkbutton ถกคลกยกเลกโปรแกรมจะดงคาใน offvalue ไปใชงาน เชน Checkbutton(root, text = "Music", offvalue = 0), หนาทของ offvalue คอ จดเตรยมคาขอมลเพอใหเมธอดอนๆ น าไปใชงานเชนเดยวกบ onvalue (offvalue ในรปแบบสตรงคอ "off" )

selectcolor ก าหนดสของชองวางใน Checkbutton เชน Checkbutton(root, text = "Music", selectcolor = "red")

selectimage ก าหนดรปภาพของชองวางใน checkbutton เชน image = PhotoImage(file = 'printer.png') Checkbutton(root, text = "Music", selectimage = image)

text ก าหนดขอความใหกบ Checkbutton ถาตองการก าหนดขอความมากกวา 1 บรรทดใหใช \n เชน "Music \n Audio \n Guitar"

Page 237: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

variable ใชส าหรบดงขอมลจาก Widgets หรอดงขอมลจาก onvalue และ offvalue นนเอง โดยจะท างานรวมกบเมธอด IntVar() เมอขอมลใน onvalue/offvalue เปนตวเลข และท างานรวมกบเมธอด StringVar() เมอขอมลใน onvalue/offvalue เปนสตรง เชน Checkbutton(root, text = "Music", variable = IntVar(), onvalue = 1, offvalue = 0)

Widget ชนด Checkbutton มเมธอดทชวยสนบสนนการท างานคอ

- เมธอด deselect() ท าหนาทเคลยรคา Checkbutton ทเลอกไว (turn-off) เชน

C = Checkbutton(root, text = "Music")

C.deselect()

- เมธอด flash() ท าหนาทวาด Checkbutton ใหม เชน

C = Checkbutton(root, text = "Music")

C.flash()

- เมธอด invoke() จะบงคบใหท าค าสงหลง command ทนท เชน

C = Checkbutton(root, text = "Music", command=callBack)

C.invoke()

- เมธอด select() เซต (turn-on) คาใหกบ Checkbutton เมอสถานะเดมของ Checkbutton ไม

ถกเลอก จะท าใหสถานะกลายเปนถกเลอกแทน เชน

C = Checkbutton(root, text = "Music")

C.select()

- เมธอด toggle() สลบระหวาง turn-on และ turn-off เมอสถานะเดมของ Checkbutton ถก

ก าหนดเปน on เมอเรยกเมธอด toggle() จะท าให Checkbutton กลายเปน off เชน

C = Checkbutton(root, text = "Music")

C.toggle()

Page 238: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางและใชงาน Checkbutton

ผลลพธทไดเมอสงรนโปรแกรมดงรป ใหทดลองคลกท Checkbutton และสงเกตการ

เปลยนแปลง

Page 239: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Checkbutton บรรทดท 4 เปนการสรางตวแปรชอ

CheckVar1 เพอใชส าหรบเกบคาขอมลชนดสตรง ในท นคอ 'on' หรอ 'off' ท เกดข นจากการคลกท Checkbutton (C1) โดยตวแปรดงกลาวสรางขนจากคลาสชอ StringVar() บรรทดท 5 เปนการสรางตวแปร

ชอ CheckVar2 ซงเปนชนดจ านวนเตม ในทนคอ 0 หรอ 1 ทเกดจากการคลก Checkbutton (C2) โดยสรางมาจากคลาสชอ IntVar() บรรทดท 7 โปรแกรมสรางฟงชนชอ checkCallBack() เพอทดสอบการท างานของ

Checkbutton C1 และ C2 โดยฟงชนดงกลาวเรยกใชงานเมธอด select() และ toggle() พรอมกบพมพคา

CheckVar1 และ CheckVar2 ออกทางจอภาพเมอผใชมการคลกท Checkbutton

บรรทดท 13 สราง Widget Checkbutton ชอ C1 ทมขอความวา 'Music' มความสงเทากบ 5 ความ

กวางเทากบ 20 เมอ Checkbutton C1 ถกคลกเลอกจะนาคาใน onvalue ('on') เกบไวในตวแปร CheckVar1

ทนท แตถา C1 ไมถกเลอก โปรแกรมจะนาคา offvalue ('off') เกบไวในตวแปร CheckVar1 แทน ใน Checkbutton C1 โปรแกรมฝงค าสงเอาไว ถามการคลกท Checkbutton C1 โปรแกรมจะเรยกใชเมธอด

checkCallBack() ทนท (command = checkCallBack)

บรรทดท 15 สราง Widget Checkbutton ชอ C2 ทมขอความวา 'Video' มความสงเทากบ 5 ความ

กวางเทากบ 20 เมอ Checkbutton C2 ถกคลกเลอกจะนาคาใน onvalue (1) เกบไวในตวแปร CheckVar2

ทนท แตถา C2 ไมถกเลอก โปรแกรมจะนาคา offvalue (0) เกบไวในตวแปร CheckVar2 แทน ใน Checkbutton C2 โปรแกรมฝงค าสงเอาไว ถามการคลกท Checkbutton C2 โปรแกรมจะเรยกใชเมธอด

checkCallBack() ผลลพธทไดแสดงดงในรปดานบน

5. Entry (น าเขาขอมล) คอ Widget ทมลกษณะเปนกลองขอความ เพอใชรบขอมลจากผใชเขามา

ประมวลผลในโปรแกรม เชน การปอนชอ-สกล รหสผาน เปนตน

รปแบบค าสงส าหรบการสราง Entry คอ

e = Entry( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Entry

Page 240: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ bg, bd,

cursor, font, fg, highlightcolor, justify, relief และ state ส าหรบ option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย exportselection โดยปกตเมอผใชเลอกขอความภายใน Entry ขอมลทถกเลอกจะถกสงไปเกบไว

ในคลปบอรด (Clipboard) โดยอตโนมต เมอไมตองการใหขอมลดงกลาวถกสงไปย งคลปบอรด ใหก าหนด exportselection = 0 เ ชน Entry(root, bd = 5, exportselection = 0)

selectbackground ก าหนดสพนหลงของขอความเมอขอความดงกลาวถกเลอก (highlight) เชน Entry(root, bd = 5, selectbackground = "red")

selectborderwidth ก าหนดขนาดความกวางของขอบรอบๆ ขอความทถกเลอก (คาดฟอลตคอ 1 พกเซล) เชน Entry(root, bd = 3, width = 10, selectborderwidth = 10)

selectforeground ก าหนดสของขอความใน Entry เมอขอความดงกลาวถกเลอก เชน Entry(root, bd = 3, width = 10, selectforeground = "red")

show ขอความทปอนเขาไปใน Entry จะมลกษณะเปน Clear text (ไมมการเขารหส) แตบางครง ผใชงานจ าเปนตองซอนขอความดงกลาว เชน รหสผาน เปนตน สามารถก าหนดโดย show="*" เชน Entry(root, bd = 3,width = 10, show = "*")

textvariable ก าหนดตวแปรส าหรบใชเกบคาทเกดขนจากการปอนขอมลลงใน Entry โดยท างานรวมกบคลาส StringVar() เชน entryVar = StringVar() Entry(root, bd = 3, width = 10, show = "*", textvariable = entryVar)

width ก าหนดขนาดความกวางของ Entry ทแสดงผล เชน Entry(root, bd = 3, width = 5)

xscrollcommand เมอคาดวาผใชงานจะปอนขอมลเกนความกวาง (Width) ของ Entry ทก าหนดไว สามารถใช xscrollcommand (แทบสไลดในแนวนอน) ท างานรวมกบ Entry ได เชน scrollbar = Scrollbar(root, orient = HORIZONTAL) Entry(root, bd = 3, width = 5, show = "*", xscrollcommand = scrollbar.set)

Page 241: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Widget ชนด Entry มเมธอดทชวยสนบสนนการทางาน คอ

- เมธอด delete(first, last = None) ท าหนาทลบตวอกษรออกจาก Entry โดยก าหนดต าแหนง

ตวอกษรเรมตนทพารามเตอร first และต าแหนงตวอกษรตวสดทายในพารามเตอร last ถาไมไดก าหนดคา

ใหกบพารามเตอร last ตวอกษรตวแรกจะถกลบเพยงตวเดยวเทานน เชน

E = Entry(root, bd = 3, width = 5, show = "*")

E.delete(0, END)

- เมธอด get() ท าหนาดงขอมลจาก Entry เปนสตรง เชน

E = Entry(root, bd = 3, width = 5, show = "*")

E.get()

- เมธอด icursor(index) ก าหนดต าแหนงของเคอรเซอรในขอความของ Entry ผานพารามเตอร

index เชน

E = Entry(root, bd = 3, width = 5)

E.icursor(3)

- เมธอด index(index) เลอนตวชไปยงต าแหนงทตองการของขอความใน Entry เชน

E = Entry(root, bd = 3, width = 5)

E.index(3)

- เมธอด insert(index, s) เพมสตรงในต าแหนง (index) ทก าหนด เชน

E = Entry(root, bd = 3, width = 5)

E.insert(3, "Hello")

- เมธอด select_adjust(index) เมธอดนถกใชเพอยนยนวาตวอกษรทเลอกตรงตามทระบไวจรง เชน

E = Entry(root, bd = 3, width = 5)

E.select_adjust(3)

- เมธอด select_clear() เคลยรแทบ highlight บนขอความทถกเลอกใน Entry เชน

Page 242: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

E = Entry(root, bd=3, width=5)

E.select_clear()

- เมธอด select_from(index) ก าหนดต าแหนง ANCHOR ดวย index เชน

E = Entry(root, bd = 3, width = 5)

E.select_from(3)

- เมธอด select_present() เมอขอความถกเลอก (highlight) จะคนคาเปน True แตไมถกเลอกจะคน

คาเปน False เชน

E = Entry(root, bd = 3, width = 5)

E.select_present()

- เมธอด select_range(start, end) เลอกชวงของขอความทตองการ โดยก าหนดต าแหนงเรมตน

(start) และต าแหนงสนสด (end) เชน

E = Entry(root, bd = 3, width = 5)

E.select_range(2, 4)

- เมธอด select_to(index) เลอกชวงของขอความตงแต ANCHOR ไปถงตวอกษรตวสดทาย เชน

E = Entry(root, bd = 3, width = 5)

E.select_to(5)

Page 243: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางและใชงาน Entry

Page 244: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรมดงรป ใหลองปอนขอมลและคลกเลอกป มตางๆ พรอมกบสงเกต

การเปลยนแปลง

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Entry บรรทดท 3 สรางตวแปรชอ entryVar เพอ

ใชส าหรบเกบคาขอมลชนดสตรงทปอนลงใน Entry โดยตวแปรดงกลาวสรางขนจากคลาสชอ StringVar() บรรทดท 4 สรางฟงชนชอ deleteCallBack() ท าหนาทลบขอความใน Entry โดยการระบต าแหนงเรมตน

(first) และสนสด (last) ของขอความดวยเมธอด delete(first, last) บรรทดท 6 สรางฟงชนชอ insertCallBack() ท าหนาทแทรกหรอเพมขอความลงใน Entry ดวยเมธอด insert(index, s) โดย index คอต าแหนงทตองการ

เพมขอความลงใน Entry และ s คอขอความ บรรทดท 8 สรางฟงชน selectCallBack() ท าหนาทเลอกชวงของ

ขอความ (highlight) ใน Entry โดยใชเมธอด selectRange(start, end) บรรทดท 12 สรางฟงชนชอ showCallBack() ท าหนาทแสดงผลขอมลทอยใน Entry ผานตวแปรชนดสตรงชอ entryVar โดยใชเมธอด

get()

บรรทดท 14 โปรแกรมสราง Label เพอพมพค าวา 'Password' ออกจอภาพ บรรทดท 16 สราง Entry ทมความกวางของเทากบ 10 เมอผใชปอนขอมลใดๆ ลงใน Entry ขอความเหลาจะถกเกบไวในตวแปร

entryVar (textvariable=entryVar) บรรทดท 18 สรางป มมขอความบนป มคอ 'delete' เมอป มดงกลาวถกกด โปรแกรมจะเรยกฟงชน deleteCallBack() เขามาท างานทนท บรรทดท 20 สรางป มมขอความคอ 'insert' เมอ

ป มดงกลาวถกกด โปรแกรมจะเรยกฟงกชน insertCallBack() บรรทดท 22 สรางป มมขอความคอ 'select' เมอ

ป มดงกลาวถกกด โปรแกรมจะเรยกฟงกชน selectCallBack() บรรทดท 24 สรางป มมขอความคอ 'clear' เมอป มดงกลาวถกกด โปรแกรมจะเรยกฟงกชน clearCallBack() บรรทดท 26 สรางป มมขอความคอ 'show' เมอ

ป มดงกลาวถกกด โปรแกรมจะเรยกฟงกชน showCallBack() ผลลพธแสดงดงรปดานบน

6. Label (เลเบลหรอปายชอ) คอ Widget ทมลกษณะเปนปายของขอความ เพอใชแสดงขอความ

ตางๆ ผใชงานทราบ เชน ปายชอผใชงาน (User label) ปายชอรหสผาน (Password label) เปนตน

Page 245: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบค าสงส าหรบการสราง Label คอ

l = Label( root, option = value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Label

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน ส าหรบ

option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย anchor ก าหนดต าแหนงการวาง Label โดยการก าหนดทศคอ N, W, S, E เปนตน (อาน

คาดฟอลตคอวางกลางวนโดวส เชน Label(root, anchor = NW, text = "User Name:")

text ก าหนดขอความใหแสดงบน Label เชน Label(root, text = 'User Name:', font = ("Helvetica", 9), fg = "red")

bitmap ก าหนดรปภาพบตแมพทตองการแสดงบน Label เชน Label(root, bitmap = "error", fg = "red")

textvariable ก าหนดตวแปรส าหรบใชเกบขอความของ Label โดยท างานรวมกบคลาส StringVar() เชน labelVar = StringVar() Label(root, textvariable = labelVar, text = 'User Name:')

คลาส StringVar() และคลาส IntVar() มเมธอดส าคญทชวยสนบสนนการท างานของ Widgets คอ

- เมธอด get() ท าหนาทดงขอมลจากตวแปรคลาส StringVar() และ IntVar() มาแสดงผล เชน

stringVariable = StringVar()

Label(root, text="User Name:", textvariable = stringVariable)

print(stringVariable.get())

- เมธอด set() ท าหนาทก าหนดขอความใหมใหกบ Label เชน

Page 246: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

stringVariable = StringVar()

Label(root, text="User Name:", textvariable = stringVariable)

print(stringVariable.set("User:"))

ตวอยางการสรางและใชงาน Label

Page 247: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรมดงรป

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Label บรรทดท 5 และ 6 สรางตวแปรชอ userVar

และ passwordVar เพอใชส าหรบเกบคาขอมลชนดสตรงทปอนลงใน Entry ของ User Name และ Password ตามล าดบ บรรทดท 8 สรางฟงชนชอ showLoginInfo() ท าหนาทแสดงชอผใชงานและรหสผานดวยกลอง

ขอความชอ "Login info" และพมพขอมลออกทาง Python shell ดวย บรรทดท 12 สรางฟงชนชอ clearLogin() ท าหนาทลบชอผใชและรหสผานออกจาก Entry

บรรทดท 16 โปรแกรมสราง Label เพอพมพค าวา 'User Name:' ออกจอภาพ บรรทดท 17 สราง

Entry ทมความกวางของเทากบ 10, ตวอกษรทปอนจะถกก าหนดใหเปนสแดง และขอมลทปอนจะเกบไวในตวแปรชอ userVar (textvariable=userVar) บรรทดท 18 สราง Label เพอพมพค าวา 'Password:' ออกจอภาพ

บรรทดท 19 สราง Entry ทมความกวางของเทากบ 10 ขอมลทปอนจะถกเขารหสดวยตวอกษร '*' และเกบขอมลไวในตวแปรชอ passwdVar บรรทดท 20 สรางป มทมขอความบนป มคอ 'Login' เมอป มดงกลาวถกกด

โปรแกรมจะเรยกฟงชน showLoginInfor() เขามาท างานทนท บรรทดท 21 สรางป มมขอความคอ 'Cancel'

เมอป มดงกลาวถกกด โปรแกรมจะเรยกฟงชน clearLogin() ผลลพธแสดงดงรปดานบน

7. Listbox คอ Widget ทมลกษณะเปนรายการของสมาชกทสวนใหญมตวเลอกมากกวา 1 ตวเลอก

โดยผใชงานสามารถเลอกสมาชกจากรายการดงกลาวไดเพยงตวเดยวเทานน เชน ประเทศ ค าน าหนาชอ เปน

ตน

รปแบบค าสงส าหรบการสราง Listbox คอ

l = Listbox( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Listbox

Page 248: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน ส าหรบ

option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย selectbackground ก าหนดสขอความใน Listbox เมอสมาชกถกเลอก เชน

Listbox(root, selectbackground = "red") selectmode ก าหนดคณสมบตวาจะเลอกสมาชกจาก Listbox อยางไร โดยมโหมดใหเลอก

ดงนคอ - BROWSE เลอกสมาชกไดเพยงตวเดยว เมอลากเมาส (drag) แทบส (highlight) จะวงไปพรอมๆ กบเมาส - SINGLE เลอกสมาชกไดเพยงตวเดยว และไมสามารถลากเมาสได - MULTIPLE เลอกสมาชกไดมากกวา 1 ตว โดยการคลกเลอกสมาชกแตละตว ไมสามารถลากเมาสเพอเลอกสมาชกหลายๆ ตว พรอมกนได - EXTENDED เลอกสมาชกไดมากกวา 1 ตว โดยการลากเมาสเพอเลอกสมาชกหลายๆ ตว พรอมกนได เชน Listbox(root, selectmode = EXTENDED)

xscrollcommand สรางแทบสไลดแนวนอน (HORIZONTAL) ใหกบ Listbox เชน xscrollbar = Scrollbar(root, orient = VERTICAL) xscrollbar.pack(side = BOTTOM, fill = X) Listbox(root, selectmode = EXTENDED, xscrollcommand = xscrollbar.set)

yscrollcommand สรางแทบสไลดแนวตงใหกบ Listbox (VERTICAL) เชน yscrollbar = Scrollbar(root, orient = VERTICAL) yscrollbar.pack(side = RIGHT, fill = Y) Listbox(root, selectmode = EXTENDED, yscrollcommand = yscrollbar.set)

- เมธอด selection_set(first, last) ท าหนาทเลอกชวงสมาชกทตองการ โดยใชก าหนดต าแหนง

สมาชกตวแรกในพารามเตอร first และสมาชกตวสดทายคอ last ถาระบเฉพาะ first แสดงวาเลอกสมาชก

จาก Listbox เพยงตวเดยวเทานน เชน

Lb1 = Listbox(root)

Lb1.insert(1, "Python")

Lb1.insert(2, "Perl")

Page 249: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Lb1.pack()

Lb1.selection_set(1)

Lb1.selection_set(0, END)

- เมธอด curselection() ท าหนาทดงขอมลสมาชกทถกเลอกใน Listbox คาทสงกลบจะเปนขอมล

ชนด Tuple แตถาสมาชกใน Listbox ไมไดถกเลอกไวจะสงคากลบเปนทพเพลทวางเปลา เชน

Lb1 = Listbox(root)

Lb1.insert(1, "Python")

Lb1.insert(2, "Perl")

Lb1.insert(3, "C")

Lb1.pack()

Lb1.selection_set(0, 1)

print(Lb1.curselection())

ผลลพธทไดคอ (0, 1)

- เมธอด delete(first, last = None) ลบสมาชกออกจาก Listbox ถาก าหนดต าแหนง first และ last

แสดงวาเปนการลบสมาชกแบบชวง แตถาก าหนดเฉพาะ first จะเปนการลบสมาชกจาก Listbox เพยงตว

เดยวเทานน เชน

Lb1 = Listbox(root)

Lb1.insert(1, "Python")

Lb1.insert(2, "Perl")

Lb1.insert(3, "C")

Lb1.pack()

Lb1.delete(1, 2)

Page 250: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

- เมธอด get(first, last = None) ดงสมาชกจาก Listbox ถาก าหนดต าแหนง first และ last แสดงวา

เปนการดงสมาชกแบบชวง แตถาก าหนดเฉพาะ first จะเปนการดงสมาชกจาก Listbox เพยงตวเดยวเทานน คาทสงคนจากเมธอดดงกลาวเปนชนด Tuple เชน

Lb1 = Listbox(root)

Lb1.insert(1, "Python")

Lb1.insert(2, "Perl")

Lb1.insert(3, "C")

Lb1.pack()

Lb1.get(1, 2)

ผลลพธทไดคอ ('Perl', 'C')

- เมธอด index(i) ก าหนดต าแหนงตวชดวย index เชน

Lb1.index(1)

- เมธอด insert(index, *elements) เพมสมาชกตงแต 1 – n ตว ลงใน Listbox โดยสามารถก าหนด

ต าแหนงทจะเพมดวย index ถาตองการเพมสมาชกในต าแหนงทายของ Listbox ใหท าการก าหนด index เปน END เชน

Lb1 = Listbox(root)

Lb1.insert(1, "Python")

Lb1.insert(2, "Perl")

Lb1.insert(3, "C")

Lb1.pack()

elements = ("C++", "Prolog")

for item in elements:

Lb1.insert(END, item)

Page 251: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

- เมธอด nearest(y) ดงคาต าแหนงบนสดของ Listbox เชน

Lb1.nearest(1)

- เมธอด see(index) เปลยนต าแหนงของ Listbox โดยอางองจาก index เชน

Lb1.see(2)

- เมธอด size() ค านวณจ านวนสมาชกทมทงหมดใน Listbox เชน

Lb1.size()

ตวอยางการสรางและใชงาน Listbox

ผลลพธทไดเมอสงรนโปรแกรม

Page 252: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางโปรแกรม แสดงการสรางและใชงาน Listbox บรรทดท 4 สราง Listbox ในหนาตางหลก

บรรทดท 5 – 10 เปนการเพมสมาชกใหกบ Listbox คอ 'Python', 'Perl', 'C', 'PHP', 'JSP' และ 'Ruby' ผลลพธทไดแสดงดงรปดานบน

8. Menubutton คอ Widget ทมลกษณะเปนเมนแบบเลอนลง เมอผใชคลกเลอกเมนดงกลาวจะคง

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

รายการทตองการ

รปแบบค าสงส าหรบการสราง Menubutton คอ

me = Menubutton( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Menubutton

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ activebackground, activeforeground, anchor, bg, bitmap, bd, cursor, font, fg, heigh, width, image, justify,

padx, pady, relief, state, text, textvariable, underline และ wraplength ส าหรบ option ทแตกตางจาก Widgets

ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย direction ก าหนดต าแหนงของเมนทตองการแสดงผล ถาก าหนดเปน LEFT เมนจะปรากฏ

ทางดานซายของป มทก าลงแสดงผล ถาก าหนดเปน RIGHT เมนจะปรากฏทางดานขวาของป ม ถาก าหนดเปน "above" เมนจะแสดงดานบนของป ม ส าหรบคาดฟอลตคอ "below" เชน Menubutton(root, text = "Colors", relief = RAISED, direction = RIGHT)

disabledforeground สของตวอกษรใน Menubutton จะไมถกใชงาน เชน Menubutton(root, text = "Colors", disabledforeground = "black")

menu ก าหนดเมนยอยทสมพนธกบ Menubutton เชน mb = Menubutton(root, text = "Colors", relief = RAISED) mb.menu.add_checkbutton(label = "Red") mb.menu.add_checkbutton(label = "Green")

Page 253: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางและใชงาน Menubutton

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Menubutton บรรทดท 4 สราง Menubutton ชอ

mb โดยเมนดงกลาวมขอความคอ "Colors" และเมนยอยจะปรากฏทางดานขวาของเมน "Colors" บรรทดท 6 สรางเมนยอยภายใน Menubutton บรรทดท 9 และ 10 เพมรายการในเมนยอยชอ "Red" และ "Green"

ตามล าดบ

9. Message (ขอความ) คอ Widget ทมลกษณะเปนขอความเพออธบายบางสงบางอยางในโปรแกรม

(โดยแกไขไมได) คลายกบ Label แตแตกตางกนคอ Message จะถกปรบขนาดการแสดงผลใหเหมาะสมโดย

อตโนมต

Page 254: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบค าสงส าหรบการสราง Message คอ

me = Message( root, option = value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Message

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ anchor,

bg, bitmap, bd, cursor, font, fg, height, image, justify, padx, pady, relief, text, textvariable, underline, width และ wraplength

ตวอยางการสรางและใชงาน Message

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Message บรรทดท 4 สรางตวแปรชอ var เปนชนดสตรง ใชส าหรบเกบขอมลของ Message บรรทดท 5 สราง Message ชอ me โดยไมมขอความใดๆ

แสดงออกจอภาพ การควบคมการแสดงผลจะขนอยกบตวแปรทถกก าหนดใน textvariable นนคอ ตวแปร

Page 255: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ชอ var นนเอง บรรทดท 7 ก าหนดขอความใหมวา " Hello!! Welcome to Python Programming?" โดยใช

เมธอด set() ใหกบตวแปร var สงผลให Message เปลยนเปนขอความใหมทก าหนดขนทนท

10. Menu คอ Widget ทมลกษณะเปนเมนยอย แบงออกเปน 3 ประเภทคอ เมนแบบ popup, toplevel

และ pull-down ตวอยางเชน เมน File, Edit, Option, Windows และ Help เปนตน

รปแบบค าสงส าหรบการสราง Menu คอ

me = Menu( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Menu

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ

activebackground, activeforeground, bg, bd, cursor, disabledforeground, font, fg, relief, image ส าห รบ

option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย activeborderwidth ก าหนดขนาดความกวางของกรอบเมน เมอผใชคลกเลอกเมน (ดฟอลตเทากบ 1

พกเซล) เชน Menu(root, activeborderwidth = 5) postcommand ก าหนดใหเมนเรยกใชเมธอดหรอฟงชน เมอมผใชคลกเลอกเมนดงกลาว เชน

Menu(root, postcommand = donothing) selectcolor ก าหนดสของป ม checkbutton หรอ radiobutton เมอป มเหลานถกเลอก เชน

Menu(root, selectcolor = "red")

Page 256: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

tearoff โดยปกตเมอเพมรายการของเมนยอยเขาไปในเมนหลกจะเพมในต าแหนงท 1 แตเมอก าหนดให tearoff = 0 จะสามารถเพมเมนยอยในต าแหนงท 0 ได และเมนยอยนน ๆ จะสามารถแสดงผลเปนอสระจากเมนหลกได เชน Menu(menubar, tearoff = 1)

title ก าหนดขอความ title ใหกบ Menu Widget

Widget ชนด Menu มเมธอดทชวยสนบสนนการทางาน คอ

- เมธอด add_command(options) สรางเมนยอยในเมนหลก เชน

menubar = Menu(root)

filemenu = Menu(menubar, tearoff = 0)

filemenu.add_command(label = "New", command = donothing)

- เมธอด add_radiobutton(options) สรางเมนชนด checkbutton ในเมนหลก เชน

menubar = Menu(root)

filemenu = Menu(menubar, tearoff = 0)

filemenu.add_radiobutton(label = "Exit", selectcolor = "red")

- เมธอด add_checkbutton(options) สรางเมนชนด checkbutton ในเมนหลก เชน

menubar = Menu(root)

filemenu = Menu(menubar, tearoff = 0)

filemenu.add_checkbutton(label = "Exit", selectcolor = "red")

- เมธอด add_cascade(options) เพมชดของเมนยอยทเรยงตอเนองกนในเมนหลก เชน

menubar = Menu(root)

filemenu = Menu(menubar, tearoff = 0)

filemenu.add_command(label = "New", command = donothing)

Page 257: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

filemenu.add_command(label = "Open", command = donothing)

filemenu.add_command(label = "Save", command = donothing)

menubar.add_cascade(label = "File", menu = filemenu)

- เมธอด add_separator() สรางเสนเพอแยกเมนยอยออกจากกน เชน

filemenu.add_separator()

- เมธอด add(type, options) เพมเมนยอยเขาไปยงเมนหลกแบบตอทาย (append) โดย type คอ ชนด

ของเมนตางๆ เชน cascade (submenu), checkbutton, radiobutton, หรอ separator และ options เชน font, foreground หรอ image เปนตน

- เมธอด delete(startindex [,endindex]) ลบชวงรายการในเมนยอย โดยระบรายการแรกใน

startindex และรายการตวสดทายใน endindex เชน

editmenu.delete(2, 4)

- เมธอด entryconfig(index, options) เมอเมนยอยถกสรางขนแลว สามารถแกไขคณสมบตของ

เมนยอยเหลานน ผานเมธอด entryconfig() โดยอางดวย index เชน

filemenu.entryconfig(1, label="Test")

- เมธอด index(item) สงคากลบเปนต าแหนงของเมนยอยทเลอก เชน

filemenu.index(2)

- เมธอด insert_separator(index) เพมเสนส าหรบแบงเมนยอย โดยการระบต าแหนงทตองการ

แทรกเสนดงกลาว เชน

filemenu.insert_separator(2)

- เมธอด invoke(index) เรยกใชค าสงทมหนาทเกยวของกบเมนทเรยกใชงาน ถาเปนเมนแบบ

checkbutton เมธอดดงกลาวจะท าหนาทสลบระหวางป มถกเลอก (set) หรอถกยกเลก (cleared) ถาเมนเปนแบบ radiobutton จะถกเซตหรอยกเลก เชน

filemenu.invoke(2)

Page 258: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

- เมธอด type(index) สงคากลบเปนชนดของเมนยอย เชน ascade", "checkbutton", "command",

"radiobutton", "separator", or "tearoff" เปนตน เชน

filemenu.type(2)

ตวอยางการสรางและใชงาน Menu

Page 259: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงานเมน บรรทดท 3 สรางฟงชนชอวา donothing() ท า หนาทสรางหนาตางวนโดวสใหมทเปนอสระจากวนโดวสหลก โดยฟงชนดงกลาวสรางป มและพมพ

Page 260: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ขอความบนป มวา "Do nothing button" บรรทดท 8 สรางวนโดวสหลกพรอมกบเมนหลกชอวา menubar

เพอใชส าหรบรองรบเมนยอยทจะสรางขนในค าสงล าดบถดไป

บรรทดท 11 สรางเมนยอยชดแรกมชอวา filemenu บนเมนหลก (Menubar) โดยเมนยอยดงกลาวจะ

ถกเพมในต าแหนงแรกของเมนหลกได (tearoff = 0) บรรทดท 12 – 16 สรางรายการของเมนยอยโดยเรมจาก "New", "Open", "New", "Save", …, "Close" ตามล าดบ บรรทดท 17 สรางเสนส าหรบแบงหมวดหมของ

เมนยอยออกจากกน บรรทดท 18 สรางเมนยอยชอวา "Exit" เมอผใชงานกดป มดงกลาว โปรแกรมจะยตการ

ท างานทนท (command = root.destroy) บรรทดท 20 เพมเมนยอยทสรางขนชอวา filemenu เขาไปยงเมนหลก ในลกษณะแบบล าดบชนคลายน าตก (Cascade) เมนหลกดงกลาวมชอวา "File"

บรรทดท 23 สรางเมนหลกชอวา "Edit" เพอรองรบเมนยอยๆ ทท าหนาทเกยวกบการแกไขแฟม

เชน "Cut", "Copy", "Paste" และเสนแยก (separator) ตามล าดบ (บรรทดท 24 - 30) ในบรรทดท 32 เพมรายการเมนยอยทสรางขนในเมนหลกชอ "Edit" ดวยเมธอด add_cascade(label = "Edit", menu = editmenu)

บรรทดท 35 – 39 สรางเมนยอยทท าหนาทเกยวกบการชวยเหลอ (Help) ค าสงทใชงานจะคลายกบการสรางเมน File และ Edit บรรทดท 41 เปนการกระตนใหวนโดวสหลกอพเดทเมนหลก เพอใหทกอยางท างานได

อยางถกตองดวยเมธอด root.config(menu = menubar) ซงจะตองกระท าทกครงเมอสรางเมนตางๆ เสรจ

เรยบรอยแลว

11. Radiobutton คอ Widget ทมลกษณะเปนป มกลมมชองวางอยภายใน เมอถกเลอกจะเปลยน

สถานะเปนสททบขน Radiobutton สวนใหญจะถกสรางเปนกลมของตวเลอก เพอใหผใชงานสามารถเลอก

รายการใดรายการหนงเพยงรายการเดยวเทานน เชน เลอกค าน าหนาชอ ชาย, นางสาว, นาง เปนตน

รปแบบค าสงส าหรบการสราง Radiobutton คอ

r = Radiobutton( root, option = value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Radiobutton

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ

activebackground, activeforeground, anchor, bg, bitmap, borderwidth, command, cursor, font, fg, height, highlightbackground, highlightcolor, image, justify, padx, pady, relief, selectcolor, selectimage, state, text,

Page 261: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

textvariable, underline, width, wraplength ส าหรบ option ทแตกตางจาก Widgets ตวอนๆ แสดงในตาราง

ดานลาง

Option ค าอธบาย value ก าหนดคาใหกบ Radiobutton และจะสมพนธกบ variable เชน ถาก าหนดคาใน

value เทากบจ านวนเตม (int) ตวแปร variable จะตองเปนจ านวนเตมดวย ในกรณของสตรงกมลกษณะเชนเดยวกน เชน var = IntVar(), str = StringVar() Radiobutton(root, text = "Mr.", variable = var, value = 1) Radiobutton(root, text = "Mr.", variable = str, value = "Mr")

variable ก าหนดตวแปรทใชสาหรบเกบขอมลทเกดขนจากการท างานของ Radiobutton (ใชไดทงสตรงและจ านวนเตม) ส าหรบตวอยางเหมอนกบ value

Widget ชนด Radiobutton มเมธอดทชวยสนบสนนการทา งาน คอ

- เมธอด deselect() เคลยรคารายการทเลอกไวใน Radiobutton

- เมธอด flash() วาด Radiobutton ใหม

- เมธอด select() ก าหนดคาใหกบ Radiobutton

Page 262: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางและใชงาน Radiobutton

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Radiobutton บรรทดท 3 สรางฟงชนชอวา sel()

ท าหนาทก าหนดขอความใหมใหกบ Label เปน "You selected the option" ตามดวยคาทเกบอยในตวแปร

Page 263: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

var (var.get()) โดยใชเมธอด Label.config() บรรทดท 8 สรางตวแปรชอ var เปนชนดจ านวนเตม ส าหรบ

เกบขอมลทเกดขนจากการดาเนนการใดๆ บน Radiobutton บรรทดท 9 สราง Radiobutton ชอ R1 มขอความวา "Mr." มคาเทากบ 1 (value = 1) เมอมการคลกเลอกป ม Radiobuttion ดงกลาว ผลลพธจาก value จะถกนา

มาเกบไวในตวแปรชอ var (variable = var) เมอป มดงกลาวถกคลกเลอก โปรแกรมจะเรยกฟงชน ชอวา sel() มาท างานทนท (command = sel)

บรรทดท 12 และ 16 สราง Radiobutton ชอ R1 และ R2 มขอความวา "Miss." และ "Mrs." โดยมคา

เทากบ 2 และ 3 ตามล าดบ เมอคลกเลอกป มทงสอง โปรแกรมจะเรยกใชงานฟงกชน sel() เชนเดยวกบเมน R1 บรรทดท 18 สราง Label ชอ label เพอแสดงผลลพธจากการคลกเลอกป มใน Radiobutton ออกจอภาพ

ผลการท างานของโปรแกรมแสดงดงรปดานบน

12. Scale คอ Widget ทมลกษณะเลอนสไลดขนลงหรอซายขวาได เพอท าหนาทแสดงขอบเขตของ

ขอมลทผใชตองการ เชน ปรบขนาดความเขมของส ความสวาง ความคมชด เปนตน

รปแบบค าสงส าหรบการสราง Scale คอ

s = Scale( root, option = value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Scale

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ

activebackground, bg, bd, command, cursor, font, fg, highlightbackground, highlightcolor, length, relief, state, variable, width สา หรบ option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Page 264: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Option ค าอธบาย digits เปน Option ทใชส าหรบแสดงรปแบบของสเกล (scale) ม 3 รปแบบ คอ จ านวน

เตม (IntVar), จ านวนจรง (DoubleVar(float)), และสตรง (StringVar) เชน Scale(root, digits = 4, orient = HORIZONTAL)

from_ เปนเลขจ านวนเตมหรอจ านวนจรงทใชก าหนดขอบเขตเรมตนของสเกล เชน Scale(root, from_ = 0, to = 200, orient = HORIZONTAL)

label แสดงขอความก ากบสเกล ขอความจะปรากฏทมมดานซายบนเมอสเกลเปนชนดแนวนอน, ขอความจะปรากฏมมดานขวาบนเมอสเกลเปนชนดแนวตง คาดฟอลตจะไมแสดงขอความ เชน Scale(root, label = "Scale", orient = HORIZONTAL)

orient ก าหนด orient = HORIZONTAL เมอตองการใหสเกลวางอยในแนวนอน (แนวแกน x) และ orient = VERTICAL เมอตองการสรางสเกลในแนวตง (แกน y) คาดฟอลตเปนสเกลในแนวนอน (HORIZONTAL) เชน Scale(root, orient = HORIZONTAL)

repeatdelay ใชก าหนดเวลาเพอหนวงการเคลอนทของป มในสเกล (เคลอนทขน-ลง) ในกรณทผใชคลกในชองของสเกลคางไว (ดฟอลต = 300) เชน Scale(root, repeatdelay = 5, orient = HORIZONTAL)

resolution ก าหนดชวงของสเกลเมอเพมขนหรอลดลง เชน เมอก าหนดชวงของสเกลเทากบ from_ = -1.0 ถง to = 1.0 และก าหนด resolution = 0.5 สเกลจะเพมขนและลดลงดงนคอ -1.0, -0.5, 0.0, +0.5, และ +1.0 เชน Scale(root, from_ = -1.0, to = 1.0, resolution = 0.5, orient = HORIZONTAL)

showvalue โดยปกตคาของสเกลจะแสดงผลรวมกบแทบสเกลเสมอ เมอไมตองการแสดงคาของสเกลใหก าหนด showvalue = 0 เชน Scale(root, from_ = -1.0, to = 1.0, resolution = 0.5, showvalue = 0, orient = HORIZONTAL)

sliderlength ก าหนดขนาดของแทบสไลดของสเกล (โดยปกตแทบจะมขนาดเทากบ 30 พกเซล) เชน Scale(root, sliderlength = 10, orient = HORIZONTAL)

takefocus โดยปกต สเกลจะโฟกสเปนแบบวงรอบ เมอไมตองการพฤตกรรมดงกลาวใหก าหนด takefocus = 0 เชน Scale(root, from_ =1, to = 10, resolution = 1, takefocus = 0)

tickinterval ก าหนดการแสดงตวเลขชวงของสเกล เมอเปนสเกลแนวนอนจะแสดงชวงสเกลดานลาง แตถาเปนสเกลแนวตงจะแสดงดานซาย เชน Scale(root, from_ = 1, to = 10, tickinterval = 1, orient = HORIZONTAL)

Page 265: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

to เปนเลขจ านวนเตมหรอจ านวนจรงทใชก าหนดขอบเขตสนสดของสเกล เชน Scale(root, from_ = 0, to = 200, orient = HORIZONTAL)

troughcolor ก าหนดสของรองหรอรางของสเกล เชน Scale(root, from_ = 1, to = 10, troughcolor = "red", orient = HORIZONTAL)

Widget ชนด Scale มเมธอดทชวยสนบสนนการท างาน คอ

- เมธอด get() คนคาของสเกลปจจบนทก าลงท างานอย

- เมธอด set(value) ก าหนดคาสเกลใหม

ตวอยางการสรางและใชงาน Scale

Page 266: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Scale บรรทดท 2 สรางฟงชนชอวา sel() ท าหนาท

แสดงขอความใหกบ Label มคาเทากบ "Value =" ตามดวยคาทเกบอยในตวแปร var (var.get()) โดยใชเมธอด Label.config() บรรทดท 7 สรางตวแปรชอ var เปนชนดจ านวนจรงขนาดใหญ (Double) ส าหรบเกบ

ขอมลทเกดขนจากการเลอนสเกล บรรทดท 8 สราง Scale ชอ scale มขอบเขตของสเกลตงแต 1 ถง 15 (from_ = 1, to = 15), ชวงของสเกลเทากบ 1 (resolution = 1), แสดงคาของสเกลอยดานซายตงแต 1 ถง 15

(tickinterval = 1), รางของสเกลเปนสเหลอง ( troughcolor = "yellow"), เปนสเกลในแนวต ง (orient =

VERTICAL), เมอผใชเลอนแทบของสเกล ผลลพธจะเกบไวในตวแปรชอ var (variable = var) บรรทดท 12 สรางป มชอ button มขอความวา "Get Scale Value" เมอคลกป มดงกลาวโปรแกรมจะเรยกฟงชน sel() มา

ท างาน ผลการท างานของโปรแกรมแสดงดงรปดานบน

13. Scrollbar คอ Widget ทมลกษณะเปนแทบสไลดเลอนขน-ลง หรอซาย-ขวาได เพอเพมขนาด

พนทส าหรบแสดงผลหรอใหผใชปอนขอมลเพมขน นยมใชงานรวมกบ Listbox, Text, Canvas และ Entry

เปนตน

Page 267: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบค าสงส าหรบการสราง Scrollbar คอ

s = Scrollbar( root, option = value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Scrolbar

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets (Scale) ทไดกลาวมาแลวขางตน คอ

activebackground, bg, bd, command, cursor, orient, repeatdelay, takefocus, troughcolor, width ส าห รบ option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย borderwidth ก าหนดขนาดของหวลกศรและแทบสไลดของ Scrollbar เชน

Scrollbar(root, borderwidth = 5) jump ก าหนดพฤตกรรมเมอเกดการเคลอนทของ Scrollbar (แทบ) เมอก าหนด jump = 0

จะท าใหสามารถเรยกใช command เพอเรยกใชฟงชนทก าหนดไวเขามาท างาน, เมอก าหนด jump = 1 จะปดการใชงาน command เชน Scrollbar(root, jump = 0, command = jumpCall)

repeatinterval ก าหนดระยะเวลาเมอผใชกดคางทรางของ Scrollbar กอนทแทบของ Scrollbar จะเคลอนทไปยงทศทางทผใชตองการ คาดฟอลตเทากบ 300 มลลวนาท เชน Scrollbar(root, repeatdelay = 100)

Widget ชนด Scale มเมธอดทชวยสนบสนนการท างาน คอ

- เมธอด get() คนคาต าแหนงปจจบนของแทบทก าลงท างานอยซงม 2 คาคอ (a, b) โดย a

คอ ต าแหนงทอยดานซาย (Scrollbar เปนชนดแนวนอน) และดานบน (Scrollbar เปนชนดแนวตง) ของแทบ

และ b คอ คอต าแหนงทอยดานขวาและลางของแทบ เชน print(scrollbar.get()) ผลลพธคอ (0.41, 0.51) เมอ

Scrollbar เปนแนวตง คา 0.41 คอต าแหนงของแทบดานบน และ 0.51 คอต าแหนงของแทบดานลาง

- เมธอด set(first, last) ใชส าหรบกรณทน า Scrollbar ไปใชกบ Widget ชนดอนๆ โดย

Widgets ทตองการเรยกใชเมธอดดงกลาวจะเรยกผาน xscrollcommand หรอ yscrollcommand แทน ผลลพธทไดเหมอนกบการเรยกเมธอด get() นนเอง

Page 268: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางและใชงาน Scrollbar

ผลลพธทไดเมอสงรนโปรแกรม

Page 269: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Scrollbar บรรทดท 5 สราง Scrollbar ชอ scrollbar

บรรทดท 8 สราง Listbox ชอวา mylist จากน นท าการเพม Scrollbar เขาไปใน Listbox ในแนวต งหรอแนวแกน y ดวยค าสง yscrollcommand (yscrollcommand = scrollbar.set) บรรทดท 10 โปรแกรมใชลป for

สงพมพ "This is line number" และตามดวยตวเลขทเรมตงแต 0 – 99 ลงใน Listbox โดยใชเมธอด insert() สงผลให Scrollbar สรางแทบสไลดมขนาดทครอบคลมรายการทงหมด (ถาสงพมพรายการนอยๆ เชน 5

รายการ Scrollbar จะไมสรางแทบส าหรบเลอนสไลดให) บรรทดท 14 โปรแกรมสงกระตนให Scrollbar ท า

งานดวยเมธอด config() ผานออปชน command ผลการท างานของโปรแกรมแสดงดงรปดานบน

14. Text คอ Widget ทอนญาตใหผเขยนโปรแกรมสามารถสรางขอความเพออธบายบางสง

บางอยางในโปรแกรม โดย Text มความสามารถหลายอยาง เชน เปลยนสพนขอความ สตวอกษร รปแบบ

ฟอนต ขนาด และอนๆ

รปแบบค าสงส าหรบการสราง Text คอ

t = Text( root, option = value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Text

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ bg, bd,

cursor, font, fg, height, highlightbackground, highlightcolor, padx, pady, relief, state, width, xscrollcommand, yscrollcommand ส าหรบ option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย exportselection โดยปกตเมอผใชเลอกขอความภายใน Text ขอมลทถกเลอกจะถกสงไปเกบไวใน

คลปบอรด (Clipboard) โดยอตโนมต เมอไมตองการใหขอมลดงกลาวถกสงไปยงคลปบอรด ใหก าหนด exportselection = 0 เชน Text(root, exportselection = 0)

highlightthickness ก าหนดขนาดของ Highlight Focus ของ Text คาดฟอลตเทากบ 1 แตถาไมตองการใหออฟชนดงกลาวท างานใหก าหนดเปน 0 เชน Text(root, highlightthickness = 0)

insertbackground ก าหนดสของของเคอรเซอร ณ ต าแหนงปจจบน เชน Text(root, insertbackground = "red")

Page 270: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

insertborderwidth ขนาดของกรอบแบบ 3D รอบๆ เคอรเซอร คาดฟอลตคอ 0 insertofftime ก าหนดเวลาใหเคอรเซอรหยดท างาน มหนวยเปนมลลวนาท คาดฟอลตเทากบ

300 มลลวนาท ถาไมตองการใหเคอรเซอรกระพรบ ก าหนดให insertofftime = 0 เชน Text(root, insertbackground = "red", insertofftime = 100)

insertontime ก าหนดเวลาใหเคอรเซอรท างาน (กระพรบ) มหนวยเปนมลลวนาท คาดฟอลตเทากบ 600 มลลวนาท ถาไมตองการใหเคอรเซอรปรากฏ ก าหนดให insertofftime = 0 เชน Text(root, insertbackground = "red", insertofftime = 0)

insertwidth ก าหนดขนาดของเคอรเซอร คาดฟอลตเทากบ 2 พกเซล เชน Text(root, insertbackground = "red", insertwidth = 10)

selectbackground ก าหนดสพนหลงเมอผใชเลอกขอความ เชน Text(root, insertbackground = "red", selectbackground = "black")

selectborderwidth ก าหนดความกวางของกรอบรอบๆ Text spacing1 ก าหนดขนาดความกวางดานบนของขอความในแตละบรรทด คาดฟอลตเทากบ 0

เชน Text(root, spacing1 = 10) spacing2 ก าหนดระยะหางระหวางบรรทดของขอความใน Text คาดฟอลตเทากบ 0 เชน

Text(root, spacing2 = 10) spacing3 ก าหนดขนาดความกวางดานลางของขอความในแตละบรรทด คาดฟอลตเทากบ 0

เชน Text(root, spacing3 = 10) tabs ก าหนดขนาดของแทบในขอความ หนวยเปนพกเซล เชน

Text(root, tabs=100) (ใหผใชคลกทขอความแลวทดสอบกดทป ม TAB) wrap ก าหนดขนาดของขอความทจะถกครอบ (Focus) ถาก าหนด wrap = WORD

โปรแกรมครอบทละค า (แยกดวยขอความวาง) แตถาก าหนดเปน wrap = CHAR จะเปนการครอบทละตวอกษรแทน เชน Text(root, wrap = WORD)

xscrollcommand ก าหนด Scrollbar ใหกบ Text ในแนวนอน ใชในกรณทขอความมขนาดความยาวมากๆ เชน Text(root, xscrollcommand = xscrollbar.set, yscrollcommand = yscrollbar.set)

yscrollcommand ก าหนด Scrollbar ใหกบ Text ในแนวตง เชน Text(root, xscrollcommand = xscrollbar.set, yscrollcommand = yscrollbar.set)

Page 271: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Widget ชนด Text มเมธอดทชวยสนบสนนการท างาน คอ

- เมธอด delete(startindex [,endindex]) ลบตวอกษรหรอขอความใน Text โดยระบชวง

ของขอความ ถาก าหนดเฉพาะ startindex ขอความจะถกลบตงแต startindex ถงต าแหนงสนสดของขอความ

เชน text.delete(1.0) โดย 1 หมายถงบรรทดท 1, 0 หมายถงอกษรตวท 0 (linenumber.character number)

- เมธอด get(startindex [,endindex]) คนคาเปนตวอกษรหรอขอความจาก Text โดยใช

startindex ก าหนดต าแหนงเรมตนและต าแหนงสดทายของขอความดวย endindex เชน print(text.get(1.0,

END))

- เมธอด index(index) คนคาสมบรณ (absolute value) จาก Text โดยใช index ก าหนด

ต าแหนง เชน print(text.index(4.0))

Text ยงมเมธอดทชวยส าหรบการท า Marks, Tabs และ Indexes ดงน

- เมธอด index(mark) คนคาแถวและคอลมนทผใชท าเครองหมายไว (Marks) เชน

text.mark_set("Python", INSERT)

print(text.index(INSERT))

ผลลพธทไดคอ 1.26 (แถวท 1, คอลมนท 26)

- เมธอด mark_gravity(mark [,gravity]) ก าหนดลกษณะทศทางของการ Marks ซง

เปนไปได 2 ทศทาง คอ ทศทางทเปนจดอางองทางดานขวา (RIGHT) หรอดานซาย (LEFT) เชน ขอความวา

"This is Python Programming" เมอท าการ Marks ไวกบขอความเปนค าวา "Python" และท าการก าหนดทศทางเปน LEFT แสดงรปแบบค าสง ดงน

text.insert(INSERT, "This is Python Programming")

text.mark_set("Python", INSERT)

text.mark_gravity("Python", LEFT)

- เมธอด mark_names() คนคาขอความทงหมดท Marks ไว เชน print(text.mark_names())

- เมธอด mark_set(mark, index) ก าหนดต าแหนง Marks ใหม เชน

text.insert(INSERT, "This is Python Programming")

Page 272: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

text.mark_set("Python", CURRENT)

- เมธอด mark_unset(mark) เคลยรคาท Marks ไว เชน text.mark_unset(CURRENT)

Text ยงมเมธอดทชวยส าหรบการท างานเกยวกบ Tag ดงน

- เมธอด tag_add(tagname, startindex[,endindex] ...) ท าหนาทก าหนดปายชอลงใน

ขอความใน Text โดย tagname คอชอของ tag, startindex คอต าแหนงเรมตนทตองการเพม tag, endindex

(option = ไมใสกได) ต าแหนงสดทายทตองการเพม tag เชน text.tag_add("here", "1.0", "1.4") จากค าสง

ดานบนเปนการก าหนด tag ชอ "here" โดยขนาดของ tage มความยาวตงแตตวอกษรท 0 (.0) ถง 4 (.4) และอยในบรรทดท 1 (1.) ของขอความใน Text

- เมธอด tag_config ท าหนาทปรบแตงคณสมบตตางๆ หลงจากทสราง Text ขนมาใชงาน

แลว เชน การก าหนดสพนหลง สตวอกษร ขดเสนใต เปนตน เชน

text.tag_config("here", background="yellow", foreground="blue")

- เมธอด tag_delete(tagname) ท าหนาทลบ tag จากทเคยก าหนดไว

- เมธอด tag_remove(tagname [,startindex[.endindex]] ...) ท าหนาทลบ tag ออกจาก

พนททเคยก าหนดไว แตไมลบ Tag ทนยามเอาไวในโปรแกรม

ตวอยางการสรางและใชงาน Text

Page 273: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

Page 274: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Text บรรทดท 3 สรางเฟรมชอ frame มความหนา

ของกรอบเทากบ 2 พกเซล เปนชนดกรอบแบบรองลก บรรทดท 4 และ 5 สรางกรดบนเฟรมมขนาดเทากบ 1 แถว 1 คอลมน บรรทดท 6 และ 7 สราง Scrollbar ในแนวนอนลงบนเฟรม วางในต าแหนงแถวท 1 และ

คอลมนท 0 ในกรด และวาง Scrollbar จากดานทศตะวนออกไปทศตะวนตก (sticky=E+W) บรรทดท 8 และ 9 สราง Scrollbar ในแนวตงลงบนเฟรม วางในต าแหนงแถวท 0 และคอลมนท 1 ในกรด และวาง Scrollbar

จากดานทศเหนอไปทศใต (sticky=N+S)

บรรทดท 11 สราง Text ลงบนเฟรม โดยม Scrollbar อยดานขวา (yscrollcommand) และดานลาง (xscrollcommand) ของ Text ในบรรทดท 12 Text จะถกวางลงในแถวท 0 คอลมน 0 ของกรดใน 4 ทศทาง

(row=0, column=0, sticky=N+S+E+W) บรรทดท 14 และ 15 ออกค าสงให scrollbar แสดงผลใน Text

บรรทดท 17 เพมขอความวา "Hello...Python Programming" ลงใน Text โดยใชต าแหนงท Marks ไวคอ INSERT (โดยปกต INSERT Mark จะอยในต าแหนงดานทายของขอความใน Text สามารถเปลยนจด

Marks ของ INSERT ใหมไดโดยใชเมธอด mark_set() ทอธบายไวในหวขอทผานมา) บรรทดท 18 เพมขอความวา " Bye Bye....." ลงใน Text โดยใชต าแหนงท Marks ไวคอ END ซงเปนต าแหนงสดทายใน

ขอความ ผลลพธจากการท างานของบรรทดท 17 และ 18 คอขอความวา "Hello...Python ProgrammingBye

Bye....." บน Text

บรรทดท 19 สราง tag ชอ "here" โดยครอบคลมตวอกษรตงแตตวท 0 – 3 ของบรรทดท 1 เอาไว ("

here", "1.0", "1.4") คอขอความวา "Hell" บรรทดท 20 สราง tag ชอ "start" โดยครอบคลมตวอกษรตงแตตว

ท 8 – 13 เอาไว คอขอความวา "Python" บรรทดท 21 สงใหระบายส tage ชอ "here" โดยมสของพนหลงเปนสเหลอง และตวอกษรเปนสน าเงน บรรทดท 22 สงใหระบายส tage ชอ "start" โดยมสของพนหลงเปนสด า

และตวอกษรเปนสเขยวตามล าดบ ผลการท างานของโปรแกรมแสดงดงรปดานบน

15. Toplevel เปน Widget ทอยบนสดของวนโดวส ไมจ าเปนตองมวนโดวสอนๆ คอยควบคมหรอ

อยภายใตวนโดวสใดๆ หรอพดงายๆ คอ Toplevel จะถกดแลจาก Window Manager โดยตรงนนเอง ดง

แสดงดงรป

Page 275: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

รปแบบค าสงส าหรบการสราง Toplevel คอ

t = Toplevel( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Toplevel

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ bg, bd,

cursor, font, fg, height, relief, width เปนตน

Widget ชนด Toplevel มเมธอดทชวยสนบสนนการท างาน คอ

- เมธอด deiconify() แสดงวนโดวสทนท เมอเรยกใชเมธอดดงกลาว เชน

top = Toplevel()

top.deiconify()

- เมธอด frame() คนคา system-specific window identifier เชน

print(text.get(1.0, END))

ผลลพธคอ 0x2403c2

- เมธอด group(window) จดกลมของวนโดวส

- เมธอด iconify() แปลงวนโดวสไปเปน icon

- เมธอด protocol(name, function) ลงทะเบยนฟงชนเพอท าหนาทเปน callback ฟงชน

- เมธอด state() คนคาสถานะปจจบนของวนโดวส คาทเปนไปไดคอ Normal, iconic,

withdrawn และ icon

- เมธอด withdraw() ลบวนโดวสออกจากจอภาพ

- เมธอด maxsize(width, height) ก าหนดขนาดวนโดวสทใหญทสด

- เมธอด minsize(width, height) ก าหนดขนาดวนโดวสทเลกทสด

Page 276: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

- เมธอด title(string) ก าหนด title ของวนโดวสทสรางขน

ตวอยางการสรางและใชงาน Text (ตวอยางท 1)

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Toplevel บรรทดท 3 สรางวนโดวสหลกหรอ root

window ชอวา root บรรทดท 4 สรางวนโดวสหลกทเปนอสระจาก root ชอวา top บรรทดท 5 ก าหนด title ของ top เทากบ "Toplevel" บรรทดท 6 สงวาดวนโดวสใหมดวยเมธอด deiconify() ผลลพธแสดงดงรป

ดานบน

Page 277: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางและใชงาน Text (ตวอยางท 2)

ผลลพธทไดเมอสงรนโปรแกรม

ตวอยางโปรแกรม บรรทดท 3 สรางหนาตางหลกชอ root จากนนบรรทดท 4 โปรแกรมลบวนโดวส

ดวยเมธอด withdraw() บรรทดท 6 โปรแกรมสรางวนโดวสใหมชอ top โดยสบทอดคณสมบตทงหมดมาจาก

วนโดวส root บรรทดท 7 โปรแกรมท าการลงทะเบยนเมธอด root.destroy กบ "WM_DELETE_WINDOW" เพอใชส าหรบลบหรอทาลายวนโดวสออกจากจอภาพ บรรทดท 9 สรางป มชอ but มขอความบนป มคอ

'deiconify' บรรทดท 10 เปนการก าหนดวาเมอคลกป มดงกลาว โปรแกรมจะเรยกเมธอด root.deiconify เพอยตการท างานของวนโดวส ผลลพธแสดงดงรปดานบน

Page 278: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

16. Spinbox คอ Widget ทเหมอนกบ Entry แตสามารถก าหนดขอบเขตของขอมลได ดงแสดงใน

รป

รปแบบค าสงส าหรบการสราง Spinbox คอ

s = Spinbox( root, option=value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ Spinbox

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ activebackground, bg, bd, command, cursor, disabledbackground, disabledforeground, font, fg, justify,

relief, repeatdelay, repeatinterval, state, textvariable, width, wrap, xscrollcommand ส า ห รบ option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย format ก าหนดรปแบบของสตรงในการแสดงผล เชน Spinbox(root, from_= 0, to = 10,

format = '%10.4f') from_ ก าหนดจ านวนบรรทดเรมตนของ spinbox เชน Spinbox(root, from_ = 0, to = 10,

format = '%10.4f') to ก าหนดจ านวนบรรทดสดทายของ spinbox เชน Spinbox(root, from_ = 0, to =

10, format = '%10.4f')

Page 279: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

Widget ชนด Spinbox มเมธอดทชวยสนบสนนการท างาน คอ

- เมธอด delete(startindex [,endindex]) ลบตวอกษรหรอขอความใน Spinbox โดยระบชวงของ

ขอความ ถาก าหนดเฉพาะ startindex ขอความจะถกลบตงแต startindex ถงต าแหนงสนสดของขอความ เชน

spin.delete(1.0) โดย 1 หมายถงบรรทดท 1, 0 หมายถงอกษรตวท 0 (linenumber.character number)

- เมธอด get(startindex [,endindex]) คนคา เปนตวอกษรหรอขอความจาก Spinbox โดยใช

startindex ก าหนดต าแหนงเรมตน และต าแหนงสดทายของขอความดวย endindex เชน print(spin.get(1.0,

END))

- เมธอด index(index) คนคาสมบรณ (absolute value) จาก Spinbox โดยใช index ก าหนดต าแหนง

เชน print(spin.index(4.0))

- เมธอด insert(index [,string]...) แทรกขอความในต าแหนงทระบใน index เชน spin.insert(1.0,

"Python")

ตวอยางการสรางและใชงาน Spinbox

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน Spinbox ในบรรทดท 4 สราง Spinbox ชอ spin มจ านวนบรรทดเทากบ 10 บรรทด เพอใหผใชงานสามารถปอนขอมลไดเพมขน โดยการคลกเลอกทลกศรขน

และลงทอยทางดานขวาของ Spinbox

Page 280: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

17. LabelFrame คอ Widget ทผสมผสานกนระหวาง Frame กบ Label นนคอ มความสามารถใน

การรองรบ Widgets ตางๆ เหมอนเฟรม และจดการกบขอความไดเหมอนกบ Label นนเอง

รปแบบค าสงส าหรบการสราง LabelFrame คอ

lf1 = LabelFrame( root, option = value, ... )

พารามเตอร คอ

- root คอ วนโดวสหลก (root window)

- option คอ คณสมบตตางๆ ของ LabelFrame

Option ดงตอไปนมคณสมบตการท างานทเหมอนกบ Widgets ทไดกลาวมาแลวขางตน คอ bg, bd, cursor, font, height, highlightbackground, highlightcolor, highlightthickness, relief, text, width ส าห รบ

option ทแตกตางจาก Widgets ตวอนๆ แสดงในตารางดานลาง

Option ค าอธบาย labelAnchor ก าหนดต าแหนงทจะวางเลเบล คาดฟอลตคอ nw ซงมรปแบบดงรป เชน

LabelFrame(root, text = "Group", labelanchor="n", padx = 5, pady = 5)

Page 281: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางการสรางและใชงาน LabelFrame

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน LabelFrame ในบรรทดท 4 สราง LabelFrame ชอ

lf1 โดยมขอความวา "Group" วางอยในทศเหนอ (labelanchor = "n") ของวนโดวส บรรทดท 7 สราง Entry และเพมลงใน LabelFrame

18. MessageBox คอ Widget ทใชส าหรบแสดงขอความทเหมาะสม หรอตามทผเขยนโปรแกรม

ตองการ เชน ขอความเกยวกบการกระท าทผดพลาดของผใชงาน ขอความแจงเตอนตางๆ เปนตน

รปแบบค าสงส าหรบการสราง MessageBox คอ

mb = messagebox.FunctionName(title, message [, options])

พารามเตอร คอ

- title คอ title ของ messagebox

- message คอ ขอความทตองการแสดงใน messagebox

Page 282: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

- options คอ คณสมบตตางๆ ของ MessageBox เชน ABORT, RETRY หรอ IGNORE

ส าหรบฟงชน (FunctionName) ทสามารถใชงานไดดงน

- showinfo()

- showwarning()

- showerror()

- askquestion()

- askokcancel()

- askyesno()

- askretrycancel()

ตวอยางการสรางและใชงาน messagebox

Page 283: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม แสดงการสรางและใชงาน messagebox ในบรรทดท 4 สรางฟงชนชอ hello()

โดยพมพขอความวา "Hello World" ผาน messagebox บรรทดท 7 สรางป มชอ B1 มขอความวา "Say Hello" เมอกดป มดงกลาว โปรแกรมจะเรยกฟงชน hello() มาท างาน

19. Widgets อนๆ ทนาสนใจ ไพธอนยงม Widgets ทนาสนใจอนๆ เชน Paned Windows, Notebook,

Tree, Combobox, SizeGrip, Progressbar ซงมรปแบบคอ

Paned Windows Notebook Tree

Combobox SizeGrip Progressbar

Page 284: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ตวอยางโปรแกรมแสดงการสรางและใชงาน Widgets ตางๆ ทแสดงไวในรปดานบน

Page 285: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 286: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

6. ตวอยางการประยกตใชงานไพธอน GUI

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

อธบายมาแลวในตอนตน ประกอบเขาเปนแอพพลเคชนท มความซบซอนมากขน เพอเปนแนวทางในการ

พฒนาโปรแกรมตอไปในอนาคตได ซงจะแสดงไว 1 ตวอยางคอ โปรแกรมเครองคดเลข และเกม Tic-Tac-Toe ดงน

โปรแกรมเครองคดเลขขนาดเลก (Mini-Calculator) มขนตอนในการออกแบบและพฒนา

โปรแกรมดงน

1) สเกตช (Sketch) เครองคดเลขลงบนกระดาษแบบคราวๆ ดงรป

Page 287: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

2) น าเขาโมดลในการสราง GUI (tkinter)

from tkinter import *

3) ประกาศตวแปรชนดโกลบอล (global) เพอใหฟงชนตางๆ สามารถเรยกใชงานไดทกๆ ทในโปรแกรม

expression = ""

4) สรางหนาตางหลก (วนโดวสหลก) หรอ root window

root = drawMainWindow()

5) สรางเมน (Menubar)

menu = drawMenuBar()

6) สรางหนาจอแสดงผลลพธของเครองคดเลข (Entry Widget)

display = drawDisplay()

7) สรางป มของเครองคดเลขทงหมด

drawCalButton()

8) เขยนโปรแกรมดกจบและควบคมเหตการณตางๆ ทเกดขนบนเครองคดเลข

handleEvents()

Page 288: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

9) ก าหนดใหโปรแกรมวนลบรบค าสงไปเรอยๆ จนกวาจะยตโปรแกรม

mainloop()

ตวอยางโปรแกรมชอ calculator.py

Page 289: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 290: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 291: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 292: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3
Page 293: บทที่ 1 ทำควำมรู้จักกับภำษำ Python168training.com/training/document/python.pdf · 2018-08-20 · รูปแบบการเขียนด้วยวิธีที่3

ผลลพธทไดเมอสงรนโปรแกรม

จากตวอยางโปรแกรม บรรทดท 1 เปนการน าเขาโมดล tkinter เพอสราง GUI ส าหรบเครองคดเลข

บรรทดท 3 ประกาศตวแปรชนดโกลบอลชอ expression เพอใชส าหรบเกบนพจนคณตศาสตรทผใชปอนใหกบเครองคดเลข บรรทดท 5 สรางหนาตางหลก โดยม title คอ "Mini-Calculator" บรรทดท 10 สรางเมน

ทมเมนยอยเพยงเมนเดยวคอ Quit เพอใชส าหรบออกจากโปรแกรม บรรทดท 16 สราง Entry เพอรบขอมลจากผใชงานเพอน ามาประมวลผลภายในโปรแกรมเครองคดเลข โดยวางลงบนกรดในต าแหนงแถวท 1

คอลมนท 0 และวางเลเบลเพอคนระหวางป มเครองคดเลขกบ Entry โดยวางอยบนกรดในต าแหนงแถวท 2

คอลมนท 0

บรรทดท 22 สรางฟงชนชอ collectExpression() ท าหนาทเชอมตอนพจนของคณตศาสตรทผใชงาน

ปอนเขามาดวยป ม บรรทดท 28 สรางฟงชนชอ insertExpression() ท าหนาทแสดงนพจนคณตศาสตรออกทางจอภาพ บรรทดท 31 สรางฟงชนชอ clearDisplay() ท าหนาทลบนพจนคณตศาสตรแบบครงเดยว

ทงหมด และลบแบบทละตว บรรทดท 42 สรางฟงชนชอ handleEvents() ท าหนาทตอบสนองเมอผใชงาน

กดป มตางๆ บนเครองคดเลข บรรทดท 82 สรางฟงชนชอ drawCalButton() ท าหนาทวาด Widgets ตางๆ ลงบนหนาตางวนโดวส บรรทดท 104 สรางฟงชน calculator() ท าหนาทควบคมการท างานทงหมดของ

โปรแกรม โดยรวบรวมฟงชนหลกๆ เขาไวดวยกน บรรทดท 111 โปรแกรมตรวจสอบวามการสรางตวแปร

__main__ ไวหรอไม (โดยปกตไพธอนจะสรางตวแปร __main__ ไวแลวอตโนมต) ถาประกาศตวแปรดงกลาวไวในโปรแกรม จะสงผลใหสามารถเรยกฟงชน calculator() เขามาท างานได เพราะเงอนไขใน if

เปนจรงนนเอง