Python – recursive function

การใช้งานฟังก์ชันแบบ recursive ในการใช้งานฟังก์ชันนั้น นอกจากเราจะระบุชุดคำสั่งเพื่อดำเนินการแล้ว เรายังสามารถจะเรียกใช้งานฟังก์ชันอื่นจากในฟังก์ชันได้ และสามารถเรียกใช้ตัวฟังก์ชันตัวเองซ้อนกันได้อีกด้วย ซึ่งการเขียนฟังก์ชันที่มีการเรียกใช้ฟังก์ชันตัวเองนั้นเราจะเรียกการใช้งานแบบนี้ว่า ฟังก์ชัน recursive ตัวอย่างการใช้งาน # สร้างฟังก์ชันสำหรับการคำนวณแฟคทอเรียล(n!) def factorial(n): # ตรวจสอบข้อมูลตัวเลข หากเป็นจำนวนลบ ให้แจ้งข้อผิดพลาด if n < 0: raise ValueError("กรุณาระบุข้อมูลเป็นตัวเลขจำนวนเต็มบวก สำหรับการคำนวณแฟคทอเรียล") # ตรวจสอบข้อมูลตัวเลข หากเป็น 0 ผลลัพท์ของแฟคทอเรียลคือ 1 elif n==0 : return 1 # ตรวจสอบข้อมูลตัวเลข หากเป็นจำนวนเต็มมีค่าตั้งแต่ 1 ขึ้นไป ให้เรียกฟังก์ชันตัวเองซ้อนลงไปเรื่อยๆ เพื่อคำนวณหาแฟคทอเรียล n x (n-1)! elif n > 0: return n*factorial(n-1) n = 6 Read more about Python – recursive function[…]

Python – Function argument

Python – Function argument ในการสร้างฟังก์ชันขึ้นมาใช้งานเอง(user-defined function) บางกรณีฟังก์ชันที่เราสร้างอาจต้องการข้อมูลประกอบเพื่อใช้ในการประมวลผลเพื่อให้ได้ผลลัพท์ตามต้องการ จึงต้องมีการส่งข้อมูลซึ่งอาจเป็นข้อมูลเดียวหรือหลายข้อมูลเข้าไปในฟังก์ชัน เพื่อให้สามารถประมวลผลตามแต่จุดประสงค์การใช้งานของฟังก์ชันนั้นนั้นๆ 1. การสร้างฟังก์ชันแบบจำเป็นต้องระบุข้อมูลให้ครบตามจำนวนข้อมูลที่ฟังก์ชันต้องการและเรียงลำดับตามที่ประกาศเสมอ การสร้างฟังก์ชันในรูปแบบนี้ เราจำเป็นต้องทำการส่งข้อมูลเข้าไปให้ฟังก์ชันแบบเรียงลำดับตามที่กำหนดไว้ตอนประกาศฟังก์ชัน และจำนวนของข้อมูลนั้นต้องเท่ากันกับจำนวนข้อมูลที่ฟังก์ชันต้องการเสมอ หากทำการป้อนข้อมูลเข้าไปไม่ครบหรือเรียงลำดับของข้อมูลที่ส่งเข้าไปผิดลำดับ ก็อาจทำให้โปรแกรมประมวลผลข้อมูลผิดพลาดได้ ตัวอย่างการใช้งาน import math # ฟังก์ชันคำนวณพื้นที่ของสี่เหลี่ยมจัตุรัสโดยรับข้อมูล: ความยาวของด้าน(d) def calculate_square_area(d): square_area = d * d return square_area # ฟังก์ชันคำนวณพื้นที่ของสามเหลี่ยมโดยรับข้อมูล: ความยาวฐาน(b) และความสูง(h) def calculate_triangle_area(b, h): triangle_area = (1.0/2.0) * b * h return triangle_area # ฟังก์ชันคำนวณพื้นที่ของวงกลมโดยรับข้อมูล: รัศมีของวงกลม(r) def calculate_circle_area(d): circle_area = math.pi Read more about Python – Function argument[…]

Python – Function

Python – function ฟังก์ชันคือการจัดกลุ่มของชุดคำสั่งที่ต้องใช้ในการทำงานร่วมกัน เพื่อให้โปรแกรมมีผลลัพท์ตามเป้าหมายที่กำหนดไว้ การสร้างเป็นฟังก์ชันนั้นจะช่วยในการจัดกลุ่มของชุดคำสั่งที่เราเขียนให้แยกเป็นกลุ่มๆ ตามเป้าหมายของการทำงาน ทำให้สะดวกในการเรียกใช้และยังช่วยให้สามารถแก้ไขหรือค้นหาได้สะดวกขึ้น เพราะเมื่อเราทำการเขียนโปรแกรมที่ซับซ้อนขึ้น จำนวนบรรทัดของคำสั่งก็มากขึ้นตาม ทำให้หากไม่ทำการจัดกลุ่มคำสั่งเป็นชุดๆ จะทำให้ลำบากในการทำการแก้ไขหรือเรียกใช้ในภายหลัง การสร้างฟังก์ชันนั้นนอกจากจะช่วยแบ่งคำสั่งเป็นกลุ่มย่อยๆ แล้วยังทำให้เราสามารถเรียกใช้ชุดคำสั่งนั้นซ้ำๆ ได้โดยไม่ต้องเขียนคำสั่งชุดเดิมใหม่อีกด้วย โครงสร้างฟังก์ชัน # ฟังก์ชันที่ไม่มีการส่งข้อมูลเข้าไป และไม่ทำการคืนค่าข้อมูล def <ชื่อฟังก์ชัน<(): <คำสั่งของฟังก์ชัน1> <คำสั่งของฟังก์ชัน2> … # ฟังก์ชันที่มีการส่งข้อมูลเข้าไป แต่ไม่ทำการคืนค่าข้อมูล def <ชื่อฟังก์ชัน<(<ตัวแปร1>, <ตัวแปร2>, …): <คำสั่งของฟังก์ชัน1> <คำสั่งของฟังก์ชัน2> … # ฟังก์ชันที่มีการส่งข้อมูลเข้าไป และมีการคืนค่าข้อมูล def <ชื่อฟังก์ชัน<(<ตัวแปร1>, <ตัวแปร2>, …): <คำสั่งของฟังก์ชัน1> <คำสั่งของฟังก์ชัน2> … return <ผลลัพท์ที่ต้องการส่งกลับไปให้ส่วนที่เรียกใช้ฟังก์ชัน> ตัวอย่างการใช้งานฟังก์ชัน import datetime # ฟังก์ชันสำหรับทำการปรินท์ค่าข้อมูลวันที่ของวันนี้ ซึ่งเป็นฟังก์ชันที่ไม่มีการส่งข้อมูลเข้าไป และไม่มีการคืนค่า def print_current_date(): Read more about Python – Function[…]

Python – Pass

Python – Pass คีย์เวิร์ด pass นั้นคือคำสั่งหนึ่งที่ระบุว่าไม่มีการดำเนินการใดๆ ในบรรทัดนั้น มักจะใช้ในกรณีที่มีการวางโครงสร้างโปรแกรมเอาไว้ แต่ยังไม่ได้ลงรายละเอียดในการระบุคำสั่ง การใช้คีย์เวิร์ด pass นี้ จะต่างกับการใช้คอมเมนท์ตรงที่ หากเป็นการเขียนคอมเมนท์(comment) ตัวแปลภาษาจะไม่ทำการแปลผลโค้ดในส่วนดังกล่าวให้เป็นภาษาที่คอมพิวเตอร์เข้าใจและใช้ดำเนินการ แต่สำหรับการใช้คีย์เวิร์ด pass นั้น ตัวแปลภาษาจะประมวลผลโค้ดส่วนดังกล่าวเป็นภาษาที่คอมพิวเตอร์เข้าใจ ซึ่งตัวคำสั่ง pass เองนั้นทำการระบุว่า ยังไม่ต้องการให้มีการกระทำการใดๆ ตรงบรรทัดนี้ โครงสร้างของ pass # เรียกใช้คีย์เวิร์ด pass pass การใช้งานคีย์เวิร์ด pass สำหรับคลาส สามารถใช้คีย์เวิร์ด pass สำหรับคลาสในส่วนของบล๊อกคำสั่งของคลาส โดยใช้คีย์เวิร์ด pass เพื่อเป็นการบอกว่ายังไม่มีการกำหนดตัวแปร หรือฟังก์ชันใดๆ สำหรับคลาสดังกล่าว ตัวอย่างการใช้งาน class room(): # กำหนดคลาสสำหรับเก็บข้อมูลห้องเรียน แต่ยังไม่มีการระบุรายละเอียดของคำสั่งสามารถเรียกใช้จากคลาสนี้ได้ pass # สร้างออบเจคของคลาส เพื่อจะสามารถเข้าถึงการใช้งานของตัวแปรและฟังก์ชัน r = room() การใช้งานคีย์เวิร์ด Read more about Python – Pass[…]

Python – break และ continue

break และ continue การใช้ break และ continue จะใช้เมื่อต้องการที่จะเพิ่มข้อยกเว้นจากเงื่อนไขการทำงานของลูป เพราะในบางกรณีเราอาจต้องการที่จะข้ามการทำงานบางรอบของลูป หรือต้องการที่จะยุติการทำงานของลูปก่อนจะครบตามเงื่อนไขเดิมที่กำหนดไว้ด้วยข้อยกเว้นบางอย่าง การใช้ break จะยุติการทำงานทั้งหมดของลูปที่บรรจุคำสั่ง break เอาไว้ แต่ในกรณีการใช้ break กับลูปที่ซ้อนกันหลายชั้น(nested-loop) โปรแกรมจะทำการยุติการทำงานเฉพาะแค่ลูปในสุดที่บรรจุคำสั่งนั้นอยู่เท่านั้น โดยที่ลูปชั้นนอกยังคงดำเนินการต่อไป โครงสร้างของ break # โครงสร้างการใช้ break กับ for loop for <data> in <sequence_of_data>: if <test_condition>: break # โครงสร้างการใช้ break กับ while loop while <test_condition1>: if <test_condition2>: break ตัวอย่างการใช้งาน # คะแนนของนักเรียนทั้งหมด student_scores = [90, 40, 71, 52, Read more about Python – break และ continue[…]

Python – while loop

while loop การใช้ while loop นั้นจะดำเนินการเพื่อทำชุดคำสั่งใดๆ ซ้ำกันไปเรื่อยๆ หากเงื่อนไขที่กำหนดเมื่อตรวจสอบแล้วยังเป็นจริง(True)อยู่ เรามักจะใช้ while loop ในการทำชุดคำสั่งใดๆ ซ้ำในกรณีที่เราไม่รู้จำนวนรอบที่แน่นอนล่วงหน้าก่อนการสั่งดำเนินการ โครงสร้างของลูป while <test_condition>: <ระบุชุดคำสั่งที่ต้องการทำซ้ำ> …   การใช้งาน while loop สำหรับ while loop ใช้สำหรับการดำเนินการชุดคำสั่งใดซ้ำๆ กันคล้ายกับ for loop ซึ่งเรากล่าวถึงไปในบทที่แล้ว แต่จะมีความแตกต่างกับ for loop ตรงที่ while loop มักจะใช้ในการวนลูปทำชุดคำสั่งใดๆ ซ้ำๆ ในกรณีที่เราไม่ทราบจำนวนครั้งที่แน่นอนมาก่อน แต่อาศัยเงื่อนไขในการตัดสินใจว่าต้องการจะวนลูปต่อไปหรือไม่ โดยการทำงานของ while loop นั้นจะทำการตรวจสอบเงื่อนไขตรงส่วน <test_condition> ก่อน โดยหากผลการตรวจสอบเงื่อนไขเป็นจริง(True) ก็จะดำเนินการกับชุดคำสั่งที่ระบุ ซึ่งชุดคำสั่งกับเงื่อนไขจะแยกบล๊อกกันด้วยการย่อหน้า(indent) เมื่อดำเนินการตามชุดคำสั่งครบในหนึ่งรอบแล้วก็จะทำการตรวจสอบเงื่อนไขตรงส่วน <test_condition> ใหม่อีกครั้งหนึ่งเพื่อตัดสินใจว่าจะทำชุดคำสั่งที่กำหนดไว้ซ้ำหรือไม่ และการวนลูปนั้นจะหยุดก็ต่อเมื่อเงื่อนไขตรงส่วน <test_condition> มีผลเป็นเท็จ(false) Read more about Python – while loop[…]

Python – for loop

for loop for loop มักจะนำมาใช้เมื่อต้องการเขียนโปรแกรมแล้วเรียกใช้กลุ่มคำสั่งใดซ้ำๆ กันเพื่อประมวลผลข้อมูลบางอย่างตามจำนวนรอบตามที่ระบุ โดยมักใช้จะใช้ร่วมกันกับชุดข้อมูลที่เป็น list , tuple, string โครงสร้างของ for loop for <val> in <sequence of vals> : <ระบุชุดคำสั่งที่ต้องการทำซ้ำ> <…> โดย val : คือตัวแปรที่ทำการเก็บข้อมูลซึ่งดึงออกมาใช้ประมวลผลในแต่ละรอบ จากชุดของข้อมูล(sequence of vals)ที่ระบุ การทำงานของลูป: จะวนซ้ำต่อเนื่องกันจนกระทั่งถึงข้อมูลตัวสุดท้ายของชุดข้อมูล(sequence of vals) ที่ระบุ ชุดคำสั่ง:  ชุดคำสั่งสำหรับลูปนั้น จะแยกออกมาด้วยการใช้ย่อหน้า เพื่อทำการระบุจุดเริ่มต้นและจุดสิ้นสุดของชุดคำสั่งที่ต้องการดำเนินการสำหรับลูปนั้นๆ ตัวอย่างการใช้งาน # กำหนดชุดข้อมูลของคะแนนที่ได้จากการสอบของนักเรียน student_scores = [90, 81, 60, 52, 40, 88, 71] # กำหนดค่าเริ่มต้นให้ผลรวมของคะแนนทั้งหมดที่ได้จากการสอบครั้งนี้ total_scores = Read more about Python – for loop[…]

Python – Operator Overloading

operator overloading ตัวดำเนินการ(operator) ทำงานกับ built-in class แต่ทำงานแตกต่างกันตามชนิดของข้อมูล ตัวอย่างเช่น ตัวดำเนินการ “+” จะดำเนินการเพื่อบวกจำนวน 2 จำนวน หรือ อาจจะใช้เพื่อทำการเชื่อมข้อความ 2 ข้อความก็ได้ คุณลักษณะเช่นนี้ ซึ่งอนุญาติให้ตัวดำเนินการสามารถทำงานแตกต่างกันตามบริบทของข้อมูล จะเรียกว่า operator overloadding /** * Insert your code here */ ผลที่ได้ Traceback (most recent call last): … TypeError: unsupported operand type(s) for +: ‘Point’ and ‘Point’ จากตัวอย่าง หากเราใช้ operator overloadding กับคลาสที่เราทำการสร้างขึ้นมาเอง จะเกิดปัญหาดังตัวอย่าง แต่ในไพธอนนั้น เราสามารถจะกำหนดรายละเอียดเพื่อให้ไพธอนรู้ถึงวิธีการจัดการกับข้อมูลดังกล่าวได้ special function Read more about Python – Operator Overloading[…]

Python – Multiple Inheritance

การสืบทอดจากคลาสหลายคลาส คลาสนั้นสามารถสืบทอดคุณลักษณะจากคลาสต้นแบบได้พร้อมกันครั้งหลายคลาส โดยจะเรียกว่า multiple inheritance เมื่อทำการสืบทอดมาจากหลายคลาส คุณลักษณะทั้งหมดจากคลาสต้นแบบแต่ละคลาสจะถูกสืบทอดมายังคลาสนั้น วิธีการใช้งาน class Base1: pass class Base2: pass class MultiDerived(Base1, Base2): pass โดย multiDervied คลาสจะสืบทอดคุณลักษณะทั้งหมดมาจากทั้งคลาส Base1 และ Base2 การสืบทอดหลายระดับ เราสามารถทำการสืบทอดคลาสมาจาก คลาสที่ทำการสืบทอดมาจากคลาสอื่นอีกทีได้ ซึ่งเรียกว่า การสืบทอดในหลายระดับ โดยสามารถสืบทอดในรูปแบบนี้ได้ในหลายๆระดับ โดยคุณลักษณะจากคลาสต้นแบบและคลาสที่สืบทอดมาจากคลาสต้นแบบ จะถูกสืบทอดมายังคลาสที่ต้องการสืบทอดคุณลักษณะดังกล่าวทั้งหมด วิธีการใช้งาน class Base1: pass class DerviedLevel1(Base): pass class DerivedLevel2(DerivedLevel1): pass จากตัวอย่าง คลาส DerviedLevel1 นั้นสืบทอดมาจากคลาส Base1 จากนั้นคลาส DerivedLevel2 ก็ทำการสืบทอดมาจากคลาส DerviedLevel1 อีกทีหนึ่ง ลำดับการทำงานของฟังก์ชันสำหรับการสืบทอดคลาส ทุกๆ คลาสจะสืบทอดมาจากคลาส Read more about Python – Multiple Inheritance[…]

Python – Inheritance

การสืบทอด(Inheritance) การสืบทอดเป็นคุณลักษณะเด่นอย่างหนึ่งสำหรับการเขียนโปรแกรมแบบ OO(Object-Oriented Programming) โดยอ้างถึงการกำหนดคลาสขึ้นมาใหม่และด้วยคุณลักษณะจากคลาสที่มีอยู่โดยไม่มีการแก้ไขใดๆ โดยคลาสใหม่เรียกว่าคลาสสืบทอด(derived or child class) และคลาสที่เป็นต้นแบบของการสืบทอดนั้นเรียกว่าคลาส base(หรือ parent) class BaseClass: # รายละเอียดของ Base Class class DerivedClass(BaseClass): # รายละเอียดของ Derived Class คลาสสืบทอด(derived class) ได้สืบทอดคุณลักษณะจากคลาสต้นแบบ และสามารถเพิ่มคุณลักษณะใหม่ลงไปได้ ซึ่งทำให้เราสามารถสร้างคลาสใหม่โดยการนำคุณลักษณะเดิมที่มีอยู่แล้วมาปรับปรุงเพื่อใช้งานได้มากขึ้น ตัวอย่างการสืบทอด กำหนดให้ polygon เป็นรูปปิดซึ่งมีด้าง 3 ด้าน เราทำการสร้างคลาส polygon ได้ดังนี้ class Polygon: def __init__(self, no_of_sides): self.n = no_of_sides self.sides = [0 for i in range(no_of_sides)] def inputSides(self): Read more about Python – Inheritance[…]