The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

ใบความรู้การแก้ปัญหาด้วยภาษาไพทอน

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by nanthaka.211, 2020-11-20 08:02:57

ใบความรู้การแก้ปัญหาด้วยภาษาไพทอน

ใบความรู้การแก้ปัญหาด้วยภาษาไพทอน

การเขยี นโปรแกรมดว้ ยภาษาไพทอน
1. ภาษาไพทอนคอื อะไร

ไพทอน (Python) คอื ภาษาระดับสูงทใ่ี ช้ในการพฒั นาโปรแกรมอกี ภาษาหนง่ึ ทมี่ ีความสามารถสูงไม่
แพ้ภาษาอื่นๆ ที่มีอยู่ในปัจจุบัน ถูกสร้างขึ้นโดยนักพัฒนาโปรแกรมชื่อ Guido van Rossum เป็นชาวดัชท์
(Dutch) ประเทศเนเธอร์แลนด์ เกิดเมอ่ื วนั ท่ี 31 มกราคม พ.ศ. 2499 ภาษาไพทอนไดร้ บั อิทธิพลมาจากภาษา
ABC ซึ่งมีความสามารถในการจัดการเก่ียวกับข้อผิดพลาดของโปรแกรม (Exceptionhandling) ได้ดี และดงึ
เอาความสามารถเดน่ ๆ ของภาษาระดับสงู อนื่ ๆ มาประยกุ ต์ดัดแปลงใชก้ ับไพทอนดว้ ย ส่งผลให้ภาษาไพทอน
เป็นที่นิยม และใช้งานกันอย่างกว้างขวางในปัจจุบัน เนื่องจากเป็นภาษาที่สามารถเรียนรู้ได้ง่าย รวดเร็ว
รูปแบบการเขียนโปรแกรมมีความกระทัดรัด และมีประสิทธิภาพสูง จากการนำเอาคุณลักษณะเด่นๆ ของ
ภาษาอื่นๆ มาเป็นพื้นฐานในการพัฒนาตอ่ ยอดนี้เอง ไพทอนจึงถูกเรียกว่าเป็นภาษาที่มีหลายกระบวนทศั น์
หรือหลายมุมมอง (Multi-paradigm languages) ซ่ึงเป็นการผสมผสานรวมเอาแนวความคิดในการพัฒนา
ซอฟต์แวร์แบบต่างๆ เขา้ ไว้ดว้ ยกนั ให้อยู่ในตัวของไพทอน คือ Object-oriented programming, Structured
programming, Functional programming และ Aspect-oriented programming

2. ทำไมตอ้ งเขยี นภาษาไพทอน
ไพทอนถูกพัฒนาขึ้นมาโดยไม่ขึ้นกับแพลตฟอร์ม (Platform independent) กล่าวคือ สามารถ

ทำงานไดท้ ัง้ บนระบบปฏิบตั กิ ารตระกลวู นิ โดวส์ (Windows) ตระกลู ยูนิกส-์ ลินกซ์ (Unix, Linux, xBSD) และ
ตระกูลแมคด้วย (Macintosh) โดยระบบปฏิบัตกิ ารเหล่านีต้ ดิ ตง้ั เพียงโปรแกรมแปลภาษาให้เป็นภาษาเคร่ือง
ของสถาปัตยกรรมน้ันๆ เท่านัน้ ดูข้อมูลเพิ่มเติมเกี่ยวกับแพลตฟอรม์ ทไี่ พทอนสนับสนนุ ไดท้ ี่เวบ็ ของไพทอน
http://www.python.org

ภาษาไพทอนเปน็ ซอฟตแ์ วรเ์ สรี (Open source software) เหมือนภาษาพเี อชพี (PHP) ทำให้ทุกคน
สามารถนำไพทอนมาพัฒนาโปรแกรมไดฟ้ รๆี โดยไม่ตอ้ งเสียคา่ ใชจ้ ่าย และคุณสมบตั ิความเป็นซอฟต์แวร์เสรี
ทำให้มีโปรแกรมเมอร์ทั่วโลกเข้ามาช่วยกันพัฒนาให้ไพทอนมีความสามารถสูงขึ้นเรื่อยๆส่งผลให้สามารถ
ครอบคลุมงานในลกั ษณะต่างๆ อยา่ งกว้างขวาง สามารถสรปุ คณุ สมบัติ และความสามารถของภาษาไพทอนได้
ดังต่อไปน้ี

คุณสมบตั ิเด่นของภาษาไพทอน

• โปรแกรมต้นฉบับที่ถูกเขียนขึ้นด้วยภาษาไพทอน สามารถนำไปประมวลผลได้กับหลาย

ระบบปฏิบัติการ (Portable/Cross platform/Platform independent) เช่น Unix, Linux,

Microsoft-windows, Amiga, Macintosh, BeOS, AIX, AROS, AS/4 0 0 , OS/2 , xBSD,

VMS, QNX, MS-DOS, OS/390, z/OS, Palm OS, PlayStation, Psion, Solaris, RISC OS,

HP-UX, Pocket PC และ VMS เป็นตน้

• ตัวภาษาไพทอนถูกสรา้ งขึ้นมาจากภาษาซี ทำให้ได้รับอิทธิพลไวยกรณ์ทางภาษาติดมาจาก
ภาษาซดี ว้ ย ดงั น้นั ผทู้ คี่ นุ้ เคยกับการเขียนโปรแกรมภาษาซีสามารถปรับตัวในเขียนภาษาไพ
ทอนได้ไม่ยาก

• ภาษาไพทอนเปน็ ภาษาทส่ี วยงาม งา่ ยตอ่ การเรียนรู้ (Readability) เขียนโปรแกรมได้กระชบั
(Writability) เนอ่ื งจากมโี ครงสรา้ งของภาษาไม่ซับซอ้ นเข้าใจง่าย เป็นภาษาท่ีมีความยดื หยุน่
สูงมาก (Flexibility) และมีความเสถยี รภาพ (Reliability)

• ไพทอนมคี วามสามารถในการจัดการหน่วยความจำอัตโนมตั ิ (Garbage collection)สามารถ
บริหารจัดการพื้นที่หน่วยความจำที่ใช้งานแบบไม่ต่อเนื่องให้สามารถทำงานได้อย่างมี
ประสิทธิภาพ ทำให้ผู้เขียนโปรแกรมไม่ต้องกังวลเกี่ยวกับการคืนหน่วยความจำคืนให้กับ
ระบบเหมอื นภาษาซี

• การแปลภาษาของภาษาไพทอนเป็นแบบอินเทอร์พรีเตอร์ เป็นภาษาสคริปต์ คือจะ
ประมวลผลไปทีละบรรทัด ทำให้ใช้เวลาในการเขียนโปรแกรม และการคอมไพล์ไม่มาก
เหมาะกับงานดา้ นการดูแลระบบ (System administration) เป็นอย่างยิง่ ไวยากรณ์อา่ นงา่ ย
เนื่องจากภาษาไพทอนได้กำจัดการใช้สัญลักษณ์ที่ใช้ในการกำหนดขอบเขต {…} ของ
โปรแกรมออกไป (สำหรบั ผ้ทู ่เี ขียนภาษา C หรอื Java มากอ่ น ในตอนแรกๆ จะไม่ค่อยชอบ
นัก แต่เม่อื เขยี นไปเรอื่ ยๆ จะรสู้ กึ ว่าคลอ่ งตวั กว่า) โดยใช้การยอ่ หนา้ แทน ทำใหส้ ามารถอ่าน
โปรแกรมที่เขยี นได้ง่าย นอกจากนั้นยงั มีการสนบั สนุนการเขียน docstring ซง่ึ เป็นข้อความ
สนั้ ๆ ทใ่ี ช้อธบิ ายการท างานของฟงั กช์ ัน คลาส และโมดูล ไดด้ ว้ ย

• ไพทอนเปน็ ภาษากาว (Glue language) คอื สามารถเรียกใชภ้ าษาอืน่ ๆ ได้หลายภาษา ทำให้
เหมาะท่จี ะใช้เขียนเพอื่ ประสานงานกบั โปรแกรมท่ีเขยี นในภาษาอ่ืนๆ ได้ดี

• ภาษาไพทอนถูกสร้างขึน้ โดยรวบรวมคุณสมบัติเด่นๆ ของภาษาตา่ งๆ เข้ามาไว้ด้วยกนั อาทิ
เชน่ ภาษา C, C++, Java, Perl, ABC, Modula-3, Icon, Matlab, ANSI C, Lisp, Smalltalk
และ Tcl เปน็ ตน้

• ไพทอนสามารถเรียกใช้ภาษา C/C++ ได้ ในทางกลับกันภาษา C/C++ ก็อนุญาตให้ฝัง
ชุดคำส่ังของไพทอนเอาไว้ภายในภาษา C/C++ ได้เชน่ เดยี วกัน

• ไม่ต้องเสียค่าใช้จ่ายใดๆ ทั้งสิ้น เพราะตัวแปรภาษาไพทอนอยู่ภายใต้ลิขสิทธิ์ GNU หรือ
ซอฟต์แวร์เสรี

• ภาษาไพทอน และชุดของไลบารี สนับสนุนการประมวลผลทางด้านวิยาศาสตร์ และ
วศิ วกรรมศาสตร์ได้อยา่ งมปี ระสทิ ธภิ าพ

• มีความยดื หยุ่นสูง ทำให้การจัดการกับงานดา้ นขอ้ ความ และ Text File ได้เปน็ อยา่ งดี

• ไพทอนมฟี ังกช์ นั ท่สี นบั สนนุ การเช่ือมตอ่ กบั ระบบฐานขอ้ มูลได้หลากหลายชนิด เช่นMySQL,
Sybase, Oracle, Informix, ODBC และอื่นๆ

• ไพทอนสนับสนุนการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming)

• ไพทอนนำเสนอโครงสร้างตัวแปรใหม่ (Built-in Object Types) เพื่อให้ผู้เขียนโปรแกรม
สะดวกในการพัฒนางานมากข้ึน เช่น ลิสต์ (List) ดกิ ชนั นารี (Dictionary) ทพั เบิล (Tuple)
และเซ็ต (Set) เป็นต้น ซ่ึงโครงสร้างตัวแปรใหม่เหล่านี้ ทำให้ง่ายต่อการใช้งาน และมี
ประสทิ ธภิ าพสงู

• ไพทอนเตรียมเครื่องมือตา่ งๆ เพ่อื ใชใ้ นการประมวลผลข้อมูลประเภทเท็กซ์ไฟล์ การจัดเรียง
ข้อมลู การเช่อื มต่อสตรงิ การตรวจสอบเงือ่ นไขของขอ้ ความ การแทนคำ ไว้อย่างครบถ้วน

• ภาษาไพทอนเป็นภาษาประเภท Server side script คือ การท างานของภาษาไพทอนจะ
ทำงานด้านฝั่งเซิรฟ์ เวอร์ (Server) แล้วสง่ ผลลัพธก์ ลบั มายงั ไคลเ์ อนท์ (Client) ทำใหม้ ีความ
ปลอดภัยสงู

• ไพทอนมีโมดูลสนับสนุนการเขยี นโปรแกรมกับระบบ (System) เช่น โปรเซส เธรด รวมถงึ
ระบบเครือขา่ ยคอมพวิ เตอร์ ไดเ้ ปน็ อย่างดี

• ไพทอนเตรียมเครื่องมือสำหรับสร้าง Internet script หรือ CGI script สำหรับเชื่อมต่อกบั
เครือข่ายอินเทอร์เน็ตผ่านซ็อกเก็ต (Sockets API) จึงทำให้สามารถเชื่อมต่อ และใช้งาน
แอพพิเคชนั ต่างๆ แบบระยะไกลได้ เชน่ FTP, Glopher, SSH เป็นตน้

• สนับสนุนเทคโนโลยี Component Object Model Technologies (COM) ของวินโดวส์
CORBA, ORBs, XML เป็นตน้

• ไพทอนจัดเตรยี มเคร่ืองมอื สำหรบั จดั การงานดา้ น Regular Expression (กลมุ่ ของสญั ลกั ษณ์
ท่ใี ช้ในการค้นหา แทนที่ หรอื เปรียบเทยี บคำ/ข้อความกับขอ้ มูลชนิดสตรงิ ) ไว้อย่างเพียงพอ

• ภาษาไพทอนใช้พัฒนาเว็บเซอร์วิส (Web service) รวมทั้งใช้บริหารการสร้างเว็บไซต์
สำเรจ็ รูปที่เรยี กว่า Content Management Framework (CMF)

• ไพทอนอนุญาตใหผ้ ูพ้ ัฒนาโปรแกรมสามารถสรา้ ง Dynamic Link Library (DLL) จากภาษา
อน่ื ๆ เพ่อื ใชง้ านร่วมกับไพทอนได้ เชน่ .dll ของวนิ โดวส์ เปน็ ต้น

• ไพทอนใช้มาตรฐานสำหรบั สร้างอนิ เตอรเ์ ฟส คือ Tkinter API ที่ไดร้ บั อทิ ธิพลมาจาก Tcl/Tk
ทที่ ำงานบนยูนิกสม์ าก่อน ซ่ึงสนบั สนุนกราฟกิ ของ X windows, วินโดวส์ และ Macintosh

จดุ เดน่ ท่ีสำคัญของการใช้ Tkinter API คือช่วยให้ผพู้ ัฒนาโปรแกรมไมจ่ ำเป็นต้องแก้ไขรหัส
ตน้ ฉบับเม่ือนำไปทำงานบนระบบปฏิบัติการอนื่ ๆ

• ไพทอนมีไลบรารีทสี่ นับสนุนงานดา้ นการสรา้ งภาพกราฟิก และการประมวลผลภาพ(Image
processing) มากมาย เช่น การปรับความคมชัดของภาพ การอ่านไฟล์ภาพขนาดใหญ่ การ
บนั ทกึ ไฟลใ์ ห้ในรูปแบบตา่ งๆ ไดอ้ ยา่ งสะดวก และมีประสทิ ธิภาพ

• ไพทอนเตรียมไลบรารสี ำหรับสนับสนนุ การเขียนโปรแกรมทางดา้ นปญั ญาประดษิ ฐ(์ Artificial
intelligent) เช่น Naive Bayes และ K-Nearest Neighbors ไว้ดว้ ย

• ไพทอนสนับสนุนการทำงานแบบ Dynamic typing คือ สามารถเปลี่ยนชนิดของข้อมูลได้
งา่ ย และสะดวก

• สนับสนนุ ให้สามารถเขียนโปรแกรมจาวารว่ มกบั ไพทอนได้ โดยใช้ Jython โดยทำงานอย่บู น
Java Virtual Machine (JVM) ได้

• สนับสนุนการเขียนโปรแกรมร่วมกับ .NET Framework ของไมโครซอฟต์ โดยการ
ใช้IronPython

• ไพทอนสนบั สนนุ การสร้างเอกสาร PDF โดยไม่ตอ้ งตดิ ต้ัง Acrobat Writer

• ไพทอนสนับสนนุ การสร้าง Shockwaves Flash (SWF) โดยไมจ่ ำเปน็ ต้องติดต้ัง

• Macromedia Flash

3. ซอฟตแ์ วร์ทใ่ี ช้ในการเขียนโปรแกรมภาษไพทอน
1. Python IDE: www.python.org
2. PyCharm: www.jetbrains.com/pycharm
3. เขยี นโปรแกรมออนไลน์ผา่ นเวบ็ : www.repl.it
4. Google Colab: https://colab.research.google.com/

4. การแก้ปญั หาโดยใชร้ ะบบเทคโนโลยี

Input Process Output

Feedback

ตัวอยา่ งที่ 1 ระบบบวกเลขจำนวนเต็ม 2 จำนวนทรี่ บั คา่ เขา้ ทางคยี บ์ อร์ด แลว้ แสดงผลรวมออกทาง

หนา้ จอ

องค์ประกอบของระบบ การทำงานของระบบ(ผังงาน) ภาษาโปรแกรม

Input: เลขจำนวนเต็ม 2 จำนวน x = int(input(“รับคา่ x: ”))
Start y = int(input(“รบั ค่า y: ”))
สมมติให้เกบ็ ไว้ในตัวแปร x และ

y รบั ค่า x z=x+y
Process: ผลรวมของ x และ y print(“ผลรวมคือ ”,z)

หรือ x + y รบั คา่ y
Output: แสดงผลรวมของ x

และ y

z=x+y

แสดงผล z

End

ตวั อย่างที่ 2 จากสถานการณใ์ นตัวอย่างท่ี 1 หากเปรยี บเทยี บกระบวนการแกป้ ญั หาภาษาไพทอน กับ

ภาษาซี จะไดด้ งั น้ี

ภาษาไพทอน ภาษาซี

x = int(input(“รบั คา่ x: ”)) #include<stdio.h>

y = int(input(“รบั คา่ y: ”)) Int main()

z=x+y {

print(“ผลรวมคอื ”,z) int x,y,z;

printf(“รับคา่ x: ”);

scanf(“%d”,&x);

printf(“รบั คา่ y: ”);

scanf(“%d”,&y);

z = x + y;

printf(“ผลรวมคอื %d\n”,z);

return 0;

}

5. สัญลกั ษณท์ ่ีใชใ้ นการเขยี นผงั งาน

สัญลักษณ์ ชอื่ ความหมาย
แสดงจดุ เรมิ่ ตน้ และจดุ จบของการทำงาน
เทอมินลั
แสดงการรบั ขอ้ มลู เขา้ หรือหรือผลลัพธ์โดยไมร่ ะบุ
การรบั เขา้ หรือ ชนดิ ของอุปกรณ์
แสดงผล การประมวลผล/การคำนวณ/การกำหนดค่า

การปฏบิ ตั งิ าน ใช้ในการตัดสนิ ใจหรือตรวจสอบเงอ่ื นไข

การตดั สนิ ใจ แสดงจุดต่อเนื่องหรอื จดุ เชื่อมต่อในผงั งานเดียวกนั

จดุ เชอ่ื มต่อ แสดงจดุ เช่ือมต่อระหวา่ งผงั งานที่อยู่คนละ
หนา้ กระดาษ
จดุ เชื่อมตอ่ สญั ลกั ษณะระบุการทำงานของฟงั ก์ชนั ย่อย
หน้ากระดาษ
บอกทิศทางการทำงานของโปรแกรม
ฟังกช์ นั

ทศิ ทาง

6. คำสั่งแสดงผล
การแสดงผลในภาษาไพทอนจะใช5คำสั่ง print() โดยมีรูปแบบการใช้งาน เช<น ต5องการพิมพ@

ข5อความวา< Hi Dad, Isn't it lovely? และ I said, "Hi" สามารถสง่ั พิมพค@ ือ

print ("Hi Dad", "Isn't it lovely?", ' I said, "Hi".')

เมื่อต5องการพิมพข@ อ5 ความเดมิ ซำ้ ๆ และติดกนั สามารถใชส5 ัญลกั ษณ@ * (Repetition Symbol) ได5

print ("Hello!”*5)

พิมพข@ อ5 มลู ในตัวแปรทเี่ กบ็ ข5อมูลสตรงิ

String = "Python programming."
print ('My subject is ',String)

เชื่อมต<อสตรงิ เข5าดว5 ยกนั ใชส5 ัญลักษณ@ + สำหรับเชื่อม

String = 'My subject is ' + "Python programming " + "language'
print ('My subject is ',String)

ในบางกรณีการแสดงผลสตริง ไม<สะดวกที่จะใช5เครื่องหมาย +, ''' หรือ , ในการเชื่อมต<อ ดังนั้น ผู5เขียน
โปรแกรมสามารถใชเ5 ครอ่ื งหมาย % (String formatting operator) ตามดว5 ยชนดิ ขอ5 มูล เชน< %s, %d (คล5าย printf
ของภาษาซี) เปqนต5น เข5ามาช<วยในการนำค<าข5อมูลในตัวแปรมาแสดงผลร<วมกับคำสั่ง print ได5 ทำให5การแสดงผล
ขอ5 มลู มคี วามยดื หยุน< ข้นึ เชน<

Subject = "Python language"
print("I like to study the %s. " %Subject)

จากตัวอย<างตัวแปร Subject เก็บข5อมูลชนิดสตริงคือ Python language ไว5 เมื่อใช5คำสั่ง print แล5วตาม
ด5วย %s (พิมพ@ข5อมูลที่เปqนสตรงิ ) โปรแกรมจะรู5อตั โนมัติว<าจะนำค<าของข5อมูลในตัวแปร Subject มาแสดงผลตรง

ตำแหน<ง %s ซึ่งเปqนการเชื่อมสตริงระหว<าง "I like to study the" กับ "Python language" เข5าด5วยกัน สำหรับ
สัญลักษณ@ทใ่ี ชใ5 นการแปลงสายอกั ขระ หรอื สตริง แสดงในตาราง

Conversion Type ความหมาย

%d, %i เลขจำนวนเตม็ แบบมเี คร่ืองหมาย เชน< 10, -5, 0

%u เลขจำนวนเตม็ แบบไมม< เี ครื่องหมาย เชน< 0, 100, 1024

%o เลขฐานแปดแบบไมม< ีเครอื่ งหมาย เช<น 0, 1, 2, 3, 4, 5, 6, 7

%x เลขฐานสิบหกแบบไม<มเี คร่อื งหมายและเปqนอักษรตัวเลก็ เชน< 1, a, c

%X เลขฐานสิบหกแบบไม<มเี ครอ่ื งหมายและเปนq อักษรตวั ใหญ< เช<น 1, A, C

%e เลขยกกำลงั และเปนq อักษรตวั เล็ก เชน< 1.000000e+06

%E เลขยกกำลงั และเปqนอกั ษรตวั ใหญ< เชน< 1.000000E+06

%f, %F เลขทศนิยม เชน< 3000.000000, -3.500000

%g แสดงผลเหมอื น e ถา5 ข5อมูลมีค<าทศนิยมเกิน 4 หลัก เช<น 0.00001 จะให5
ผลลัพธ@เปนq 1e-05 กรณีอ่นื ๆ จะแสดงผลเหมือน f เช<น 0.0001

%G แสดงผลเหมอื น E ถ5าขอ5 มูลมคี า< ทศนิยมเกนิ 4 หลกั เช<น 0.00001 จะให5
ผลลพั ธเ@ ปนq 1E-05 กรณีอ่ืนๆ จะแสดงผลเหมือน F เช<น 0.0001

%c แสดงผลตวั อกั ษร ซึ่งใช5ได5กับ เลขจำนวนเต็ม หรอื ตวั อักษรเพยี ง 1 ตวั

%r แสดงผลเปqนสตรงิ (แปลงจากออŽ ปเจ็กต@ ไปเปนq สตรงิ โดยใช5ไลบราร่ี repr)

%s แสดงผลเปqนสตริง (แปลงจากออŽ ปเจ็กต@ ไปเปนq สตรงิ โดยใชไ5 ลบราร่ี str)

%% แสดงผลเครอื่ งหมาย %

การแสดงผลจำนวนทศนยิ ม โดยปกตจิ ะมี 2 สว< นคือ ดา5 นหนา5 และด5านหลงั จดุ ทศนิยม เช<น 100.35
ผู5เขยี นโปรแกรมสามารถปรบั ขนาดความกว5างของจำนวนทศนิยมได5 จากตวั อย<าง 100 มีความกวา5 งเทา< กับ 3
และ .35 มีความกว5างเปqน 3 (รวมจุดทศนิยมดว5 ย) เปqนต5น เมื่อตอ5 งการให5จำนวนทศนยิ มมขี นาดความกว5าง
โดยรวมเปนq 10 ใหก5 ำหนดดังน้ี

print('%10f' % pi)

การเติมสญั ลกั ษณFและจัดตำแหนJงหนKาทศนิยม
ผู5เขียนโปรแกรมสามารถกำหนดรปู แบบการแสดงผลด5านหนา5 ทศนิยมโดยการเติมเครื่องหมายและ
จดั รปู แบบตำแหนง< การแสดงผลไดด5 ังนี้

from math import pi # import pi form math library
print('%010.2f' % pi)

7. คำสง่ั รบั คJาขอK มูลจากแปนT พมิ พหF รอื คยี บF อรดF
การรับค<าข5อมูลจากแป•นพิมพ@ในไพทอนเวอรช@ ันทีต่ ่ำกว<า 3.0 จะใช5ฟ‘งชัน input_raw() สำหรับรบั

ขอ5 มลู ท่เี ปนq สายอักษร หรอื สตรงิ และฟ‘งชนั input() สำหรบั รบั ข5อมลู ที่เปนq ตัวเลข แต<ในไพทอนเวอร@ชัน 3.0
ขึ้นไป ได5ตัด input_raw() ทิ้งไป เหลือเพียง input() เท<านั้น แต<สามารถรบั ข5อมลู ทง้ั สองประเภทได5 เพื่อให5
ผู5เขยี นโปรแกรมสะดวก และยืดหยุน< ในการใชง5 านมากข้ึน ซึ่งมีรปู แบบคือ

• การรับคา< ขอ5 มูลท่เี ปนq สตริง หรอื อŽอปเจก็ ต@ :

<variable> = input("text")

เชน< s = input("What’s you name : ") # รอรบั การปอ• นขอ5 มลู สตริงจากแปน• พิมพ@

print("Your name is :",s)

• การรับค<าข5อมูลทเี่ ปนq ตวั เลข หรือจำนวนจริง:
<variable> = int(input("text")) หรอื

<variable> = float(input("text"))

เช<น age = int(input("How old are you : ")) # รอรับข5อมูลตัวเลขจำนวนเต็ม
จากแป•นพิมพ@

print("Your age is :",age)

VAT = float(input("Enter VAT : ")) # รอรับข5อมูลตัวเลขจำนวนจรงิ
จากแป•นพิมพ@

print("Your VAT is :",VAT)

8. ตวั แปร (Variables)
ตวั แปร (Variable) คอื ชอ่ื หรือข5อความท่ผี ู5เขียนโปรแกรมประกาศขึ้น สำหรับใชเ5 กบ็ ขอ5 มูลท่ีตอ5 งการ

เพื่อนำไปใช5ในการเขียนโปรแกรม เพื่อทำการประมวลผลข5อมูล เก็บข5อมลู ในหน<วยความจำขณะท่ีโปรแกรม
ทำงาน เช<น constant และ VAT เปนq ตน5

การใช5งานตัวแปรมี 3 ขนั้ ตอน คอื
1. การประกาศตัวแปร (Variable declaration) ก<อนใช5งานตัวแปรใดๆ จำเปqนต5องประกาศให5
คอมไพเลอรร@ 5ูเสียกอ< น ตามหลักการแลว5 จะตอ5 งประกาศค<าตวั แปรให5สอดคล5องกบั ขอ5 มูลทจี่ ะนำไปใช5 เช<น int
x = 5 แตไ< พทอนไม<ไดใ5 หค5 วามสำคัญกับการประกาศชนิดของตวั แปรทำให5ผเู5 ขียนโปรแกรมไม<จำเปqนตอ5 งกงั วล
ว<าควรเลอื กใชต5 วั แปรชนดิ ใดใหเ5 หมาะสมกบั งานการแยกแยะชนิดของตัวแปรจะเปqนหน5าท่ีของไพทอน ซึ่งจะ
ทำใหเ5 องแบบอัตโนมัติโดยพิจารณาจากคา< ข5อมลู ที่กำหนดใหก5 ับตัวแปรนั้นๆ เชน<
Price = 120 #ไพทอนจะพิจารณาวา< เปqนจำนวนเต็ม
VAT = 0.07 #จำนวนจริง
Display = "Calculating the price goods" #สตริง
Total = Price + VAT #ไพทอนตคี วามวา< Total เปนq จำนวนจรงิ

2. กำหนดคา< ใหต5 วั แปร (Assigning values to variables) มรี ปู แบบดงั น้ี คือ
ชอ่ื ตัวแปร = ค<าของขอ5 มลู เช<น
Name = "Suchart" #กำหนดสตริงให5กับตัวแปร Name
String = "" #กำหนดคา< ว<างให5กบั ตวั แปร String
TAX = 0.075 #กำหนดค<าจำนวนจรงิ ใหก5 บั ตวั แปร TAX

ด5านซา5 ยมือของเคร่อื งหมาย = เปนq ชอ่ื ตัวแปร ส<วนดา5 นขวามือ คือข5อมูลท่ตี 5องการกำหนดลงไปโดย
ปกตแิ ล5วเมื่อทำการประกาศตวั แปรในไพทอนจะต5องมกี ารกำหนดคา< เร่มิ ต5นใหต5 ัวแปรเสมอ (มิเช<นนั้นจะเกิด
ข5อผดิ พลาด) แตถ< า5 ผ5เู ขยี นโปรแกรมยงั ไมแ< นใ< จวา< ควรจะกำหนดค<าอะไร หรอื เตรียมตัวแปรไว5รว< งหน5า เพ่ือรอ
คา< ที่จะเก็บในภายหลงั ให5กำหนดดว5 ย "" หรอื '' สำหรับสตรงิ หรือ None (คา< วา< งหรอื NULL) ถา5 เปqนจำนวน
เตม็ ควรเปนq 0 จำนวนจรงิ เปqน 0.0 เปqนตน5 สังเกตการณก@ ำหนดคา< ให5ตวั แปร ดงั ต<อไปนี้

counter = 100 # Integer
miles = 1000.0 # Floating
name = "John" # String
print (counter)
print (miles)
print (name)

9. นิพจน์ ตัวดำเนนิ การ และตัวถูกดำเนินการ
นิพจน์ (Expression) คือ การดำเนินการที่ประกอบด้วยตัวดำเนินการ (Operator) และตัวถูก

ดำเนนิ การ (Operand)
ตัวดำเนนิ การ (Operator) คือ สญั ลกั ษณท์ ใ่ี ชใ้ นการแทนการกระทำอย่างใดอย่างหนง่ึ กบั ขอ้ มูล เช่น

+, -, *, **, /, //, %, =, >, <, !=, ==, <> เปน็ ตน้
ตวั ถกู ดำเนินการ (Operand) คือ ข้อมูลท่ีถูกกระทำโดยตัวดำเนินการ ซึ่งตัวถกู ดำเนินการอาจอยู่ใน

รูปของตัวแปร (Variable) ค่าคงที่ (Constant) ค่าที่ได้รับจากฟังก์ชัน (Return function) หรือแม้กระท่ัง
นิพจน์ (Expression) เอง ก็เป็นตัวถูกดำเนินการได้ เช่น a+b, x++, a != b, x = (a + b) / 2 เป็นต้น จาก
ตัวอยา่ ง y = x2 + 2x + 1

y, x, 1 คอื ตวั ถูกดำเนนิ การ (Operand)
=, +, ยกกำลังสอง คือ ตัวดำเนินการ (Operator)
y = x2 + 2x + 1 ทงั้ หมด คอื นพิ จน์ (Expression)
ภาษาไพทอนสนับสนุนตัวดำเนินการหลายแบบ คือ Arithmetic Operators, Comparison
Operators, Assignment Operators, Logical Operators, Bitwise Operators, Membership Operators,
Identity Operators

1. ตัวดำเนนิ การทางคณิตศาสตร์ (Arithmetic Operators)

เพ่ือใหเ้ ขา้ ใจถึงการทำงานของตัวดำเนนิ การทางคณิตศาสตร์ สมมตุ ิให้ ตัวแปร a = 10, b = 5, c =
9.0, d = 2.0, e = -3.5 สำหรบั ตวั อย่างการดำเนินการทางคณิตศาสตรแ์ สดงในตาราง

ตวั ดำเนินการ ความหมาย ตวั อย่างการใชง้ าน ผลลพั ธ์

( ) จดั กลมุ่ (2 + 9) * 5 55

** ยกกำลงั 5 ** 2 25

* คูณ 10 * 3 30

/ หารจำนวนจรงิ 25 / 5 5.0

// หารปัดเศษทิ้ง 8 // 3 2

% หารเอาเศษ 28 % 24 4

+ บวก 5+7 12

- ลบ 10 – 2 8

2. ตวั ดำเนนิ การเปรียบเทียบ (Comparison Operation)
นิพจน์เปรยี บเทยี บ (relational expression) เปน็ นิพจน์ทใี่ ช้ตัวดำเนนิ การเปรยี บเทียบ (relational
operation) ในการเปรียบเทียบค่าของนิพจน์คณิตศาสตร์สองนิพจน์ ซึ่งในภาษาไพทอนจะได้ผลลัพธ์เป็น
คลาส bool ซ่งึ มคี ่าเปน็ True หรือ False เทา่ นน้ั
ตวั ดำเนินการทางเปรยี บเทียบท่ีใช้ในภาษาไพทอน โดยกำหนด x = 5 และ y = 7

ตวั ดำเนินการ ความหมาย ตวั อยา่ งการใช้งาน ผลลัพธ์

== เทา่ กนั x == y False

!= ไมเ่ ท่ากนั x != y True

>= มากกว่าหรอื เท่ากับ x >= y False

<= นอ้ ยกวา่ หรือเทา่ กบั x <= y True

> มากกวา่ x > y False

< น้อยกวา่ x < y True

3. ตัวดำเนินการตรรกะ

นิพจน์ตรรกะ (logical expression) เป็นนพิ จน์ท่ีใชต้ วั ดำเนนิ การตรรกะ (logical operation) ใน

การประมวลผลตัวถูกดำเนินการท่อี ย่ใู นคลาส bool

ตวั ดำเนินการตรรกะทีใ่ ชใ้ นภาษาไพทอน มดี งั น้ี

ตัวดำเนินการ ความหมาย ตัวอยา่ งการใช้งาน ผลลัพธ์

not นิเสธ not 5 > 6 True

and และ 3 < 4 and 5 < 6 False

or หรือ 3 < 4 or 5 < 6 True

ตัวดำเนินการ and และ or ต้องการตัวถูกดำเนินการสองตัว แต่ตัวดำเนินการ not ต้องการตัวถูก

ดำเนนิ การเพียงตวั เดยี ว โดยตัวดำเนนิ การตรรกะมีลำดับความสำคญั เรยี งจากลำดับความสำคญั สงู ไปยังลำดับ
ความสำคญั ตำ่ คอื not and or

10. การตัดสนิ ใจและการทำซำ้
เมอื่ กล<าวถงึ ปญ‘ หาไมว< า< จะเปqนปญ‘ หาเกย่ี วกับมนุษยห@ รอื คอมพิวเตอรก@ ต็ าม สงิ่ ที่หลีกเล่ียงไม<ได5ก็คือ

จะต5องพบเจอกบั เง่ือนไข (Conditions) และต5องทำการตัดสนิ ใจ (Decisions) อย<ูเสมอๆยกตัวอยา< งเช<น เมื่อ
ตอ5 งการเดนิ ทางไปที่แหง< หนึ่ง ระหวา< งการเดนิ ทางพบทางแยกซา5 ย (สมมติใหเ5 ปนq ตวั แปร A) และขวา (ตัวแปร
B) ผู5อ<านจะเลือกไปทางไหนดี? คำตอบนั้นจะขึ้นอยู<กับว<าเงื่อนไขทางใดดีกว<ากัน สมมติตั้งเงื่อนไขไว5ว<า

พจิ ารณาจากระยะทาง ดงั น้ันเงอื่ นไขท่ใี ช5ตดั สินใจ คอื เม่ือ เสน5 ทางซา5 ย (A) นอ5 ยวา< เสน5 ทางขวา (B) แล5ว เลือก
ไปทางซ5ายถ5าไม<เชน< นนั้ เลอื กไปทางขวาเม่อื ทำการแปลงคำพดู ทกี่ ลา< วมาน้ีเปqน Pseudo code ได5ดงั น้ี

IF A < B THEN
Go to left way
ELSE
Go to right way

สำหรับการควบคุมทิศทาง (Control flows) คือ คำสั่งหรือกฎเกณฑ@ที่ใช5สำหรับควบคุมทิศทางการ
ทำงานเพื่อให5บรรลุเป•าหมาย (ในตัวอย<างคือ สั่งให5ไปทางซ5ายหรือขวา) แต<การจะบรรลุเปา• หมายให5ไดน5 นั้
อาจจะทำไมส< ำเรจ็ ในครงั้ เดยี ว จำเปนq ต5องทำซำ้ หลายๆ ครั้ง (Loop)

สังเกตเห็นว<าเง่ือนไข การตัดสินใจ การควบคมุ ทิศทางและการทำซำ้ เปqนสิง่ ที่อยู<ใกลต5 ัวเราและพบ
เจอในชวี ิตประจำวันเสมอๆ ไมว< <าจะอย<ทู ่ใี ดก็ตาม การเขียนโปรแกรมกเ็ ชน< เดียวกนั พยายามทจ่ี ะจำลองปญ‘ หา
ตา< งๆ ในชีวิตประจำวนั มาประมวลผลกับคอมพิวเตอร@ เพราะคอมพิวเตอรส@ ามารถทำงานที่มีความซับซ5อนได5
เรว็ กว<ามนษุ ยม@ าก

ในภาษาไพทอนแบง< ลักษณะการควบคมุ การท างานของโปรแกรมออกเปนq 2 ประเภทหลกั ๆ คอื การ
ควบคุมทศิ ทางแบบเลือกทำและควบคุมทิศทางแบบวนรอบหรอื ทำซำ้

1. การควบคมุ ทศิ ทางแบบเลือกทำ (Decisions, Choice, Selection)
การควบคุมทิศทางแบบเลือกทำคือ การเขียนโปรแกรมให5มีการตัดสินใจ สามารถเลือกได5ว<าจะทำ
หรือไม<ทำตามคำสั่ง ขึ้นอยู<กับเงื่อนไขที่กำหนดขึ้นมา โดยคำสั่งสำหรับการควบคุมทิศทางแบบเลือกทำใน
ภาษาไพทอนมีเพียงคำส่งั เดยี วคอื if โดยแบ<งออกเปqน 3 ชนดิ คอื if, if...else และ nested if ดังต<อไปนี้

การควบคุมทิศทางแบบ if
คำสง่ั if ใช5ในกรณที ี่มีทางเลือกใหท5 ำงานอยเู< พยี งทางเลอื กเดยี ว โดยถา5 ตรวจสอบเงือ่ นไขแลว5 เปqนจริง
จงึ จะทำงานตามคำส่งั รปู แบบการเรยี กใช5คำสั่ง if แสดงได5ดงั น้ี

condition คอื เงอ่ื นไขทก่ี ำหนดข้นึ เพื่อใชต5 ดั สนิ ว<าจะทำหรือไมท< ำตามคำส่งั โดยเงื่อนไขจะเขียนไว5
ภายในเครือ่ งหมาย ( ) หรอื ไม<กไ็ ด5 ซง่ึ เง่ือนไขอาจจะอยใ<ู นรปู ของนิพจน@ การคำนวณเปรียบเทียบ หรือเปqนค<า
ของตัวแปรกไ็ ด5และตามดว5 ยเครอ่ื งหมาย :

statement(s) คือ คำส่ังหรือชุดของคำสั่งที่จะให5ทำงาน เมื่อผลการตรวจสอบเงื่อนไขเปqนจริง ใน
ภาษาไพทอนไมจ< ำเปqนตอ5 งเขยี นคำส่ัง (statement) ไว5ภายใน { } เหมอื นภาษาซหี รือจาวา แต<ไพทอนใช5การ
ยอ< หนา5 เพอ่ื แสดงขอบเขตของคำสงั่ หรือชุดคำส่ังแทน

คำสั่งแบบมีเงื่อนไข if เปqนคำสั่งแบบเลือกทำ โดยการเปรียบเทียบเงื่อนไขนิพจน@ทางตรรกศาสตร@
ผลลัพธ@ท่ไี ด5จะมคี า< จริงกบั เท็จเทา< น้นั ถา5 เง่อื นไขเปนq จรงิ แลว5 โปรแกรมจะเลอื กทำคำส่งั ท่อี ยห<ู ลังเครอ่ื งหมาย :

ทันที แต<ถ5าเปqนเท็จจะไม<มีการประมวลผลใดๆ เกิดขึ้น เมื่อเปรียบเทียบกับแผนผังจำลองการทำงานจะมี
ลักษณะดงั น้ี

ตวั อยJางท่ี 2 การตดั สนิ ใจแบบ 1 เงอื่ นไข
เช<น โปรแกรมตรวจสอบคะแนนสอบว<าผ<านเกณฑ@ 50 คะแนนหรอื ไม<

ขอ5 มูลนำเข5าคือ คะแนนสอบ
การประมวลผลคอื ตรวจสอบว<าคะแนนมากกว<าหรือเทา< กบั 50 หรือไม<
ข5อมลู ส<งออกคือ ผา< น หรือ ไมผ< า< น

บรรทัดที่ 1 รบั ค<าตวั เลขจำนวนเต็มเก็บไว5ท่ี score
บรรทัดที่ 2-3 ตรวจสอบเงือ่ นไข score >= 50

ถ5าจริงแสดงผลคำว<า You Pass
บรรทัดที่ 4-5 ถา5 เงื่อนไขข5างต5นไม<จรงิ

แสดงผลคำว<า You Fail
ตัวอยาJ งท่ี 3 การตัดสนิ ใจแบบมากกวา< 1 เงอื่ นไข
เช<น โปรแกรมตัดเกรด (เกรด 0, 1, 2, 3, 4)

ข5อมลู นำเข5าคือ คะแนนสอบ
การประมวลผลคือ ตรวจสอบวา< คะแนนในแตล< ะระดับอยู<ในเกรดใด
ขอ5 มูลส<งออกคือ เกรด 0, 1, 2, 3, 4

2. การควบคมุ ทิศทางแบบวนรอบหรอื ทำซำ้ (Loop, Iteration)
การแก5ปญ‘ หาต<างๆ ในชวี ิตประจำวนั มักจะพบเจอกับป‘ญหาทีต่ อ5 งใชค5 วามพยายามในการแก5ป‘ญหา
ดงั กล<าววนซำ้ หลายๆ ครั้ง เพ่อื ทีจ่ ะบรรลเุ ป•าหมาย เชน< ถา5 ต5องการสอบให5ได5คะแนนดจี ำเปqนตอ5 งอ<านหนังสือ
ในบทที่จะออกสอบหลายๆ รอบ ยิ่งอ<านมากยิ่งมีโอกาสที่จะได5คะแนนสอบมากตามไปด5วย หรือนักกีฬาท่ี
ตอ5 งการได5เหรยี ญทองในการแขง< ขนั จำเปนq ต5องฝก¥ ซำ้ แบบเดิมใหเ5 กิดความชำนาญ ยง่ิ ชำนาญมากกย็ ิ่งมโี อกาส
ประสบความสำเร็จมากตามไปด5วย เช<นเดียวกับการแก5ป‘ญหาทางคอมพิวเตอร@ บางป‘ญหานั้นจำเปqนต5อง
ประมวลผลซำ้ ไปซ้ำมาหลายๆ รอบ จนกว<าจะไดค5 ำตอบ เชน< การหาผลรวมของจำนวนเตม็ ต้ังแต< 1 – n, การ
หาค<า factorial, การหาค<า prime number และการคำนวณเลขลำดับอนุกรม เปqนต5น ป‘ญหาเหล<าน้ี
จำเปนq ต5องอาศยั เทคนคิ การทำซำ้ ทัง้ ส้ิน ภาษาไพทอนเตรียมคำส่ังในการทำซ้ำไว5 2 คำสั่งคือ while และ for
loop โดยใน 2 คำส่งั น้ี สามารถจำแนกเปqนวธิ ีการทำงานได5 3 รูปแบบ while loop, for loop และ nested
loop ซ่งึ มรี ายละเอยี ดดงั ต<อไปน้ี

คำส่ัง While loop
While เปqนคำสั่งวนซ้ำทีม่ ีการตรวจสอบเงื่อนไข (condition) ก<อนเข5าทำงานเสมอ เมื่อเงื่อนไขทท่ี ำ
การตรวจสอบเปqนจรงิ จึงจะประมวลผลคำสง่ั หลงั while แตถ< 5าเงอ่ื นไขเปนq เทจ็ จะยุตกิ ารทำงานทันทีสำหรับ
งานที่นิยมใช5 while ในการแก5ป‘ญหาคือ ป‘ญหาที่ไม<ทราบจำนวนรอบการทำงานที่แน<นอนหรือป‘ญหาที่ไม<
สามารถทราบได5ร<วงหน5าว<าจะต5องใช5เวลาในการประมวลผลนานเท<าใด ส<วนใหญ<มักจะหยดุ การทำงานของ
while ด5วยเงื่อนไขบางประการ เช<น กดแป•นพิมพ@ที่บ<งบอกว<าต5องการออกจากโปรแกรมเชน< ESC, q, -1, 0
เปqนต5น หรือตรวจสอบคา< ในตวั แปรตวั ใดตวั หนงึ่ ในโปรแกรมเปqนเท็จ เปqนต5น
โครงสรา5 งการทำงาน while loop มีรปู แบบคำสั่งดงั นี้

ตวั อยาJ งท่ี 4

# While loop testing
count = 0
while (count < 9):

print ('The count is:', count)
count = count + 1
print ("Good bye!")

การวนซ้ำแบบไมJรูจK บ (The Infinite Loop)
บ<อยครั้งท่ีพบป‘ญหาในการใช5งาน while คือ เงื่อนไขทีต่ รวจสอบไม<เปqนเท็จ ซึ่งสาเหตุมาจากหลาย
กรณี แตส< ว< นใหญม< าจากการหลงลมื ทำให5ตัวแปรที่ใช5ตรวจสอบเงื่อนไขเปนq เทจ็ เชน< ในโปรแกรมก<อนหน5าน้ี
ถ5านักเขียนโปรแกรมลมื เพ่ิมค<าให5กับตัวแปร count จะทำใหโ5 ปรแกรมเข5าสู<สถานะที่เรียกวา< Infinite loop
คอื โปรแกรมทำงานไปเรอ่ื ยๆ ไมส< ามารถหยุดได5 แตก< ็มีโปรแกรมบางประเภททต่ี อ5 งการการท างานในลกั ษณะ
Infinite loop อยเู< หมือนกนั เช<น โปรแกรมประเภท Client-Server ทฝี่ ‘ง© ผู5ใหบ5 รกิ าร (Server) จะรอใหบ5 ริการ
ตลอดเวลาไมม< วี ันหยุดพกั หรอื ปดª โปรแกรมเลย สำหรับคำสง่ั ตวั อยา< งทใี่ ช5ในกรณีที่ต5องการให5โปรแกรมทำงาน
ในลกั ษณะ infinite loop ดังโปรแกรมตอ< ไปน้ี

# Infinite loop program
# When would you like to exit this program, push CTRL + C
var = 1
while var == 1 : # This constructs an infinite loop

num = int(input("Enter a number :"))
print("You entered: ", num)
print("Good bye!")

โจทย@ตัวอยา< ง
จงเขียนโปรแกรมคำนวณหาค<าเฉลี่ย n จำนวน โดยโปรแกรมจะวนรับค<าข5อมูลจากแป•นพิมพ@ไป
เรื่อยๆ พร5อมคำนวณหาค<าเฉล่ียไปพรอ5 มๆ กันกับการรับขอ5 มูล จนกว<าผู5ใช5จะพิมพ@ 0 หรือ 0.0โปรแกรมจงึ
หยดุ ทำงาน ตวั อยา< งอนิ พตุ /เอาต@พุต: Enter a number : 10.5

Average of number is : 10.5
Enter a number : 5
Average of number is : 7.75
Enter a number : 0
Good bye

เขียนโปรแกรมได5ดังน้ี

# Calcuting the average for N numbers
Count = 1
Sum = 0.0
print("To exit this program, please type 0 or 0.0 :")
Num = float(input("Enter a number :"))
while Num != 0 or Num != 0.0:

Sum += Num
Avg = Sum / Count
Count += 1
print ("Average of number is : ", Avg)
Num = float(input("Enter a number :"))
print("Good bye!")

คำส่งั for loop
คำส่ัง for เปนq คำส่ังที่ใชส5 ำหรบั การทำซ้ำเชน< เดียวกบั while และต5องมกี ารตรวจสอบเงอ่ื นไขก<อนเขา5
ลูปเหมือนกัน แต<แตกต<างกันตรงที่ for จะตรวจสอบรายการแบบลำดับแทน (Item of sequence) เช<น
ข5อมูลชนดิ สตริง ลิสต@ หรอื ทัพเพิล เปqนตน5 โครงสร5างการทำงาน for loop มีรูปแบบคำสั่งดงั นี้

โดย interating_var คือตัวแปรท่ีใชส5 ำหรับรบั ค<าทลี ะคา< เพื่อนำมาประมวลผล จากข5อมลู ที่อยู<ในตวั
แปร sequence เมื่อข5อมูลในตัวแปร sequence เปqนชนิดลิสต@ คำสั่ง for จะดึงข5อมูลในตำแหน<งแรกของ
ลสิ ตอ@ อกมาเก็บไว5ใน iterating_var หลงั จากน้นั จะเริ่มทำคำสงั่ ใน statement(s) เม่ือคำส่งั ในstatement(s)

หมดแล5ว การควบคุมจะกลับไปเริ่มต5นใหม<ที่ for แล5วดึงข5อมูลในลิสต@ลำดับถัดไปมาทำงาน การทำงานจะ
เปนq ไปในลกั ษณะเชน< นี้ไปเรอ่ื ยๆ จนกวา< ขอ5 มลู ในลสิ ตจ@ ะหมด for จงึ จะยุตกิ ารทำงาน

ถา5 ตอ5 งการให5โปรแกรมทำงานซ้ำตามจำนวนรอบท่ตี อ5 งการโดยใช5คำสง่ั for สามารถเขยี นโปรแกรมได5
ดังนี้

ตัวอยาJ งที่ 5 การเขียนโปรแกรมให5แสดงตัวเลขตั้งแต< 1 ถึง 4

ตัวอยJางที่ 6 โปรแกรมสตู รคณู

คำส่งั Break
คำส่ัง break เปqนคำสัง่ ท่ใี ชร5 <วมกบั คำสัง่ วนซ้ำ เมอ่ื มกี ารประมวลผลคำส่ัง break จะมผี ลให5โปรแกรม
ออกจากการวนซ้ำทนั ที และไปประมวลผลคำสัง่ ในลำดบั ถัดจากคำส่ังวนซ้ำ ดงั นัน้ คำสัง่ break จึงมักจะถูก
กำกบั ด5วยเงือ่ นไขเพอ่ื ยุติการวนซ้ำ
ตัวอยJางที่ 7 โปรแกรมทายตัวเลข โดยใชค5 ำสงั่ break

ผลลัพธท@ ี่ได5 คือ

ในบรรทัดท่ี 3 นิพจน@ตรรกะที่ใช5ในคำสั่ง while มีค<าเปqน True จึงทำให5คำสั่งวนซ้ำนี้ทำงานไม<มีที่
สนิ้ สุด อย<างไรกต็ ามในบรรทดั ท่ี 5 มเี งอื่ นไขทีใ่ ช5ตรวจสอบค<าท่ผี ใ5ู ช5คาดเดากบั ค<าเป•าหมาย ในกรณีท่ีตรงกัน
นั่นคือ num == target มีค<า True จะมีการประมวลผลคำสั่ง break ซึ่งส<งผลให5คำสั่งวนซ้ำยุติการทำงาน
และไปประมวลผลคำสั่งในบรรทัดที่ 9 กอ< นจบการทำงานของโปรแกรม

นอกจากนี้ในการประเมินค<านิพจน@ตรรกะของคำสั่ง while ในครั้งแรก พบว<ามีค<า True จึงเข5าไป
ประมวลผลในบล็อก while เสมอ แล5วจึงมีการรบั ค<าท่ีผ5ูใช5คาดเดาในบรรทดั 4 ก<อนนำไปเปรียบเทียบว<าใน
บรรทดั 5 ตรงกับคา< เป•าหมายหรือไม<นนั่ เอง

คำส่ัง Continue
คำสั่ง continue เปqนคำสั่งที่ใช5ร<วมกับคำสั่งวนซ้ำเช<นเดียวกับคำสั่ง break เมื่อมีการประมวลผล
คำสง่ั continue ไพทอนจะไปประมวลผลนพิ จน@ตรรกะของคำสงั่ while เพ่ือเรม่ิ ตน5 ทำงานในบลอ็ ก while ใน
รอบถัดไป ในทำนองเดยี วกนั คำสง่ั continue มักจะถูกกำกบั ดว5 ยเงอ่ื นไข ดังน้ี
ตัวอยาJ งท่ี 8 การใชค5 ำสง่ั continue เพอ่ื ขา5 มการพิมพเ@ ลขค<ู

ผลลัพธท@ ไ่ี ดค5 ือ

บล็อก while ตัง้ แต<บรรทดั ที่ 3-7 ทำงานทั้งหมด num รอบ เริม่ จากรอบแรกเมื่อ count มคี <าเปนq 0
ในแต<ละรอบ count มีค<าเพิ่มขึ้นจากเดิมอีก 1 และรอบสุดท5ายเมื่อ count มีค<า num-1 เนื่องจากในรอบ
ถัดไปที่ count มีค<าเปqน num จะทำให5นิพจน@ตรรกะ count < num เปqน False และสิ้นสุดการทำงานของ
คำสง่ั while

ในบรรทัดที่ 7 พบว<าการเรียกใช5ฟ‘งก@ชัน print() ซึ่งอยู<ในลำดบั สุดท5ายของบล็อกจะถูกประมวลผล
โดยไม<มีเงื่อนไข อย<างไรก็ตามฟ‘งก@ชัน print() ไม<ได5ถูกเรียกใช5ทุกรอบ ทั้งนี้เนื่องจากเมื่อนิพจน@ตรรกะ
count%2 == 0 ในบรรทัดที่ 5 เปqน True (นัน่ คอื เม่ือ count หารดว5 ย 2 ลงตวั ) แลว5 คำส่งั continue จะถกู

ประมวลผล ซงึ่ สง< ผลให5การทำงานวนกลับไปสก<ู ารประเมนิ ค<านพิ จน@ตรรกะของคำสง่ั while ในรอบถดั ไปโดย
ขา5 มการประมวลผลบรรทดั ท่ี 7 ไป

11. ฟvงกชF นั
ฟงv กชF ันคืออะไร
ฟง‘ กช@ นั คือ โปรแกรมย<อยหรอื งานยอ< ยๆ (Sub-program) ภายในโปรแกรมขนาดใหญ< หรือบางครั้ง

เรยี กวา< เมทอ็ ด (Method) หรอื รูทนี (Routine) ก็ได5 โดยปกตโิ ปรแกรมที่มีขนาดใหญ< จะประกอบด5วยคำส่ัง
ต<างๆ มากมายและในโปรแกรมขนาดใหญน< ัน้ จะมีคำส่ังที่ทำงานเหมอื นกัน ซ้ำกันหรือถูกเรียกใช5งานอย<เู ปนq
ประจำปรากฏอยู< ดังนัน้ เพือ่ ลดคำสั่งให5โปรแกรมสัน้ และกระชับลง จึงได5รวบรวมคำสัง่ ที่ทำหน5าที่เหมอื นกัน
เหล<านัน้ เขา5 ไว5ดว5 ยกันเปqนโปรแกรมย<อย เมื่อต5องการเรียกใช5โปรแกรมยอ< ยเหล<านัน้ ตรงจุดใดๆ ในโปรแกรม
สามารถเรียกใช5โดยผ<านทางชื่อของฟ‘งก@ชันได5ทันที(Function call) กรณีการเขียนโปรแกรมเชิงโครงสร5าง
(Structural programming) นิยมเรียกว<า“ฟ‘งก@ชัน” แต<ในการเขียนโปรแกรมเชิงวัตถุ (Object oriented
programming) เรียกวา< “เมธอด” ประเภทของฟง‘ กช@ ันแบ<งออกเปนq 2 ชนิดคอื ฟ‘งกช@ นั มาตรฐาน (Standard
functions) ที่มีอยู<ในไลบรารีของภาษาไพทอน และฟ‘งก@ชันที่ผ5ูเขียนโปรแกรมสร5างขึ้นเอง (User defined
functions) ฟง‘ ก@ชนั ทม่ี ีอยแ<ู ล5วในภาษาไพทอนเมื่อเรยี กใช5งานจะต5องทำการ import แฟ•มเข5ามาก<อนเสมอ ใน
บทนจ้ี ะกลา< วถงึ การสรา5 งฟง‘ ก@ชนั ทผ่ี 5ูเขยี นโปรแกรมสร5างข้ึนใช5งานเอง

Note: ฟ‘งก@ชัน Vs เมธอด แม5ว<าฟ‘งก@ชันและเมธอดจะมีลักษณะการท างานที่คล5ายกัน แต<ในการ
ทำงานจริงนั้นจะมีความแตกต<างกันอยู<พอสมควร เนื่องจากแนวคิดโปรแกรมเชิงวัตถุมองว<า เมธอดคือ
พฤติกรรมต<างๆ ของวัตถุ (Object) ท่แี สดงออก ซงึ่ พฤตกิ รรมอาจจะไม<ใชง< านประจำเหมือนทฟี่ ‘งกช@ ันทำก็ได5

ประโยชนFของฟvงกชF นั
1. ชว< ยลดคำสั่งทซ่ี ้ำซ5อนกันในโปรแกรม
2. ช<วยใหผ5 5พู ัฒนาโปรแกรมสามารถปรับปรุงและแกไ5 ขโปรแกรมได5อย<างรวดเร็ว เน่อื งจากฟง‘ ก@ชันแต<
ละฟ‘งก@ชันนั้นมีหน5าที่ที่ชัดเจนในตัวเอง เช<น read_input คือฟ‘งก@ชันสำหรับอ<านค<าอนิ พุตเข5ามาทำงานใน
โปรแกรม หรอื print ทำหน5าที่พิมพ@ขอ5 ความ
3. ชว< ยทำให5โปรแกรมมีความกะทดั รัด ทำให5เข5าใจงา< ยและรวดเร็ว เพราะโปรแกรมถูกแบ<งออกตาม
หนา5 ทข่ี องงานชดั เจน
4. ฟง‘ กช@ ันสามารถนำกลบั มาใช5ไดอ5 ีกหลายคร้งั (reusable code)
5. ป•องกันขอ5 ผิดพลาดได5ดีเพราะงานจะถูกแบ<งตามหนา5 ที่ชัดเจน การเขียนโปรแกรมจะไมก< 5าวกา< ย
งานในฟ‘งกช@ นั อ่ืนๆ ทีไ่ มเ< กย่ี วขอ5 ง
6. ช<วยให5หาข5อผิดพลาดของโปรแกรมได5รวดเร็วและเปqนระบบ กรณีถ5าโปรแกรมเกิดข5อผิดพลาด
เกิดขนึ้ ในขณะทำงาน การทดสอบจะทดสอบตามฟ‘งกช@ ัน

7. ฟง‘ ก@ชนั มีการทำงานเปqนอิสระ สามารถนำฟ‘งก@ชันท่ีถูกสร5างไว5และมปี ระสิทธิภาพเก็บไว5เปqนโมดูล
คลาส หรือไลบรารี เพ่อื นำไปใช5งานตอ< ได5ในอนาคตได

การประกาศฟvงกFชัน
ผูเ5 ขยี นโปรแกรมสามารถสร5างฟ‘งก@ชันขนึ้ มาใชไ5 ดเ5 อง โดยมกี ฎการสร5างดงั น้ี
1. การประกาศฟ‘งกช@ นั ใช5คำวา< def นำหนา5 ตามด5วยชอื่ ฟง‘ กช@ ันและเครอื่ งหมาย (): ปดª ทา5 ย เชน< def
myfunc(): ช่ือของฟ‘งก@ชนั จะตอ5 งไม<ซ้ำกบั คำสงวน ควรสอื่ ความหมายให5ตรงกบั หน5าท่ีของฟง‘ กช@ ัน
2. กรณีท่ฟี ง‘ ก@ชันมพี ารามเิ ตอร@ (Parameters) ในฟง‘ ก@ชัน ให5ใส<พารามิเตอรเ@ หลา< น้ันไว5ในเคร่ืองหมาย
() เชน< def myfunc(para1, para2): พารามิเตอร@สามารถมไี ด5มากกว<า 1 ตวั แปรได5
3. ไพทอนอนญุ าตใหค5 ำสั่งแรกในฟง‘ กช@ ัน เปqนคำอธบิ ายโปรแกรมได5 (Documentation string) โดย
ทไ่ี พทอนจะไมแ< ปลความหมาย เชน<

def myfunc(para1, para2):
"This statement is the documentation string"
Statement(s)

4. คำสั่งในฟ‘งก@ชนั จะเร่มิ ตน5 หลังเครอ่ื งหมาย :
5. ฟ‘งก@ชันจะใช5คำสั่ง return ในการส<งค<าหรืออŽอปเจ็กต@ใดๆ กลับไปยังผูท5 ีเ่ รียก ในกรณีท่ีไม<มกี าร
ส<งคืนค<าใดๆ กลบั ไพทอนถอื วา< เปนq การสง< กลับดว5 ยค<า Noneรูปแบบการประกาศฟ‘งกช@ ันดงั น้ี

ตวั อยาJ งที่ 9 การประกาศฟ‘งกช@ ัน

# Defining user function
def printme( str ):

"This prints a passed string into this function"
print (str)
Return

การเรียกใชKฟงv กชF นั
คำสั่งในฟ‘งก@ชันจะทำงานก็ต<อเมื่อมีการเรียกใช5ฟ‘งก@ชันนั้นจากส<วนอื่นของโปรแกรม การเรียกใช5
ฟง‘ ก@ชันทำไดโ5 ดยการอ5างช่ือฟง‘ ก@ชนั ในลักษณะเดียวกับการเรยี กใช5คำส่ังหรอื ฟง‘ กช@ นั ท่ีมีอย<ูแลว5 เมอ่ื ฟ‘งก@ชันถูก
เรยี กใชจ5 ะมผี ลให5บลอ็ กของฟง‘ กช@ ันทำงาน 1 คร้งั

ตวั อยาJ งที่ 10 การเรยี กใช5ฟง‘ กช@ นั

บรรทดั ที่ 1-4 ประกาศฟง‘ กช@ ัน show_info()
บรรทัดท่ี 6-10 ประกาศฟ‘งกช@ นั triangle_area()
บรรทดั ท่ี 12 แสดงข5อความ First Function
บรรทัดที่ 13 เรยี กใช5ฟ‘งกช@ ัน show_info()
บรรทัดที่ 14 แสดงข5อความ Second Fucntion
บรรทดั ท่ี 15 เรียกใชฟ5 ง‘ ก@ชัน triangle_area()
พารามเิ ตอรขF องฟvงกFชัน
จากที่ได5เรียนมาแล5วนั้นจะพบว<าภาษาไพทอนสามารถสื่อสารกับผู5ใช5ผ<านคำสั่ง input() โดยผู5ใช5
สามารถนำข5อมูลเข5าไปประมวลผลในโปรแกรมเพื่อได5ผลลัพธ@ที่ต5องการ ในการรันโปรแกรมแต<ละครั้งเม่ือ
ขอ5 มลู เข5าเปลย่ี นค<าไปกจ็ ะทำใหผ5 ลลพั ธม@ คี า< เปล่ยี นแปลงไปในลักษณะทีส่ อดคลอ5 งกนั
ในทำนองเดียวกัน เนื่องจากฟ‘งก@ชันเปqนโปรแกรมย<อยที่ทำงานอยู<ภายในโปรแกรมหลัก จึงมีการ
ออกแบบให5สามารถสื่อสารกับโปรแกรมหลักโดยการรับข5อมูลเข5าจากโปรแกรมหลักส<งไปยังพารามิเตอร@
(parameter) ของฟ‘งกช@ นั โดยมีรูปแบบดงั น้ี
def ชื่อฟ‘งกช@ นั (พารามเิ ตอร@ 1, พารามิเตอร@ 2, ... ):

กล<ุมของคำสัง่ ท่ีจะให5ทำงานในฟ‘งกช@ นั น้ี

ฟ‘งกช@ นั แตล< ะฟง‘ กช@ นั อาจมจี ำนวนพารามเิ ตอร@แตกต<างกัน การเรียกใชฟ5 ง‘ ก@ชนั ทมี่ พี ารามเิ ตอร@จะต5อง
มีการส<งค<าอาร@กิวเมนต@ (argument) เพื่อไปเปqนค<าพารามิเตอร@ของฟ‘งก@ชัน ฟ‘งก@ชันของไพทอนอาจเปqน
ฟง‘ ก@ชนั ทีไ่ ม<มพี ารามิเตอรก@ ไ็ ด5 (ดังเชน< ในหัวข5อกอ< นหน5าน)้ี

ตัวอยาJ งท่ี 11 ฟ‘งกช@ ันทมี่ ีพารามเิ ตอร@

บรรทดั ที่ 1 สร5างฟง‘ กช@ นั ชือ่ print_name()
ฟง‘ กช@ ัน print_name() มีพารามเิ ตอร@ 2 ค<า คอื name และ surname

บรรทัดที่ 2 แสดงผลคำวา< “My name is + คา< ในพารามิเตอร@ name ท่ีส<งมา”
บรรทัดที่ 3 แสดงผลคำว<า “My name is + ค<าในพารามเิ ตอร@ surname ทีส่ <งมา”
ตวั อยJางท่ี 12 การรบั ค<าทางคียบ@ อรด@ และสง< คา< ไปยงั ฟ‘งกช@ ันดว5 ยพารามิเตอร@

บรรทัดที่ 1-3 สร5างฟ‘งก@ชัน print_name มีพารามิเตอร@ name และ surname ในการรับค<าจาก
โปรแกรมหลกั

บรรทัดท่ี 5-6 ส<วนของโปรแกรมหลักท่ีมกี ารรบั ค<าอกั ขระทางคยี บ@ อร@ดเก็บไวใ5 นตวั แปร
บรรทัดท่ี 7 สง< คา< จากตัวแปร firstname และ lastname ไปยังฟง‘ กช@ ัน print_name()
การคืนคาJ จากฟvงกFชนั
การคืนค<าจากฟง‘ ก@ชัน เปqนการสง< ค<าจากฟ‘งก@ชันกลับมายังฟ‘งก@ชันหลัก ซึ่งทำใหส5 ามารถนำค<าหรอื
ผลลพั ธจ@ ากการทำงานของฟง‘ กช@ ันไปใช5ประโยชนใ@ นภายหลังได5
รูปแบบคำส่งั ในการคืนค<าจากฟ‘งก@ชนั

return นิพจน@/ตวั แปร

ยกตัวอย<างการคืนค<าจากฟ‘งก@ชัน เช<น การใช5ฟ‘งก@ชันทางคณิตศาสตร@จากไลบรารี math ฟ‘งก@ชัน
sqrt() จะพบว<าในการใช5ฟ‘งก@ชันนี้ ผู5เขียนโปรแกรมจะต5องระบุค<าอารก@ ิวเมนต@ที่จะส<งไปยังฟ‘งก@ชัน จากนน้ั
ฟ‘งกช@ ันจะทำงานตามท่ีเขียนโปรแกรมไว5และส<งคา< ผลลัพธ@กลบั มา ดงั ตัวอย<างต<อไปนี้

x = math.sqrt(9)

ตวั อยาJ งที่ 13 การคนื การค<าจากฟง‘ ก@ชัน

บรรทดั ท่ี 1 สรา5 งฟง‘ กช@ ันชือ่ print_name มีพารามิเตอร@ 2 ตวั คือ name และ surname
บรรทัดที่ 2 นำค<าจากตัวแปร name และ surname มาเช่ือมตอ< กัน เก็บไว5ที่ตวั แปร fullname
บรรทัดท่ี 3 สง< ค<าตวั แปร fullname คนื ไปยงั ฟ‘งก@ชนั หลกั
บรรทัดท่ี 5-6 รับขอ5 ความเกบ็ ไวใ5 นตวั แปร firstname และ lastname
บรรทดั ที่ 7 เรียกใชฟ5 ง‘ ก@ชัน print_name และมีตวั แปร name รบั ค<าคนื จากฟ‘งก@ชนั
บรรทดั ที่ 8 แสดงผลตัวแปร name ออกทางหนา5 จอ

12. Python Turtle
Python Turtle คืออะไร
Python Turtle เปนq การแสดงกราฟกª อยา< งง<ายในรปู แบบของสัตว@ (เต<า) เพือ่ ชว< ยใหน5 ักเรียนสนุกกบั

การเขยี นคำสงั่ ควบคมุ เตา< ใหเ5 คลอ่ื นทหี่ รือแสดงผลตามท่ีตอ5 งการโดยใชค5 ำสงั่ ควบคมุ ต<างๆ ในภาษาไพทอน
โดยสามารถเขยี นคำสง่ั อย<างง<ายไดด5 งั น้ี

import turtle
wn = turtle.Screen()
tommy = turtle.Turtle()
tommy.shape("turtle")

การสั่งใหเK คล่ือนทีเ่ ป}นรูปสเ่ี หล่ียม

tommy.forward(50)
tommy.right(90)
tommy.forward(50)
tommy.right(90)
tommy.forward(50)
tommy.right(90)
tommy.forward(50)

การเคลือ่ นท่เี ปน} รปู สามเหลี่ยม

s = turtle.Turtle()
s.shape("arrow")
s.right(180)
s.forward(80)
s.right(120)
s.forward(80)
s.right(120)
s.forward(80)
s.right(120)
s.forward(39)

การแสดงสี

tommy = turtle.Turtle()
tommy.shape("turtle")
tommy.color("purple")
for i in [0,1,2,3]:

tommy.left(90)
tommy.forward(50)


Click to View FlipBook Version