เมื่อจบหัวข้อนี้ ผู้เรียนควรจะ
√ CLO2: เลือกใช้ตัวแปร ชนิดข้อมูล คำสั่งเงื่อนไข คำสั่งทำซ้ำ และไลบรารีมาตรฐานในการเขียนโปรแกรมได้อย่างเหมาะสม
อธิบายความแตกต่างระหว่างไลบรารีและโมดูล
ยกตัวอย่างไลบรารี/โมดูล
เลือกใช้ไลบรารี/โมดูลเพื่อให้เหมาะกับโจทย์ที่กำหนด
เรียกใช้ไลบรารี/โมดูลเพื่อให้เหมาะกับโจทย์ที่กำหนด
√ CLO5: เขียนโปรแกรมเพื่อแก้ปัญหาทางด้านคณิตศาสตร์ สถิติ และปัญหาในชีวิตประจำวัน
เขียนโปรแกรมเพื่อแก้ปัญหาโจทย์ โดยเรียกใช้ฟังก์ชันในไลบรารีที่ช่วยในการแก้ปัญหาได้
√ CLO6: ทดสอบโปรแกรม ค้นหาจุดบกพร่อง และแก้ไขให้โปรแกรมทำงานถูกต้อง
ทดสอบโปรแกรมที่มีการใช้ไลบรารี โดยการเรียกใช้กับชุดข้อมูลทดสอบให้ครอบคลุมทุกกรณีที่เป็นไปได้
ค้นหาจุดบกพร่อง (bug) และแก้ไข (debug) ให้โปรแกรมทำงานถูกต้อง
โมดูล (Module) คือ ไฟล์ .py ที่ประกอบด้วยตัวแปร (ค่าคงที่) ฟังก์ชัน และคลาสต่างๆ ที่เกี่ยวข้องกัน
เรียกใช้ในโปรแกรมอื่นได้
จัดระเบียบโค้ดให้อ่านและเรียกใช้ได้ง่าย
นำโค้ดที่มีอยู่แล้วไปใช้งานได้สะดวก
กรณีที่เป็นการพัฒนาโปรแกรมขนาดใหญ่ ทำให้สามารถจัดระเบียบไฟล์ เพื่อง่ายต่อการแก้ไขและจัดการ
โมดูลสร้างไว้แล้ว (Built-in) เป็นโมดูลสำเร็จรูปที่ไพธอนเตรียมไว้ให้เรียกใช้งาน เรียกโมดูลเหล่านี้ว่า ไลบรารีมาตราฐาน (Standard library)
ไลบรารีมาตราฐาน (standard library) ประกอบด้วยหลายๆ โมดูล เช่น
โมดูลทางคณิตศาสตร์ เช่น math, random, statistics
โมดูลจัดการข้อความ เช่น string, re, unicodedata
โมดูลจัดการชนิดข้อมูล เช่น datetime, calendar, pprint
ดูเพิ่มเติมได้ในเอกสารเกี่ยวกับ library ของไพธอน
โมดูลสร้างเอง (User-defined) โมดูลที่ผู้ใช้สร้างขึ้นมาใช้งานเอง
คำสั่ง import
สามารถเรียกใช้ได้ทุกอย่างที่ประกาศในไลบรารี แต่ต้องระบุชื่อโมดูลนำหน้าทุกครั้งที่เรียกใช้ในรูปแบบ
1) เรียกใช้โมดูลโดยใช้ชื่อของโมดูลเอง
import moduleName # เรียกใช้โมดูล
moduleName.function() # เรียกใช้ฟังก์ชันในโมดูล
moduleName.variable # เรียกใช้ตัวแปรในโมดูล
2) เรียกใช้โมดูลโดยตั้งชื่อใหม่ให้กับโมดูล
import moduleName as newModulename # เรียกใช้โมดูลโดยชื่อใหม่ให้โมดูลนั้น
newModuleName.function() # เรียกใช้ฟังก์ชันในโมดูล
newModuleName.variable # เรียกใช้ตัวแปรในโมดูล
คำสั่ง from ... import ...
3) เรียกใช้โมดูลโดยระบุฟังก์ชัน ตัวแปร หรือคลาสที่ต้องการใช้งาน
from module import function, function, ....
4) เรียกใช้โมดูลโดยระบุฟังก์ชัน ตัวแปร หรือคลาสที่ต้องการใช้งาน
from module import *
เรียกใช้โมดูลโดยสามารถเรียกใช้ทุกอย่างที่ประกาศในโมดูล โดยไม่ต้องระบุชื่อโมดูลนำหน้าทุกครั้งที่ต้องใช้งาน
import math
print(math.cos(math.pi))
import math as m
print(m.cos(m.pi))
from math import *
print(cos(pi))
ตัวอย่างฟังก์ชันใน math
math.ceil(x) returns the ceiling of x, the smallest integer greater than or equal to x, i.e. ⌈x⌉ -> (math.ciel(3.1) = 4)
math.floor(x) returns the floor of x, the largest integer less than or equal to x,
i.e. ⌊x⌋ -> math.floor(3.9) = 3
math.fabs(x) returns the absolute value of x,
i.e. |x| -> math.fabs(-3) = 3.0
math.factorial(x) returns x factorial. It raises ValueError if x is not integral or is negative.
i.e. x! -> math.factorial(4) = 24
ภาษา Python สามารถประยุกต์ใช้งานได้หลากหลาย ไม่ว่าจะเป็นพัฒนา Web Application การประมวลผลรูปภาพ การประมวลผลข้อความ การวิเคราะห์ข้อมูล ถ้าต้องพัฒนาโปรแกรมเหล่านี้จากศูนย์คงเป็นการยาก จึงนักพัฒนาหลายคน นำคำสั่งต่างๆ ของ Python มาสร้างเป็นชุดคำสั่ง หรือเป็นแพ็คเกจ (Package) เพื่อให้สามารถทำงานตามวัตถุประสงค์แต่ละด้านได้อย่างรวดเร็วและมีประสิทธิภาพมากขึ้น เราเรียกแพ็คเกจเหล่านี้ว่า “Python Library”
แพ็คเกจ (Package) เป็นโครงสร้างของการจัดเก็บไฟล์โมดูล โดยแพ็คเกจอาจประกอบด้วย 1 โมดูลหรือหลายโมดูลรวมกัน
โมดูลที่เกี่ยวข้องกันมักจะจัดเก็บไว้ในแพ็คเกจเดียวกัน โครงสร้างแบบแพ็คเกจทำให้สะดวกในการจัดการโมดูล เช่น การเผยแพร่ การนำไปใช้ซ้ำ การแก้ไข
ในกรณีที่มีหลายโมดูลสามารถจัดเก็บเป็นแพ็คเกจย่อย และออกแบบเป็นลำดับชั้นได้ ซึ่งโครงสร้างของแพ็คเกจก็คล้ายกับการจัดเก็บโฟลเดอร์ที่มีโฟลเดอร์ย่อยอยู่ภายในได้ และอ้างถึงได้ตามลำดับชั้น
รายชื่อของ library/package ของ Python สามารถค้นหาได้จาก https://pypi.org/
การติดตั้ง Library
หากเราต้องการใช้งาน library เหล่านี้ จำเป็นต้อง install ก่อนใช้งาน ต่างจาก standard library ที่มีมาให้อยู่แล้วพร้อมภาษา Python
คำสั่งที่ใช้ install library คือคำสั่ง pip install โดยใช้คำสั่งนี้ใน Command Prompt หรือ PowerShell หรือเรียกใช้เมนูในเครื่องมือที่ใช้เขียนโปรแกรม โดยขณะทำงานต้องเชื่อมต่ออินเทอร์เน็ตไว้ เพื่อดาวน์โหลด library มาไว้ในเครื่อง และติดตั้ง
ตัวอย่าง ถ้าต้องการติดตั้ง library ชื่อ NumPy ใช้คำสั่ง > pip install numpy
ตัวอย่าง Library ที่เกี่ยวข้องกับงานด้านคณิตศาสตร์ สถิติ และวิทยาการข้อมูล
NumPy (Numerical Python):
import numpy as np
ใช้สำหรับการทำงานกับข้อมูลที่มีลักษณะทางตัวเลข เช่น การทำงานกับ array และ matrix ในรูปแบบที่มีประสิทธิภาพมากขึ้น.
Pandas:
import pandas as pd
นำเสนอโครงสร้างข้อมูลที่ทำให้ง่ายต่อการทำงานกับข้อมูลที่มีโครงสร้าง เช่น ตาราง (DataFrames)
Matplotlib:
import matplotlib.pyplot as plt
ใช้สำหรับสร้างกราฟและการแสดงผลข้อมูลทางกราฟิก
Seaborn:
import seaborn as sns
สร้างกราฟที่สวยงามและมีการเข้าถึงข้อมูลทางสถิติอย่างสะดวก
SciPy:
import scipy
รวมไปถึงฟังก์ชันทางคณิตศาสตร์และสถิติที่มีประสิทธิภาพสูง
Statsmodels:
import statsmodels.api as sm
ใช้สำหรับการวิเคราะห์ทางสถิติและการทำงานกับโมเดลทางสถิติ
Scikit-learn:
from sklearn import *
ไลบรารีสำหรับการเรียนรู้เครื่องและการประเมินผล
ตัวอย่างง่ายของโค้ด turtle ที่ให้ "turtle" วาดรูปสี่เหลี่ยม
import turtle
# สร้าง turtle
my_turtle = turtle.Turtle()
# วาดสี่เหลี่ยม
for i in range(4):
my_turtle.forward(100) # ขนาดด้าน
my_turtle.right(90) # มุม
ดูตัวอย่างและคำสั่งเพิ่มเติม
https://www.pythonclassroom.com/turtle-graphics
https://www.geeksforgeeks.org/turtle-programming-python/
Library turtle
เป็นไลบรารีในภาษา Python ที่ใช้สำหรับการสร้างภาพด้วยกราฟิก โดยใช้กราฟิก turtle graphics ซึ่งเป็นวิธีการวาดภาพโดยให้วัตถุ "turtle" ควบคุมการเคลื่อนที่ของพิกัดต่าง ๆ บนหน้าจอ วัตถุ "turtle" จะเป็นตัวที่เคลื่อนที่ไปทางต่าง ๆ ตามคำสั่งที่กำหนด
ไลบรารี turtle มักถูกใช้เพื่อเรียนรู้การโปรแกรมคอมพิวเตอร์และการวาดรูปภาพอย่างง่าย ๆ ด้วยรูปแบบของการสั่งงานที่ทำให้ง่ายต่อการเข้าใจ
ตัวอย่าง method ที่สำคัญใน turtle
turtle.Turtle(): สร้าง turtle ใหม่
forward(distance): ทำให้ turtle เคลื่อนที่ไปข้างหน้าตามระยะทางที่กำหนด
backward(distance): ทำให้ turtle เคลื่อนที่ถอยหลังตามระยะทางที่กำหนด
right(angle) / left(angle): หมุน turtle ไปทางขวาหรือซ้ายตามองศาที่กำหนด
penup() / pu(): ยกปากกาขึ้น (ไม่วาด) เพื่อเคลื่อนที่ไปยังตำแหน่งใหม่
pendown() / pd(): ลงปากกาลงมา (วาด) เพื่อเริ่มวาด
color(color): กำหนดสีของปากกา
width(width): กำหนดความกว้างของเส้นที่วาด
circle(radius): วาดวงกลมด้วยรัศมีที่กำหนด
goto(x, y): ย้าย turtle ไปยังตำแหน่งที่กำหนด
setheading(angle): กำหนดทิศทาง (heading) ของ turtle
clear() / clearscreen(): ลบเนื้อหาทั้งหมดบนหน้าต่างกราฟิก
hideturtle() / ht(): ทำให้ turtle หายไป
showturtle() / st(): ทำให้ turtle ปรากฏขึ้น
speed(speed): กำหนดความเร็วของ turtle
shape(shapename): กำหนดรูปร่างของ turtle
begin_fill() / end_fill(): เริ่มและจบการเติมสีในรูป
bgcolor(color): กำหนดสีพื้นหลังของหน้าต่างกราฟิก
write(text): ใช้เขียนข้อความบนหน้าต่างกราฟิก
โจทย์ทางคณิตศาสตร์
sin 30° (30 degrees = 30° × (π/180°) rad = π/6 or 0.5235)
sin pi + cos pi (sin π = sin(180°) = 0, cos π = cos(180°) )
log10 of x รับค่า x จากผู้ใช้
exp(x) รับค่า x จากผู้ใช้
tri_area = [ ab sin(c) ] / 2 # area of triangle, lengths of two sides (a, b) and an angle c
cir_area = pi x (r^2) # area of circle, radias r
provide any 2 values of a, b to solve the Pythagorean equation: a2 + b2 = c2. (ดู https://www.calculator.net/pythagorean-theorem-calculator.html)
โจทย์สุ่มค่า
สุ่มเลข 1-999 โดยเติมเลข 0 ข้างหน้าถ้าเลขไม่ถึง 3 หลัก
รับข้อมูลรหัสนักศึกษา 10 รหัส เก็บค่าไว้ในลิสต์ และสุ่มค่ามาจากลิสต์นั้น 3 ค่าที่ไม่ซ้ำกัน
สุ่มค่าเลขที่อยู่ในช่วง 0-1 จำนวน 10 ค่า
เกมเดาตัวเลข โดยใช้คำสั่ง สุ่มค่าระหว่าง 1-100 แล้วรับค่าจากผู้ใช่ไปเรื่อยๆ จนกว่าจะเดาตัวเลขถูก ถ้าไม่ถูกให้แจ้งผู้ใช้ว่าค่าสูงหรือต่ำกว่าเลขสุ่ม
โจทย์สตริง
รับชื่อคนมา แล้วเปลี่ยนเป็นตัวอักษรตัวใหญ่ทั้งหมด
รับคำ 10 คำมาเก็บใน list แล้วเปลี่ยนตัวอักษรทุกคำให้เป็นตัวเล็กทั้งหมด
รับเลขบัญชีธนาคารที่คั่นด้วย - มาแล้ว เก็บเป็นเลขบัญชีที่ไม่มีเครื่องหมาย - คั่น (คำแนะนำ: ใช้ฟังก์ชัน join ในสตริง
โจทย์วาดรูปโดยใช้ turtle
วาดรูปสี่เหลี่ยม http://opensask.ca/Python/MoreTurtles/DrawingPractice.html
วาดรูปสามเหลี่ยม สี่เหลี่ยม หกเหลี่ยม https://robertvandeneynde.be/parascolaire/turtle.en.html
วาดรูปโดยใช้ลูป https://www.pythonclassroom.com/turtle-graphics/turtle-graphics-with-loops
ตัวอย่างคำสั่ง https://www.geeksforgeeks.org/turtle-programming-python/