Skip to content
Home » [Update] Machine Learning ภาคผนวก 2: Python อย่างสั้นที่สุด | สํา น วน คือ อะไร – NATAVIGUIDES

[Update] Machine Learning ภาคผนวก 2: Python อย่างสั้นที่สุด | สํา น วน คือ อะไร – NATAVIGUIDES

สํา น วน คือ อะไร: คุณกำลังดูกระทู้

Table of Contents

Python อย่างสั้นที่สุด

โดย ชิตพงษ์ กิตตินราดร | มกราคม 2563

บทนี้จะแนะนำ Python สำหรับผู้ที่ไม่มีพื้นฐานการเขียนโค้ดเลย โดยจะอธิบายเฉพาะเรื่องพื้นฐานที่สำคัญจริงๆ อย่างสั้นและกระชับที่สุด เพื่อให้สามารถเริ่มต้นได้และสามารถใช้ Machine learning framework เช่น scikit-learn และ TensorFlow

ขอย้ำอีกรอบ ว่าสิ่งที่แนะนำนี้ไม่ได้ครบถ้วนสมบูรณ์ตามหลักวิชาการ แต่เน้นกระชับ สั้น ง่าย ให้เริ่มต้นเรียนรู้ได้เท่านั้น

Python เป็นภาษาคอมพิวเตอร์แบบ High-level นั่นหมายความว่าเราสามารถสั่งให้ Python ทำสิ่งต่างๆ ได้ในลักษณะที่คล้ายกับภาษาคน โดยไม่ต้องไปสนใจเรื่อง “หลังบ้าน” ของคอมพิวเตอร์มากนัก เช่นการจัดการหน่วยความจำ การระบุประเภทตัวแปร เป็นต้น ทำให้เขียนง่าย อ่านง่าย เข้าใจง่าย

นอกจากนั้น Python ยังเป็นภาษาแบบ Interpret หมายความว่าเวลาเราเรียก Script หรือโปรแกรมที่เขียนด้วย Python เครื่องก็จะตีความ คำนวน และแสดงผลทันที โดยไม่ต้องสั่งแปลงเป็นภาษาเครื่องก่อนจะรันโปรแกรม (เรียกว่าการ Compile) ทำให้สะดวกรวดเร็วในการพัฒนาโปรแกรม แต่แลกมากับการที่ความเร็วและประสิทธิภาพในการคำนวนจะด้อยกว่าภาษาที่ต้อง Compile เช่น C++ เป็นต้น

ปัจจุบัน Python เป็นภาษา “มาตรฐาน” สำหรับงานวิทยาศาสตร์ข้อมูล, AI, Machine learning นอกจากนั้นยังใช้ในอีกหลายวงการ เช่นการสร้างเว็บไซต์ ผ่าน Framework เช่น Django และ Flask เป็นต้น

การติดตั้งและใช้งาน Python

ขั้นแรกให้โหลด Python มาติดตั้งก่อน โดยเข้าไปที่เว็บไซต์ของ Python ไปที่หน้า Downloads และทำตามคำแนะนำได้เลย

อย่างไรก็ตาม ถ้าจะใช้ Python ในงานวิทยาศาสตร์ข้อมูล, AI, Machine learning แนะนำวิธีติดตั้งอีกแบบ คือการติดตั้ง Python และ Library มาตรฐานที่มักจะได้ใช้แบบรวดเดียวจบ ผ่าน Anaconda ก็จะได้ Library พื้นฐาน เช่น numpy, pandas, matplotlib มาเลย ส่วน scikit-learn และ TensorFlow ก็สามารถติดตั้งได้ง่ายๆ โดยใช้คำสั่ง conda ใน Commandline เช่น conda install scikit-learn และ conda install tensorflow เป็นต้น รายละเอียดเรื่องการติดตั้งและจัดการ Package จะไม่อธิบายมาก สามารถอ่านและศึกษาได้โดยตรง

การเขียนโค้ดและเรียกโปรแกรมที่เขียนด้วย Python มีหลายวิธี ดังนี้

  • iPython: เรียก ipython จาก Commandline จะสามารถเขียนโค้ดและรันทีละบรรทัดๆ เหมาะสำหรับการทำลองไอเดียสั้นๆ เร็วๆ หรือใช้ Python เป็นเครื่องคิดเลข
  • IDE: ใช้ Python ผ่านโปรแกรมที่เป็นสภาพแวดล้อมสำหรับการเขียนโค้ดโดยเฉพาะ เช่น PyCharm หรือ Spyder โดยสามารถติดตั้งและเรียกใช้ IDE เหล่านี้ได้เอง
  • Jupyter Lab: ใช้ Python ผ่าน Jupyter Notebook (ปัจจุบันพัฒนาเป็นรุ่นใหม่ เรียกว่า Jupyter Lab) โดยการเรียก jupyter lab จาก Commandline จะเปิดเว็บขึ้นมาในลักษณะ Web-based IDE นั่นเอง สำหรับงาน Data science/ML แนะนำวิธีนี้ เพราะสามารถแยกโค้ดเป็น Cell ย่อยๆ และสามารถใส่ Cell ที่เป็นข้อความธรรมดาเพื่ออธิบายโค้ดของเราควบคู่ไปได้

การคำนวน

เมื่อเรียกใช้ Python ผ่านช่องทางที่ถนัดแล้ว ก็มาเริ่มกันเลย

การคำนวนและการแสดงผล ทำได้ง่ายมาก เช่น:

2*0.5/3

จะได้คำตอบเป็น 0.3333333333333333 สังเกตว่าถ้าเราคำนวนหลายๆ อย่างใน Term เดียว เราอาจจะไม่แน่ใจว่า Python จะคำนวนสัญลักษณ์ไหนก่อน ซึ่งจริงๆ มีลำดับที่ชัดเจน แต่ถ้าไม่อยากจำ แนะนำว่าให้ใส่วงเล็บให้ชัดเจนไปเลย เช่น:

(2*0.5)/3

นอกจากบวก + ลบ - คูณ * หาร / ยังมี Operator ที่น่ารู้ เช่น ยกกำลัง ** Floor division // (หารไม่เอาเศษ) และ Modulus % (หารแล้วเอาแค่เศษ) สามารถดูเพิ่มเติมได้จากเว็บต่างๆ เช่นที่นี่

Variables: การกำหนดตัวแปร

เวลาเราเขียนโค้ด เรามักจะต้องการเก็บข้อมูลบางอย่างเอาไว้ก่อนเพื่อเรียกใช้ภายหลัง เราเรียกที่เก็บข้อมูลนี้ว่าตัวแปร หรีอ Variable

ตัวอย่างเช่น:

age = 50
name = "John"
print(age)
print(name)

จะได้คำตอบคือ:

50
John

สังเกตว่า ค่าของตัวแปรที่เป็นตัวเลข สามารถใส่ได้เลย ส่วนถ้าเป็นตัวหนังสือ ต้องใช้ Quotation ครอบไว้ จะใช้ " หรือ ' ก็ได้

เราใช้ฟังก์ชัน print() เพื่อแสดงผลสิ่งที่อยู่ในวงเล็บ เราเรียกสิ่งที่อยู่ในวงเล็บว่า Argument โดยในที่นี้เราจะใส่ตัวแปรของเราเป็น Argument ทำให้ Python print ค่าของตัวแปรของเราออกมา อนึ่ง Argument อาจมีได้หลายอัน ขึ้นอยู่กับว่า Function นั้นรองรับ Argument อะไรบ้าง โดยเราใช้ Comma , คั่นระหว่างแต่ละ Argument ซึ่งเดี๋ยวเราจะเห็นตัวอย่างเมื่ออธิบาย Function อื่นๆ ต่อไป

ทีนี้เราจะลองใช้ประโยชน์จากตัวแปร โดยเราต้องการที่จะบอกว่า John อายุ 50 ปี:

print(name + ' is ' + str(age) + ' years old.')

ได้คำตอบว่า:

John is 50 years old.

ลองมาดูกันว่าเกิดอะไรขึ้นบ้าง:

  • เครื่องหมาย + ในที่นี้ คือการเอาข้อความ (เรียกว่า String) มาต่อกัน (เรียกการกระทำแบบนี้ว่า Concatenate)
  • การ Concatenate จะต้องทำระหว่างข้อมูลประเภทเดียวกันเท่านั้น เช่น String กับ String ดังนั้น เราจึงต้องแปลงตัวแปร age จากตัวเลขจำนวนเต็ม (Integer หรือ int) ให้เป็นข้อความ (String หรือ str) ด้วยการเรียกฟังก์ชัน str()
  • สังเกตว่าเราเว้นวรรคบางจุด เช่น ก่อนและหลัง is และก่อน years old เพื่อให้ข้อความที่ออกมามีการเว้นวรรคที่ถูกต้อง เพราะการ Concatenate ไม่ได้เว้นวรรคให้เรา

ทีนี้ถ้าเรากำหนดตัวแปรใหม่ เช่น age = 35 แล้วเรียก print เหมือนเดิมอีกรอบ Output ที่ได้ก็จะเปลี่ยนตามตัวแปรใหม่ นั่นก็คือ John is 35 years old.

Data types: ประเภทของข้อมูล

ตัวแปรสามารถเก็บข้อมูลได้หลายประเภท เราจะทำความรู้จักประเภทข้อมูลพื้นฐานที่สำคัญและใช้บ่อยดังนี้:

  • Text str
  • Numerical int, float
  • Sequence list, tuple
  • Mapping dict
  • Boolean bool

String

เรารู้จัก String กันแล้วก่อนหน้านี้ String มีคุณสมบัติที่น่าสนใจบางอย่าง เช่น:

1) String เป็น Array หมายความว่าตัวอักษรแต่ละตัวจะถูกมองว่าเป็นข้อมูล 1 ชิ้น ดังนั้นเราจึงสามารถจัดการตัวอักษรใน String ได้หลากหลาย เช่น:

หาความยาว โดยใช้ฟังก์ชัน len()

a = "Hello, World!"
print(len(a))

ได้คำตอบคือ 13

ตัดเอา Space ว่างท้าย String ออก โดยใช้ Method .strip() (Method คือฟังก์ชันที่ใช้ได้กับตัวแปร โดยการนำไปต่อท้ายตัวแปรได้ทันที เพื่อกระทำการบางอย่างกับข้อมูลในตัวแปรนั้น ลองดูตัวอย่างข้างล่าง)

a = " Hello, World! "
print(a.strip())

ได้คำตอบว่า Hello, World! โดยไม่มี Space หลัง !

แยกคำออกจากกัน โดยใช้ Method .split()

a = "My name is John."
print(a.split())

จะเป็นการแยกประโยคออกเป็นคำๆ โดยแยกที่ Space ได้ผลคือ ['My', 'name', 'is', 'John.'] ทั้งนี้สามารถกำหนดได้ว่าให้แยกที่พบอักษรอะไร เช่น a.split(",") คือให้แยกเมื่อพบ Comma เป็นต้น

สังเกตว่า ['My', 'name', 'is', 'John.'] เป็นข้อมูลประเภท List ซึ่งจะอธิบายภายหลังว่าคืออะไร ตอนนี้เพียงให้รู้ว่า List นี้มีข้อมูล 4 รายการ คือคำแต่ละคำนั่นเอง คั่นด้วย Comma

เลือกเฉพาะบางตัวอักษรตามลำดับที่ เป็นความสามารถที่เรียกว่า Slicing ซึ่งใช้ได้กับทุกอย่างที่มีลักษณะเป็น Array หลักการคือ Python จะกำหนดให้ข้อมูลชิ้นแรกมีรหัส Index 0 และเพิ่มขึ้นทีละ 1 ต่อไปเรื่อยๆ ดังนั้น:

a = "Hello, World!"
print(a[1])

จะได้ e

เราสามารถเลือก Slicing เป็น Range ได้ โดยใช้ Colon : คั่น โดยจะนับ Index เริ่มต้นเป็นชิ้นแรก (Inclusive) แต่ Index ตัวขบขะไม่นับตัวมันเอง (Exclusive) ตัวอย่างเช่น:

a = "Hello, World!"
print(a[2:5])

จะได้ llo

สุดท้าย ถ้าใน String มีเครื่องหมายที่ปกติจะถูกตีความว่ามีความหมายพิเศษ เช่น " เราจะไม่สามารถใส่เครื่องหมายนั้นลงไปได้ตรงๆ ถ้าอยากใส่ ต้องใช้ Backslash \ ไว้ก่อน เราเรียก \ ว่า Escape character ตัวอย่างเช่น:

print("My name is \"John\".")

จะได้ My name is "John".

แถม Escape character ที่มีประโยชน์มาก คือ \n คือการขึ้นบรรทัดใหม่ ส่วน \t คือ Tab

อ่านเพิ่มเติมเกี่ยวกับ String ได้ที่นี่

Int และ Float

Int (Integer) คือจำนวนเต็ม เช่น -1, 0, 5, 100 ส่วน Float คือจำนวนที่มีทศนิยม เช่น -0.12, 5.816497 เป็นต้น เราสามารถดูได้ว่าตัวเลขของเราคือประเภทอะไร โดยใช้ฟังก์ชัน type() เช่น:

x = 1
y = 2.5

print(type(x))
print(type(y))

จะได้:

<class 'int'>
<class 'float'>

เราสามารถแปลงระหว่าง int กับ float ได้ โดยใช้ฟังก์ชัน int() และ float()

List

List เป็นข้อมูลแบบ Array ที่มีสมาชิกหลายตัว สามารถผสมสมาชิกประเภทต่างๆ กันได้ และสามารถสลับตำแหน่ง เปลี่ยนแปลงข้อมูลได้ จึงใช้งานได้หลายวัตถุประสงค์ยืดหยุ่นมาก เราสามารถสร้าง List โดยการใช้ Bracket [] เช่น:

emptylist = []
print(emptylist)

ก็จะได้ List ว่างๆ คือ [] ส่วน List ที่มีสมาชิก ก็ใส่สมาชิกนั้นลงไปเลย คั่นแต่ละตัวด้วย Comma เช่น:

fruitlist = ["apple", "banana", "cherry"]
print(fruitlist)

ก็จะได้ ['apple', 'banana', 'cherry']

สมมุติเราอยากเลือกแค่ banana กับ cherry ก็ใช้ Slicing ได้ เช่น:

fruitlist = ["apple", "banana", "cherry"]
print(fruitlist[1:])

ก็จะได้ ['banana', 'cherry'] สังเกตว่าตอน Slice ถ้าเราไม่ใส่ Index ตัวจบ ก็แปลว่าให้เลือกไปจนถึงสมาชิกตัวสุดท้าย โดยรวมตัวสุดท้ายด้วย ในทางกลับกัน ถ้าไม่ใส่ Index ตัวเริ่ม ก็คือให้เริ่มที่สมาชิกตัวแรกเลย

เราสามารถเปลี่ยนสมาชิกใน List ง่ายๆ เช่น:

fruitlist = ["apple", "banana", "cherry"]
fruitlist[1] = "pineapple"
print(fruitlist)

จะได้ ['apple', 'pineapple', 'cherry'] ทันที

ส่วนถ้าจะเพิ่มสมาชิก ก็ทำได้โดยใช้ Method .append() เช่น:

fruitlist = ["apple", "banana", "cherry"]
fruitlist.append("orange")
print(fruitlist)

จะได้ ['apple', 'banana', 'cherry', 'orange']

นอกจากนี้ยังมีการแทรกสมาชิก ใช้ .insert(index, object) โดยใส่ Index ที่ต้องการแทรกลงไปเป็น Argument ก่อนจะใส่ Object ที่ต้องการแทรก ส่วนการลบสมาชิก ก็สามารถใช้ .remove(object) ซึ่งใส่ชื่อ Object เป็น Argument หรือไม่ก็ .pop(index) ซึ่งใช้หมายเลข Index เป็น Argument (ถ้าไม่ใส่จะหมายถึงให้เอารายการสุดท้ายออก)

ถ้าต้องการลบสมาชิกทั้งหมดใน List ให้เหลือ List ว่างๆ ก็ใช้ .clear()

สุดท้าย เราสามารถเอา List มาต่อกันได้ โดยการใช้เครื่องหมาย + เช่น:

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]

list3 = list1 + list2
print(list3)

จะได้ ['a', 'b', 'c', 1, 2, 3]

สุดท้าย เราสามารถนับจำนวนสมาชิกใน List ได้ โดยใช้ฟังก์ชัน len() เช่นเดียวกับการนับจำนวนตัวอักษรใน String

List จะมีประโยชน์มากเมื่อใช้คู่กับ For loop ซึ่งจะอธิบายในส่วนถัดๆ ไป

สามารถอ่านเรื่อง List เพิ่มเติมได้ที่นี่

Tuple

Tuple เป็นข้อมูลแบบ Array ที่มีสมาชิกหลายตัวคล้ายกับ List ต่างกันที่ Tuple นั้นไม่สามารถเปลี่ยนแปลงข้อมูลข้างในได้ เราสามารถสร้าง Tuple โดยใช้วงเล็บ () เช่น:

emptytuple = ()
print(emptytuple)

ก็จะได้ List ว่างๆ คือ () ส่วนคุณสมบัติอื่นๆ ก็เหมือนกับ List ต่างตรงที่ไม่สามารถเพิ่ม ลบ สิ่งที่อยู่ใน Tuple ได้

อ่านเพิ่มเกี่ยวกับ Tuple ได้ที่นี่

Dictionary

Dictionary เป็นประเภทข้อมูลที่เก็บข้อมูลแต่ละตัวเป็นคู่ ซึ่งประกอบด้วยรหัส (Key) กับค่า (Value) เรียกว่า Key-value pair เราสามารถสร้าง Dictionary ด้วยการใช้วงเล็บปีกนก {} ตัวอย่างเช่น:

profiledict = {
    "name": "John",
    "age": 50,
    "sex": "male"
}

print(profiledict)

จะได้ {'name': 'John', 'age': 50, 'sex': 'male'} สังเกตว่าข้อมูลแต่ละคู่จะใช้ Comma แบ่ง

เราสามารถเรียก Value ของ Key-value pair โดยการเรียก Key ที่ต้องการ โดยเรียกใน Bracket เช่น:

print(profiledict["name"])

ก็จะได้ Value ของ Key "name" นั่นก็คือ "John"

อีกวิธีในการเรียก Value คือการใช้ Method get(key) ก็ได้ผลเหมือนกัน

เราสามารถเปลี่ยน Value ได้ โดยการเรียก Key แล้วกำหนด Value ใหม่โดยใช้เครื่องหมาย = เช่น:

profiledict = {
    "name": "John",
    "age": 50,
    "sex": "male"
}

profiledict["age"] = 35

print(profiledict)

ก็จะได้ {'name': 'John', 'age': 35, 'sex': 'male'} ตามที่ต้องการ

การเพิ่ม Key-value pair ใหม่ใน Dict ให้ทำเหมือนกับการเปลี่ยน Value โดยกำหนด Key และ Value ตามที่ต้องการได้เลย เช่น:

profiledict = {
    "name": "John",
    "age": 50,
    "sex": "male"
}

profiledict["address"] = "Bangkok"

print(profiledict)

จะได้ {'name': 'John', 'age': 50, 'sex': 'male', 'address': 'Bangkok'}

ส่วนการลบ Key-value pair ก็ใช้ Method .pop(key)

การ Loop สมาชิกใน Dictionary โดยปกติจะได้ Key ออกมา แต่ถ้าอยากได้ Value ก็สามารถทำได้ โดยจะอธิบายในส่วน For loop

อ่านเพิ่มเกี่ยวกับ Dictionary ได้ที่นี่

Boolean

Boolean คือข้อมูลที่มีสองค่าเท่านั้น คือ True หรือ False โดย Python จะพิจารณาจาก Expression ที่ใส่ เช่น:

print(10 > 9)
print(10 == 9)
print(10 < 9)

คำตอบคือ:

True
False
False

สังเกตว่า เวลาเปรียบเทียบความเท่ากัน ใช้ == ไม่ใช่ = เพราะ = เป็นเครื่องหมายสำหรับการกำหนดค่าให้กับตัวแปร (Assignment) ไม่ใช่การเปรียบเทียบว่าจริงหรือไม่ (Validation)

สำหรับรายละเอียดอื่นๆ อ่านเพิ่มได้ที่นี่

Conditions: การกำหนดเงื่อนไข

บ่อยครั้งที่เราต้องการให้โค้ดของเรามีความฉลาด เช่นสามารถทำสิ่งหนึ่งภายใต้เงื่อนไขบางอย่าง หรือให้ทำสิ่งเดิมวนซ้ำๆ จนกระทั่งบรรลุถึงเงื่อนไขที่ต้องการ ความสามารถแบบนี้เรียกว่า Conditions หรือบางทีก็เรียกว่า Flow control เป็นหัวใจของการเขียนโค้ด ควรจะเรียนรู้ไว้ให้คล่อง

เราจะทำความรู้จัก Conditions 3 รูปแบบ คือ:

  • If…Else
  • For loop
  • While loop

If…Else

เราสามารถกำหนดให้โปรแกรม เรียกโค้ดบรรทัดหนึ่งๆ ก็ต่อเมื่อเงื่อนไขบางอย่างเป็นจริง

If: การกำหนดเงื่อนไข ทำได้โดยการเขียน if เว้นวรรค ตามด้วย Statement ที่เป็นเงื่อนไข ตามด้วย Colon : เช่น:

a = 10
b = 25

if b > a:
  print("b is greater than a")

เนื่องจากในกรณีนี้ b มากกว่า a ตามเงื่อนไขใน if (statement): Python ก็จะเรียกโค้ดที่อยู่บรรทัดถัดไป โดยจะเรียกเฉพาะบรรทัดที่ถูก Indent เท่านั้น การ Indent ทำได้โดยการกด Tab หรือเคาะ Space 2 หรือ 4 ที

Elif: ถ้าเราต้องการสร้างเงื่อนไขต่อไป ในกรณีที่เงื่อนไขแรกไม่เป็นจริง ก็ใช้ elif ซึ่งย่อมาจาก Else if เช่น:

a = 25
b = 25

if b > a:
    print("b is greater than a")
elif b == a:
    print("b equals a")

Else: แต่ถ้าเราต้องการเพียงแค่จะดักเงื่อนไขที่ไม่เป็นจริงจาก If ด้านบน ก็เพียงใช้ else ดังนี้:

a = 50
b = 25

if b > a:
    print("b is greater than a")
else:
    print("b is not greater than a")

And/Or: ใน Statement เราสามารถใช้ Operator and หรือ or เชื่อม 2 Statement เข้าด้วยกัน เพื่อสร้างเงื่อนไขที่เจาะจงขึ้นได้ โดย and แปลว่าจะต้องเป็นจริงทั้ง 2 Statement ส่วน or เป็นจริง Statement เดียวก็ถือว่าจริง

สามารถศึกษาเพิ่มเติมเกี่ยวกับ If…Else ได้ที่นี่

For loop

For loop ใช้สำหรับการวนโค้ดซ้ำๆ ตามสมาชิกของข้อมูลแบบ Text, Sequence, และ Mapping นั่นก็คือ str, list, tuple, และ dict สำหรับผู้เริ่มต้นอาจจะงง จึงให้ลองดูตัวอย่างดังนี้:

for i in "banana":
    print(i)

จะได้ Output ว่า:

b
a
n
a
n
a

หลักการทำงานของ For loop คือการกำหนดตัวแปรขึ้นมาตัวหนึ่ง เช่น i (นิยมใช้ เพราะย่อมาจาก Iteration แปลว่าการทำซ้ำเป็นรอบ) แล้วกำหนดค่า i ให้เป็นสมาชิกแต่ละตัวตั้งแต่ตัวแรกไปจนถึงตัวสุดท้าย โดยให้กระทำกับ i ตามโค้ดที่ถูก Indent ไว้ เช่นในที่นี้ ก็เพียงให้พิมพ์ค่า i ออกมา โดยการวนแต่ละรอบ จะ Output ออกหนึ่งบรรทัด พอวนรอบถัดไป ก็ Output ออกบรรทัดใหม่ ทำอย่างนี้ไปเรื่อยๆ จนถึงสมาชิกตัวสุดท้าย

ลองมาดู For loop สำหรับ List กัน:

fruitlist = ["apple", "banana", "cherry"]

for i in fruitlist:
    print(i)

จะได้:

apple
banana
cherry

หลายคนอาจสงสัยว่า จะทำอย่างนี้ไปทำไม คำตอบคือมันจะมีประโยชน์เมื่อไปผสมกับอย่างอื่นที่ทำให้ Output นั้นมีความหมาย ตัวอย่างเช่น:

fruitlist = ["apple", "banana", "cherry"]
count = 1

for i in fruitlist:
    print("Fruit number " + str(count) + " is " + i + ".")
    count = count + 1

print("There are " + str(count-1) + " fruit types.")

Output ที่ได้คือ:

Fruit number 1 is apple.
Fruit number 2 is banana.
Fruit number 3 is cherry.
There are 3 fruit types.

อธิบายดังนี้:

  • เรามีข้อมูลตั้งต้นเป็น List ของประเภทผลไม้ เราต้องการให้โปรแกรมระบุลำดับที่ของประเภทผลไม้ พร้อมกับบอกว่าเป็นประเภทอะไร นอกจากนั้น เรายังอยากให้โปรแกรมสรุปว่าสุดท้ายผลไม้ใน List มีทั้งหมดกี่ประเภท
  • เมื่อได้โจทย์แล้ว ก็ต้องวางแผน จะเห็นว่าเราต้องการนับลำดับที่ของผลไม้ โดยให้ตัวเลขเพิ่มขึ้นเรื่อยๆ ดังนั้น เราจะกำหนดตัวแปรสำหรับลำดับที่ที่จะแสดงผล โดยกำหนดไว้เป็น 1 ก่อน ด้วยการกำหนด count = 1
  • จากนั้นก็เริ่มวน For loop โดยใน Loop ให้พิมพ์ count และ i ซึ่งก็คือชื่อผลไม้ใน List นั่นเอง
  • ตอนเราจะจบ Loop แต่ละรอบ เราจะต้องเปลี่ยนตัวแปร count ให้เพิ่มขึ้นรอบละ 1 ซึ่งทำได้โดยการกำหนด count = count + 1 หรือจะย่อว่า count += 1 ก็ได้
  • ดังนั้น พอผ่านรอบแรกมาถึงจุดนี้ count จะเท่ากับ 2 เมื่อ For loop วนรอบสอง ก็จะแสดงค่า count ของรอบนี้ เป็น 2 ตามที่ต้องการ ซึ่งจับคู่กับ banana ทำอย่างนี้ไปเรื่อยๆ จนจบ List
  • สุดท้าย เราจะสรุปจำนวนประเภทผลไม้ ซึ่งก็คือ count แต่ต้องลบ 1 เพราะรอบสุดท้าย คือรอบที่ 3 ได้จบรอบด้วยการบวก count ไปอีก 1 ทำให้ count ตอนจบเท่ากับ 4 ตอนพิมพ์จำนวนสรุปตอนจบนี้ ต้องทำ “นอก Loop” นั่นคือให้กลับไปสร้าง Statement ที่ไม่ได้อยู่ใน Indent นั่นเอง เพราะถ้ายังอยู่ใน Indent โปรแกรมก็จะเรียกโค้ดบรรทัดนี้ทุกครั้งที่วน Loop ซึ่งไม่ใช่สิ่งที่เราต้องการ
  • อนึ่ง วิธีการสรุปจำนวนรายการใน List ที่ง่ายกว่านั้น คือการใช้ฟังก์ชัน len(object) เช่น print("There are " + str(len(fruitlist)) + " fruit types.") สังเกตว่าเราใช้ str() คลุมรอบ len() อีกที เพราะ len() ให้ผลเป็นตัวเลข ซึ่งเอามา Concatenate กับ Text ไม่ได้ ต้องเปลี่ยนตัวเลขให้เป็น str เสียก่อน

เราสามารถหยุด For loop ได้ด้วยการใช้ break และ continue

1) break จะหยุด For loop ก่อนที่จะวนครบทุกรายการ โดยจะรันรายการล่าสุดเป็นรายการสุดท้าย:

fruits = ["apple", "banana", "cherry"]
for i in fruits:
    print(i)
    if i == "banana":
        break

จะได้:

apple
banana

2) continue จะข้ามรายการล่าสุด แล้วไปต่อที่รายการถัดไป:

fruits = ["apple", "banana", "cherry"]
for i in fruits:
    if i == "banana":
        continue
    print(i)

จะได้:

apple
cherry

สามารถศึกษาเพิ่มเติมเกี่ยวกับ For loop ได้ที่นี่

While loop

While loop เป็นการวนซ้ำตราบใดที่เงื่อนไขยังคงเป็นจริง เช่น:

i = 1
while i < 6:
    print(i)
    i += 1

จะได้:

1
2
3
4
5

การใช้ While loop ให้ระวังอย่าลืมบวก i เพิ่ม เพื่อให้มีจุดที่ Loop จะวนจนไปชนเงื่อนไขที่ไม่เป็นจริง มิฉะนั้น หากเงื่อนไขเป็นจริงเสมอ While loop ็จะวนตลอดกาล

การหยุด While loop สามารถใช้ break และ continue ได้เช่นเดียวกับ For loop

สามารถศึกษาเพิ่มเติมเกี่ยวกับ While loop ได้ที่นี่

Function: ฟังก์ชัน

Function คือกลุ่มโค้ดที่จะรันต่อเมื่อถูกเรียกใช้เท่านั้น การสร้างฟังก์ชัน ให้ใช้ def เว้นวรรค ตามด้วยชื่อฟังก์ชันที่ต้องการ ตามด้วย Colon : ตัวอย่างเช่น:

def greeting():
    print("Hello!")

พอจะเรียกฟังก์ชัน ก็เพียงเรียก greeting() ก็จะได้:

Hello!

สังเกตว่าที่ผ่านมา เรารู้จักกับฟังก์ชันที่มาพร้อมกับ Python หลายตัวแล้ว เช่น str() หรือ len() ฟังก์ชันเหล่านี้ก็เหมือนกับฟังก์ชันที่เราสร้างขึ้นเอง ต่างกันที่ Python เตรียมมาให้เราแล้วเท่านั้นเอง

Argument

เราสามารถใส่ข้อมูลเข้าไปในฟังก์ชัน เพื่อให้ฟังก์ชันทำอะไรบางอย่างกับข้อมูล แล้วให้ผลลัพธ์ออกมาได้ โดยผลลัพธ์ก็สามารถออกมาเป็นข้อมูลได้เช่นกัน ข้อมูลที่เราใส่ในฟังก์ชัน เรียกว่า Argument (บางทีก็เรียกว่า Parameter เวลาพูดถึงตัวแปรที่อยู่ในวงเล็บตอนสร้างฟังก์ชัน) โดยใส่ในวงเล็บที่ต่อท้ายชื่อฟังก์ชันตอนเราสร้างฟังก์ชัน ตัวอย่างเช่น:

def greeting(name):
    print("Hello, " + name + "!")

เวลาเรียกฟังก์ชัน ก็ใส่ Argument ที่เราต้องการลงไป เช่น:

greeting("John")

ก็จะได้:

Hello, John!

ถ้าเรากำหนด Argument กี่ตัวตอนสร้าง Function ตอนเรียกเราก็ต้องใส่ Argument จำนวนเท่ากัน เข่น:

def greeting(fname, lname):
    print("Hello, " + fname + " " + lname + "!")

เวลาเรียกฟังก์ชัน ก็ใส่ Argument ทั้งสองลงไปตามลำดับ เช่น:

greeting("John", "Doe")

ก็จะได้:

Hello, John Doe!

หากเราไม่รู้ว่าตอนเรียกฟังก์ชัน จะมี Argument ที่ป้อนเข้าไปกี่ตัว เราสามารถทำดังนี้ตอนสร้างฟังก์ชัน:

1) ใช้ Arbitary argument หรือ *args โดยการใส่ * ก่อนชื่อ Parameter ตอนสร้างฟังก์ชัน วิธีนี้จะเป็นการส่ง Tuple เข้าไปในในฟังก์ชัน โดยไม่ต้องระบุจำนวน Argument ที่แน่นอน ตัวอย่างเช่น:

def fruitlist(*fruit):
    print("The last fruit is " + fruit[-1] + ".")

fruitlist("apple", "banana", "cherry")

ก็จะได้ The last fruit is cherry. สังเกตว่าในฟังก์ชัน เราเลือกผลไม้รายการสุดท้ายโดยการ Slice ด้วย [-1] ซึ่งหมายถึงรายการสุดท้าย

2) ใช้ Keyword argument หรือ kwargs โดยการใส่ Key-value เข้าไปในฟังก์ชัน โดยตอนเรียกให้เรียก Key ก็จะได้ Value วิธีนี้ต้องระบุจำนวน Argument ที่แน่นอน เช่น:

def fruitlist(fruit1, fruit2, fruit3):
    print("The last fruit is " + fruit3 + ".")

fruitlist(fruit1 = "apple", fruit2 = "banana", fruit3 = "cherry")

ก็จะได้ The last fruit is cherry. เช่นเดิม

3) ใช้ Arbitary keyword argument หรือ **kwargs โดยการใส่ ** ก่อนชื่อ Parameter ตอนสร้างฟังก์ชัน วิธีนี้จะเป็นการส่ง Dictionary ของ Argument เข้าไปในฟังก์ชัน โดยตอนเรียกก็เรียก Key จะได้ Value ออกมา วิธีนี้ไม่ต้องระบุจำนวน Argument ที่แน่นอน เช่น:

def fruitlist(**fruits):
    print("The last fruit is " + fruits["fruit3"] + ".")

fruitlist(fruit1 = "apple", fruit2 = "banana", fruit3 = "cherry")

ก็จะได้ The last fruit is cherry. เช่นเดียวกัน

ใช้ List และ Dictionary เป็น Argument

เราสามารถใส่ List หรือ Dictionary ที่กำหนดไว้แล้ว ลงไปเป็น Argument ได้ เช่น:

fruits = ["apple", "banana", "cherry"]

def fruitlist(fruits):
    print("The last fruit is " + fruits[-1] + ".")

fruitlist(fruits)

หรือ:

fruitdict = {
    "fruit1": "apple",
    "fruit2": "banana",
    "fruit3": "cherry"
}

def fruitlist(fruitdict):
    print("The last fruit is " + fruitdict["fruit3"] + ".")

fruitlist(fruitdict)

ก็จะได้ The last fruit is cherry. เช่นเดียวกันทั้งหมด

Return value

เราสามารถให้ฟังก์ชัน Output ค่าออกมาได้ เช่น:

def bmi(weight, height):
    return weight/(height**2)

bmi(70, 1.72)

สามารถศึกษาเพิ่มเติมเกี่ยวกับ Function ได้ที่นี่

Library import: การเรียกใช้ Library

Python มี Library ที่ขยายความสามารถเฉพาะทางให้เลือกใช้จำนวนมาก เช่น numpy เป็น Library สำหรับการประมวลผลแบบ Array หลายมิติที่มีประสิทธิภาพสูง หรือ pandas เอาไว้จัดการข้อมูลแบบตาราง เป็นต้น

ก่อนจะใช้ Library เหล่านี้ เราต้องติดตั้งเสียก่อน โดยถ้าใช้ Python ปกติ ก็ใช้ pip เป็นตัวติดตั้งและจัดการ Package เช่น pip install numpy ส่วนถ้าใช้ Anaconda ที่แนะนำในตอนแรก ก็ใช้คำสั่ง conda จัดการ เช่น conda install numpy เป็นต้น

การเรียกใช้ Library มีสองวิธีใหญ่ๆ ได้แก่:

1) เรียกโดยตรง โดยใช้ import เช่น:

import numpy

เวลาจะใช้งาน ก็ต้องเรียก numpy ก่อน เช่น:

a = numpy.array([[1, 2], [3, 4]])

2) เรียกโดยการเปลี่ยนชื่อ หรือที่เรียกว่า Alias เพื่อย่นชื่อให้สั้นลงโดยใช้ as จะได้เรียกใช้สะดวก เช่น:

import numpy as np

เวลาจะใช้งาน ก็สามารถเรียก np ได้เลย เช่น:

a = np.array([[1, 2], [3, 4]])

3) เรียกเฉพาะบางฟังก์ชันหรือ Class ที่จะใช้ โดยใช้ from...import เช่น:

from numpy import array

เวลาเรียก ก็เรียกชื่อฟังก์ชัน array เลย เช่น:

a = array([[1, 2], [3, 4]])

สามารถศึกษาเพิ่มเติมเกี่ยวกับการ Import library ได้ที่นี่

ทั้งหมดนี้น่าจะพอให้สามารถเริ่มต้นเขียนโค้ดด้วย Python เรียกใช้ Library ต่างๆ และประยุกต์นำไปแก้ปัญหาต่างๆ ได้

หน้าแรก

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

[Update] Machine Learning ภาคผนวก 2: Python อย่างสั้นที่สุด | สํา น วน คือ อะไร – NATAVIGUIDES

Python อย่างสั้นที่สุด

โดย ชิตพงษ์ กิตตินราดร | มกราคม 2563

บทนี้จะแนะนำ Python สำหรับผู้ที่ไม่มีพื้นฐานการเขียนโค้ดเลย โดยจะอธิบายเฉพาะเรื่องพื้นฐานที่สำคัญจริงๆ อย่างสั้นและกระชับที่สุด เพื่อให้สามารถเริ่มต้นได้และสามารถใช้ Machine learning framework เช่น scikit-learn และ TensorFlow

ขอย้ำอีกรอบ ว่าสิ่งที่แนะนำนี้ไม่ได้ครบถ้วนสมบูรณ์ตามหลักวิชาการ แต่เน้นกระชับ สั้น ง่าย ให้เริ่มต้นเรียนรู้ได้เท่านั้น

Python เป็นภาษาคอมพิวเตอร์แบบ High-level นั่นหมายความว่าเราสามารถสั่งให้ Python ทำสิ่งต่างๆ ได้ในลักษณะที่คล้ายกับภาษาคน โดยไม่ต้องไปสนใจเรื่อง “หลังบ้าน” ของคอมพิวเตอร์มากนัก เช่นการจัดการหน่วยความจำ การระบุประเภทตัวแปร เป็นต้น ทำให้เขียนง่าย อ่านง่าย เข้าใจง่าย

นอกจากนั้น Python ยังเป็นภาษาแบบ Interpret หมายความว่าเวลาเราเรียก Script หรือโปรแกรมที่เขียนด้วย Python เครื่องก็จะตีความ คำนวน และแสดงผลทันที โดยไม่ต้องสั่งแปลงเป็นภาษาเครื่องก่อนจะรันโปรแกรม (เรียกว่าการ Compile) ทำให้สะดวกรวดเร็วในการพัฒนาโปรแกรม แต่แลกมากับการที่ความเร็วและประสิทธิภาพในการคำนวนจะด้อยกว่าภาษาที่ต้อง Compile เช่น C++ เป็นต้น

ปัจจุบัน Python เป็นภาษา “มาตรฐาน” สำหรับงานวิทยาศาสตร์ข้อมูล, AI, Machine learning นอกจากนั้นยังใช้ในอีกหลายวงการ เช่นการสร้างเว็บไซต์ ผ่าน Framework เช่น Django และ Flask เป็นต้น

การติดตั้งและใช้งาน Python

ขั้นแรกให้โหลด Python มาติดตั้งก่อน โดยเข้าไปที่เว็บไซต์ของ Python ไปที่หน้า Downloads และทำตามคำแนะนำได้เลย

อย่างไรก็ตาม ถ้าจะใช้ Python ในงานวิทยาศาสตร์ข้อมูล, AI, Machine learning แนะนำวิธีติดตั้งอีกแบบ คือการติดตั้ง Python และ Library มาตรฐานที่มักจะได้ใช้แบบรวดเดียวจบ ผ่าน Anaconda ก็จะได้ Library พื้นฐาน เช่น numpy, pandas, matplotlib มาเลย ส่วน scikit-learn และ TensorFlow ก็สามารถติดตั้งได้ง่ายๆ โดยใช้คำสั่ง conda ใน Commandline เช่น conda install scikit-learn และ conda install tensorflow เป็นต้น รายละเอียดเรื่องการติดตั้งและจัดการ Package จะไม่อธิบายมาก สามารถอ่านและศึกษาได้โดยตรง

การเขียนโค้ดและเรียกโปรแกรมที่เขียนด้วย Python มีหลายวิธี ดังนี้

  • iPython: เรียก ipython จาก Commandline จะสามารถเขียนโค้ดและรันทีละบรรทัดๆ เหมาะสำหรับการทำลองไอเดียสั้นๆ เร็วๆ หรือใช้ Python เป็นเครื่องคิดเลข
  • IDE: ใช้ Python ผ่านโปรแกรมที่เป็นสภาพแวดล้อมสำหรับการเขียนโค้ดโดยเฉพาะ เช่น PyCharm หรือ Spyder โดยสามารถติดตั้งและเรียกใช้ IDE เหล่านี้ได้เอง
  • Jupyter Lab: ใช้ Python ผ่าน Jupyter Notebook (ปัจจุบันพัฒนาเป็นรุ่นใหม่ เรียกว่า Jupyter Lab) โดยการเรียก jupyter lab จาก Commandline จะเปิดเว็บขึ้นมาในลักษณะ Web-based IDE นั่นเอง สำหรับงาน Data science/ML แนะนำวิธีนี้ เพราะสามารถแยกโค้ดเป็น Cell ย่อยๆ และสามารถใส่ Cell ที่เป็นข้อความธรรมดาเพื่ออธิบายโค้ดของเราควบคู่ไปได้

การคำนวน

เมื่อเรียกใช้ Python ผ่านช่องทางที่ถนัดแล้ว ก็มาเริ่มกันเลย

การคำนวนและการแสดงผล ทำได้ง่ายมาก เช่น:

2*0.5/3

จะได้คำตอบเป็น 0.3333333333333333 สังเกตว่าถ้าเราคำนวนหลายๆ อย่างใน Term เดียว เราอาจจะไม่แน่ใจว่า Python จะคำนวนสัญลักษณ์ไหนก่อน ซึ่งจริงๆ มีลำดับที่ชัดเจน แต่ถ้าไม่อยากจำ แนะนำว่าให้ใส่วงเล็บให้ชัดเจนไปเลย เช่น:

(2*0.5)/3

นอกจากบวก + ลบ - คูณ * หาร / ยังมี Operator ที่น่ารู้ เช่น ยกกำลัง ** Floor division // (หารไม่เอาเศษ) และ Modulus % (หารแล้วเอาแค่เศษ) สามารถดูเพิ่มเติมได้จากเว็บต่างๆ เช่นที่นี่

Variables: การกำหนดตัวแปร

เวลาเราเขียนโค้ด เรามักจะต้องการเก็บข้อมูลบางอย่างเอาไว้ก่อนเพื่อเรียกใช้ภายหลัง เราเรียกที่เก็บข้อมูลนี้ว่าตัวแปร หรีอ Variable

ตัวอย่างเช่น:

age = 50
name = "John"
print(age)
print(name)

จะได้คำตอบคือ:

50
John

สังเกตว่า ค่าของตัวแปรที่เป็นตัวเลข สามารถใส่ได้เลย ส่วนถ้าเป็นตัวหนังสือ ต้องใช้ Quotation ครอบไว้ จะใช้ " หรือ ' ก็ได้

เราใช้ฟังก์ชัน print() เพื่อแสดงผลสิ่งที่อยู่ในวงเล็บ เราเรียกสิ่งที่อยู่ในวงเล็บว่า Argument โดยในที่นี้เราจะใส่ตัวแปรของเราเป็น Argument ทำให้ Python print ค่าของตัวแปรของเราออกมา อนึ่ง Argument อาจมีได้หลายอัน ขึ้นอยู่กับว่า Function นั้นรองรับ Argument อะไรบ้าง โดยเราใช้ Comma , คั่นระหว่างแต่ละ Argument ซึ่งเดี๋ยวเราจะเห็นตัวอย่างเมื่ออธิบาย Function อื่นๆ ต่อไป

ทีนี้เราจะลองใช้ประโยชน์จากตัวแปร โดยเราต้องการที่จะบอกว่า John อายุ 50 ปี:

print(name + ' is ' + str(age) + ' years old.')

ได้คำตอบว่า:

John is 50 years old.

ลองมาดูกันว่าเกิดอะไรขึ้นบ้าง:

  • เครื่องหมาย + ในที่นี้ คือการเอาข้อความ (เรียกว่า String) มาต่อกัน (เรียกการกระทำแบบนี้ว่า Concatenate)
  • การ Concatenate จะต้องทำระหว่างข้อมูลประเภทเดียวกันเท่านั้น เช่น String กับ String ดังนั้น เราจึงต้องแปลงตัวแปร age จากตัวเลขจำนวนเต็ม (Integer หรือ int) ให้เป็นข้อความ (String หรือ str) ด้วยการเรียกฟังก์ชัน str()
  • สังเกตว่าเราเว้นวรรคบางจุด เช่น ก่อนและหลัง is และก่อน years old เพื่อให้ข้อความที่ออกมามีการเว้นวรรคที่ถูกต้อง เพราะการ Concatenate ไม่ได้เว้นวรรคให้เรา

ทีนี้ถ้าเรากำหนดตัวแปรใหม่ เช่น age = 35 แล้วเรียก print เหมือนเดิมอีกรอบ Output ที่ได้ก็จะเปลี่ยนตามตัวแปรใหม่ นั่นก็คือ John is 35 years old.

Data types: ประเภทของข้อมูล

ตัวแปรสามารถเก็บข้อมูลได้หลายประเภท เราจะทำความรู้จักประเภทข้อมูลพื้นฐานที่สำคัญและใช้บ่อยดังนี้:

  • Text str
  • Numerical int, float
  • Sequence list, tuple
  • Mapping dict
  • Boolean bool

String

เรารู้จัก String กันแล้วก่อนหน้านี้ String มีคุณสมบัติที่น่าสนใจบางอย่าง เช่น:

1) String เป็น Array หมายความว่าตัวอักษรแต่ละตัวจะถูกมองว่าเป็นข้อมูล 1 ชิ้น ดังนั้นเราจึงสามารถจัดการตัวอักษรใน String ได้หลากหลาย เช่น:

หาความยาว โดยใช้ฟังก์ชัน len()

a = "Hello, World!"
print(len(a))

ได้คำตอบคือ 13

ตัดเอา Space ว่างท้าย String ออก โดยใช้ Method .strip() (Method คือฟังก์ชันที่ใช้ได้กับตัวแปร โดยการนำไปต่อท้ายตัวแปรได้ทันที เพื่อกระทำการบางอย่างกับข้อมูลในตัวแปรนั้น ลองดูตัวอย่างข้างล่าง)

a = " Hello, World! "
print(a.strip())

ได้คำตอบว่า Hello, World! โดยไม่มี Space หลัง !

แยกคำออกจากกัน โดยใช้ Method .split()

a = "My name is John."
print(a.split())

จะเป็นการแยกประโยคออกเป็นคำๆ โดยแยกที่ Space ได้ผลคือ ['My', 'name', 'is', 'John.'] ทั้งนี้สามารถกำหนดได้ว่าให้แยกที่พบอักษรอะไร เช่น a.split(",") คือให้แยกเมื่อพบ Comma เป็นต้น

สังเกตว่า ['My', 'name', 'is', 'John.'] เป็นข้อมูลประเภท List ซึ่งจะอธิบายภายหลังว่าคืออะไร ตอนนี้เพียงให้รู้ว่า List นี้มีข้อมูล 4 รายการ คือคำแต่ละคำนั่นเอง คั่นด้วย Comma

เลือกเฉพาะบางตัวอักษรตามลำดับที่ เป็นความสามารถที่เรียกว่า Slicing ซึ่งใช้ได้กับทุกอย่างที่มีลักษณะเป็น Array หลักการคือ Python จะกำหนดให้ข้อมูลชิ้นแรกมีรหัส Index 0 และเพิ่มขึ้นทีละ 1 ต่อไปเรื่อยๆ ดังนั้น:

a = "Hello, World!"
print(a[1])

จะได้ e

เราสามารถเลือก Slicing เป็น Range ได้ โดยใช้ Colon : คั่น โดยจะนับ Index เริ่มต้นเป็นชิ้นแรก (Inclusive) แต่ Index ตัวขบขะไม่นับตัวมันเอง (Exclusive) ตัวอย่างเช่น:

a = "Hello, World!"
print(a[2:5])

จะได้ llo

สุดท้าย ถ้าใน String มีเครื่องหมายที่ปกติจะถูกตีความว่ามีความหมายพิเศษ เช่น " เราจะไม่สามารถใส่เครื่องหมายนั้นลงไปได้ตรงๆ ถ้าอยากใส่ ต้องใช้ Backslash \ ไว้ก่อน เราเรียก \ ว่า Escape character ตัวอย่างเช่น:

print("My name is \"John\".")

จะได้ My name is "John".

แถม Escape character ที่มีประโยชน์มาก คือ \n คือการขึ้นบรรทัดใหม่ ส่วน \t คือ Tab

อ่านเพิ่มเติมเกี่ยวกับ String ได้ที่นี่

Int และ Float

Int (Integer) คือจำนวนเต็ม เช่น -1, 0, 5, 100 ส่วน Float คือจำนวนที่มีทศนิยม เช่น -0.12, 5.816497 เป็นต้น เราสามารถดูได้ว่าตัวเลขของเราคือประเภทอะไร โดยใช้ฟังก์ชัน type() เช่น:

x = 1
y = 2.5

print(type(x))
print(type(y))

จะได้:

<class 'int'>
<class 'float'>

เราสามารถแปลงระหว่าง int กับ float ได้ โดยใช้ฟังก์ชัน int() และ float()

List

List เป็นข้อมูลแบบ Array ที่มีสมาชิกหลายตัว สามารถผสมสมาชิกประเภทต่างๆ กันได้ และสามารถสลับตำแหน่ง เปลี่ยนแปลงข้อมูลได้ จึงใช้งานได้หลายวัตถุประสงค์ยืดหยุ่นมาก เราสามารถสร้าง List โดยการใช้ Bracket [] เช่น:

emptylist = []
print(emptylist)

ก็จะได้ List ว่างๆ คือ [] ส่วน List ที่มีสมาชิก ก็ใส่สมาชิกนั้นลงไปเลย คั่นแต่ละตัวด้วย Comma เช่น:

fruitlist = ["apple", "banana", "cherry"]
print(fruitlist)

ก็จะได้ ['apple', 'banana', 'cherry']

สมมุติเราอยากเลือกแค่ banana กับ cherry ก็ใช้ Slicing ได้ เช่น:

fruitlist = ["apple", "banana", "cherry"]
print(fruitlist[1:])

ก็จะได้ ['banana', 'cherry'] สังเกตว่าตอน Slice ถ้าเราไม่ใส่ Index ตัวจบ ก็แปลว่าให้เลือกไปจนถึงสมาชิกตัวสุดท้าย โดยรวมตัวสุดท้ายด้วย ในทางกลับกัน ถ้าไม่ใส่ Index ตัวเริ่ม ก็คือให้เริ่มที่สมาชิกตัวแรกเลย

เราสามารถเปลี่ยนสมาชิกใน List ง่ายๆ เช่น:

fruitlist = ["apple", "banana", "cherry"]
fruitlist[1] = "pineapple"
print(fruitlist)

จะได้ ['apple', 'pineapple', 'cherry'] ทันที

ส่วนถ้าจะเพิ่มสมาชิก ก็ทำได้โดยใช้ Method .append() เช่น:

fruitlist = ["apple", "banana", "cherry"]
fruitlist.append("orange")
print(fruitlist)

จะได้ ['apple', 'banana', 'cherry', 'orange']

นอกจากนี้ยังมีการแทรกสมาชิก ใช้ .insert(index, object) โดยใส่ Index ที่ต้องการแทรกลงไปเป็น Argument ก่อนจะใส่ Object ที่ต้องการแทรก ส่วนการลบสมาชิก ก็สามารถใช้ .remove(object) ซึ่งใส่ชื่อ Object เป็น Argument หรือไม่ก็ .pop(index) ซึ่งใช้หมายเลข Index เป็น Argument (ถ้าไม่ใส่จะหมายถึงให้เอารายการสุดท้ายออก)

ถ้าต้องการลบสมาชิกทั้งหมดใน List ให้เหลือ List ว่างๆ ก็ใช้ .clear()

สุดท้าย เราสามารถเอา List มาต่อกันได้ โดยการใช้เครื่องหมาย + เช่น:

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]

list3 = list1 + list2
print(list3)

จะได้ ['a', 'b', 'c', 1, 2, 3]

สุดท้าย เราสามารถนับจำนวนสมาชิกใน List ได้ โดยใช้ฟังก์ชัน len() เช่นเดียวกับการนับจำนวนตัวอักษรใน String

List จะมีประโยชน์มากเมื่อใช้คู่กับ For loop ซึ่งจะอธิบายในส่วนถัดๆ ไป

สามารถอ่านเรื่อง List เพิ่มเติมได้ที่นี่

Tuple

Tuple เป็นข้อมูลแบบ Array ที่มีสมาชิกหลายตัวคล้ายกับ List ต่างกันที่ Tuple นั้นไม่สามารถเปลี่ยนแปลงข้อมูลข้างในได้ เราสามารถสร้าง Tuple โดยใช้วงเล็บ () เช่น:

emptytuple = ()
print(emptytuple)

ก็จะได้ List ว่างๆ คือ () ส่วนคุณสมบัติอื่นๆ ก็เหมือนกับ List ต่างตรงที่ไม่สามารถเพิ่ม ลบ สิ่งที่อยู่ใน Tuple ได้

อ่านเพิ่มเกี่ยวกับ Tuple ได้ที่นี่

Dictionary

Dictionary เป็นประเภทข้อมูลที่เก็บข้อมูลแต่ละตัวเป็นคู่ ซึ่งประกอบด้วยรหัส (Key) กับค่า (Value) เรียกว่า Key-value pair เราสามารถสร้าง Dictionary ด้วยการใช้วงเล็บปีกนก {} ตัวอย่างเช่น:

profiledict = {
    "name": "John",
    "age": 50,
    "sex": "male"
}

print(profiledict)

จะได้ {'name': 'John', 'age': 50, 'sex': 'male'} สังเกตว่าข้อมูลแต่ละคู่จะใช้ Comma แบ่ง

เราสามารถเรียก Value ของ Key-value pair โดยการเรียก Key ที่ต้องการ โดยเรียกใน Bracket เช่น:

print(profiledict["name"])

ก็จะได้ Value ของ Key "name" นั่นก็คือ "John"

อีกวิธีในการเรียก Value คือการใช้ Method get(key) ก็ได้ผลเหมือนกัน

เราสามารถเปลี่ยน Value ได้ โดยการเรียก Key แล้วกำหนด Value ใหม่โดยใช้เครื่องหมาย = เช่น:

profiledict = {
    "name": "John",
    "age": 50,
    "sex": "male"
}

profiledict["age"] = 35

print(profiledict)

ก็จะได้ {'name': 'John', 'age': 35, 'sex': 'male'} ตามที่ต้องการ

การเพิ่ม Key-value pair ใหม่ใน Dict ให้ทำเหมือนกับการเปลี่ยน Value โดยกำหนด Key และ Value ตามที่ต้องการได้เลย เช่น:

profiledict = {
    "name": "John",
    "age": 50,
    "sex": "male"
}

profiledict["address"] = "Bangkok"

print(profiledict)

จะได้ {'name': 'John', 'age': 50, 'sex': 'male', 'address': 'Bangkok'}

ส่วนการลบ Key-value pair ก็ใช้ Method .pop(key)

การ Loop สมาชิกใน Dictionary โดยปกติจะได้ Key ออกมา แต่ถ้าอยากได้ Value ก็สามารถทำได้ โดยจะอธิบายในส่วน For loop

อ่านเพิ่มเกี่ยวกับ Dictionary ได้ที่นี่

Boolean

Boolean คือข้อมูลที่มีสองค่าเท่านั้น คือ True หรือ False โดย Python จะพิจารณาจาก Expression ที่ใส่ เช่น:

print(10 > 9)
print(10 == 9)
print(10 < 9)

คำตอบคือ:

True
False
False

สังเกตว่า เวลาเปรียบเทียบความเท่ากัน ใช้ == ไม่ใช่ = เพราะ = เป็นเครื่องหมายสำหรับการกำหนดค่าให้กับตัวแปร (Assignment) ไม่ใช่การเปรียบเทียบว่าจริงหรือไม่ (Validation)

สำหรับรายละเอียดอื่นๆ อ่านเพิ่มได้ที่นี่

Conditions: การกำหนดเงื่อนไข

บ่อยครั้งที่เราต้องการให้โค้ดของเรามีความฉลาด เช่นสามารถทำสิ่งหนึ่งภายใต้เงื่อนไขบางอย่าง หรือให้ทำสิ่งเดิมวนซ้ำๆ จนกระทั่งบรรลุถึงเงื่อนไขที่ต้องการ ความสามารถแบบนี้เรียกว่า Conditions หรือบางทีก็เรียกว่า Flow control เป็นหัวใจของการเขียนโค้ด ควรจะเรียนรู้ไว้ให้คล่อง

เราจะทำความรู้จัก Conditions 3 รูปแบบ คือ:

  • If…Else
  • For loop
  • While loop

If…Else

เราสามารถกำหนดให้โปรแกรม เรียกโค้ดบรรทัดหนึ่งๆ ก็ต่อเมื่อเงื่อนไขบางอย่างเป็นจริง

If: การกำหนดเงื่อนไข ทำได้โดยการเขียน if เว้นวรรค ตามด้วย Statement ที่เป็นเงื่อนไข ตามด้วย Colon : เช่น:

a = 10
b = 25

if b > a:
  print("b is greater than a")

เนื่องจากในกรณีนี้ b มากกว่า a ตามเงื่อนไขใน if (statement): Python ก็จะเรียกโค้ดที่อยู่บรรทัดถัดไป โดยจะเรียกเฉพาะบรรทัดที่ถูก Indent เท่านั้น การ Indent ทำได้โดยการกด Tab หรือเคาะ Space 2 หรือ 4 ที

Elif: ถ้าเราต้องการสร้างเงื่อนไขต่อไป ในกรณีที่เงื่อนไขแรกไม่เป็นจริง ก็ใช้ elif ซึ่งย่อมาจาก Else if เช่น:

a = 25
b = 25

if b > a:
    print("b is greater than a")
elif b == a:
    print("b equals a")

Else: แต่ถ้าเราต้องการเพียงแค่จะดักเงื่อนไขที่ไม่เป็นจริงจาก If ด้านบน ก็เพียงใช้ else ดังนี้:

a = 50
b = 25

if b > a:
    print("b is greater than a")
else:
    print("b is not greater than a")

And/Or: ใน Statement เราสามารถใช้ Operator and หรือ or เชื่อม 2 Statement เข้าด้วยกัน เพื่อสร้างเงื่อนไขที่เจาะจงขึ้นได้ โดย and แปลว่าจะต้องเป็นจริงทั้ง 2 Statement ส่วน or เป็นจริง Statement เดียวก็ถือว่าจริง

สามารถศึกษาเพิ่มเติมเกี่ยวกับ If…Else ได้ที่นี่

For loop

For loop ใช้สำหรับการวนโค้ดซ้ำๆ ตามสมาชิกของข้อมูลแบบ Text, Sequence, และ Mapping นั่นก็คือ str, list, tuple, และ dict สำหรับผู้เริ่มต้นอาจจะงง จึงให้ลองดูตัวอย่างดังนี้:

for i in "banana":
    print(i)

จะได้ Output ว่า:

b
a
n
a
n
a

หลักการทำงานของ For loop คือการกำหนดตัวแปรขึ้นมาตัวหนึ่ง เช่น i (นิยมใช้ เพราะย่อมาจาก Iteration แปลว่าการทำซ้ำเป็นรอบ) แล้วกำหนดค่า i ให้เป็นสมาชิกแต่ละตัวตั้งแต่ตัวแรกไปจนถึงตัวสุดท้าย โดยให้กระทำกับ i ตามโค้ดที่ถูก Indent ไว้ เช่นในที่นี้ ก็เพียงให้พิมพ์ค่า i ออกมา โดยการวนแต่ละรอบ จะ Output ออกหนึ่งบรรทัด พอวนรอบถัดไป ก็ Output ออกบรรทัดใหม่ ทำอย่างนี้ไปเรื่อยๆ จนถึงสมาชิกตัวสุดท้าย

ลองมาดู For loop สำหรับ List กัน:

fruitlist = ["apple", "banana", "cherry"]

for i in fruitlist:
    print(i)

จะได้:

apple
banana
cherry

หลายคนอาจสงสัยว่า จะทำอย่างนี้ไปทำไม คำตอบคือมันจะมีประโยชน์เมื่อไปผสมกับอย่างอื่นที่ทำให้ Output นั้นมีความหมาย ตัวอย่างเช่น:

fruitlist = ["apple", "banana", "cherry"]
count = 1

for i in fruitlist:
    print("Fruit number " + str(count) + " is " + i + ".")
    count = count + 1

print("There are " + str(count-1) + " fruit types.")

Output ที่ได้คือ:

Fruit number 1 is apple.
Fruit number 2 is banana.
Fruit number 3 is cherry.
There are 3 fruit types.

อธิบายดังนี้:

  • เรามีข้อมูลตั้งต้นเป็น List ของประเภทผลไม้ เราต้องการให้โปรแกรมระบุลำดับที่ของประเภทผลไม้ พร้อมกับบอกว่าเป็นประเภทอะไร นอกจากนั้น เรายังอยากให้โปรแกรมสรุปว่าสุดท้ายผลไม้ใน List มีทั้งหมดกี่ประเภท
  • เมื่อได้โจทย์แล้ว ก็ต้องวางแผน จะเห็นว่าเราต้องการนับลำดับที่ของผลไม้ โดยให้ตัวเลขเพิ่มขึ้นเรื่อยๆ ดังนั้น เราจะกำหนดตัวแปรสำหรับลำดับที่ที่จะแสดงผล โดยกำหนดไว้เป็น 1 ก่อน ด้วยการกำหนด count = 1
  • จากนั้นก็เริ่มวน For loop โดยใน Loop ให้พิมพ์ count และ i ซึ่งก็คือชื่อผลไม้ใน List นั่นเอง
  • ตอนเราจะจบ Loop แต่ละรอบ เราจะต้องเปลี่ยนตัวแปร count ให้เพิ่มขึ้นรอบละ 1 ซึ่งทำได้โดยการกำหนด count = count + 1 หรือจะย่อว่า count += 1 ก็ได้
  • ดังนั้น พอผ่านรอบแรกมาถึงจุดนี้ count จะเท่ากับ 2 เมื่อ For loop วนรอบสอง ก็จะแสดงค่า count ของรอบนี้ เป็น 2 ตามที่ต้องการ ซึ่งจับคู่กับ banana ทำอย่างนี้ไปเรื่อยๆ จนจบ List
  • สุดท้าย เราจะสรุปจำนวนประเภทผลไม้ ซึ่งก็คือ count แต่ต้องลบ 1 เพราะรอบสุดท้าย คือรอบที่ 3 ได้จบรอบด้วยการบวก count ไปอีก 1 ทำให้ count ตอนจบเท่ากับ 4 ตอนพิมพ์จำนวนสรุปตอนจบนี้ ต้องทำ “นอก Loop” นั่นคือให้กลับไปสร้าง Statement ที่ไม่ได้อยู่ใน Indent นั่นเอง เพราะถ้ายังอยู่ใน Indent โปรแกรมก็จะเรียกโค้ดบรรทัดนี้ทุกครั้งที่วน Loop ซึ่งไม่ใช่สิ่งที่เราต้องการ
  • อนึ่ง วิธีการสรุปจำนวนรายการใน List ที่ง่ายกว่านั้น คือการใช้ฟังก์ชัน len(object) เช่น print("There are " + str(len(fruitlist)) + " fruit types.") สังเกตว่าเราใช้ str() คลุมรอบ len() อีกที เพราะ len() ให้ผลเป็นตัวเลข ซึ่งเอามา Concatenate กับ Text ไม่ได้ ต้องเปลี่ยนตัวเลขให้เป็น str เสียก่อน

เราสามารถหยุด For loop ได้ด้วยการใช้ break และ continue

1) break จะหยุด For loop ก่อนที่จะวนครบทุกรายการ โดยจะรันรายการล่าสุดเป็นรายการสุดท้าย:

fruits = ["apple", "banana", "cherry"]
for i in fruits:
    print(i)
    if i == "banana":
        break

จะได้:

apple
banana

2) continue จะข้ามรายการล่าสุด แล้วไปต่อที่รายการถัดไป:

fruits = ["apple", "banana", "cherry"]
for i in fruits:
    if i == "banana":
        continue
    print(i)

จะได้:

apple
cherry

สามารถศึกษาเพิ่มเติมเกี่ยวกับ For loop ได้ที่นี่

While loop

While loop เป็นการวนซ้ำตราบใดที่เงื่อนไขยังคงเป็นจริง เช่น:

i = 1
while i < 6:
    print(i)
    i += 1

จะได้:

1
2
3
4
5

การใช้ While loop ให้ระวังอย่าลืมบวก i เพิ่ม เพื่อให้มีจุดที่ Loop จะวนจนไปชนเงื่อนไขที่ไม่เป็นจริง มิฉะนั้น หากเงื่อนไขเป็นจริงเสมอ While loop ็จะวนตลอดกาล

การหยุด While loop สามารถใช้ break และ continue ได้เช่นเดียวกับ For loop

สามารถศึกษาเพิ่มเติมเกี่ยวกับ While loop ได้ที่นี่

Function: ฟังก์ชัน

Function คือกลุ่มโค้ดที่จะรันต่อเมื่อถูกเรียกใช้เท่านั้น การสร้างฟังก์ชัน ให้ใช้ def เว้นวรรค ตามด้วยชื่อฟังก์ชันที่ต้องการ ตามด้วย Colon : ตัวอย่างเช่น:

def greeting():
    print("Hello!")

พอจะเรียกฟังก์ชัน ก็เพียงเรียก greeting() ก็จะได้:

Hello!

สังเกตว่าที่ผ่านมา เรารู้จักกับฟังก์ชันที่มาพร้อมกับ Python หลายตัวแล้ว เช่น str() หรือ len() ฟังก์ชันเหล่านี้ก็เหมือนกับฟังก์ชันที่เราสร้างขึ้นเอง ต่างกันที่ Python เตรียมมาให้เราแล้วเท่านั้นเอง

Argument

เราสามารถใส่ข้อมูลเข้าไปในฟังก์ชัน เพื่อให้ฟังก์ชันทำอะไรบางอย่างกับข้อมูล แล้วให้ผลลัพธ์ออกมาได้ โดยผลลัพธ์ก็สามารถออกมาเป็นข้อมูลได้เช่นกัน ข้อมูลที่เราใส่ในฟังก์ชัน เรียกว่า Argument (บางทีก็เรียกว่า Parameter เวลาพูดถึงตัวแปรที่อยู่ในวงเล็บตอนสร้างฟังก์ชัน) โดยใส่ในวงเล็บที่ต่อท้ายชื่อฟังก์ชันตอนเราสร้างฟังก์ชัน ตัวอย่างเช่น:

def greeting(name):
    print("Hello, " + name + "!")

เวลาเรียกฟังก์ชัน ก็ใส่ Argument ที่เราต้องการลงไป เช่น:

greeting("John")

ก็จะได้:

Hello, John!

ถ้าเรากำหนด Argument กี่ตัวตอนสร้าง Function ตอนเรียกเราก็ต้องใส่ Argument จำนวนเท่ากัน เข่น:

def greeting(fname, lname):
    print("Hello, " + fname + " " + lname + "!")

เวลาเรียกฟังก์ชัน ก็ใส่ Argument ทั้งสองลงไปตามลำดับ เช่น:

greeting("John", "Doe")

ก็จะได้:

Hello, John Doe!

หากเราไม่รู้ว่าตอนเรียกฟังก์ชัน จะมี Argument ที่ป้อนเข้าไปกี่ตัว เราสามารถทำดังนี้ตอนสร้างฟังก์ชัน:

1) ใช้ Arbitary argument หรือ *args โดยการใส่ * ก่อนชื่อ Parameter ตอนสร้างฟังก์ชัน วิธีนี้จะเป็นการส่ง Tuple เข้าไปในในฟังก์ชัน โดยไม่ต้องระบุจำนวน Argument ที่แน่นอน ตัวอย่างเช่น:

def fruitlist(*fruit):
    print("The last fruit is " + fruit[-1] + ".")

fruitlist("apple", "banana", "cherry")

ก็จะได้ The last fruit is cherry. สังเกตว่าในฟังก์ชัน เราเลือกผลไม้รายการสุดท้ายโดยการ Slice ด้วย [-1] ซึ่งหมายถึงรายการสุดท้าย

2) ใช้ Keyword argument หรือ kwargs โดยการใส่ Key-value เข้าไปในฟังก์ชัน โดยตอนเรียกให้เรียก Key ก็จะได้ Value วิธีนี้ต้องระบุจำนวน Argument ที่แน่นอน เช่น:

def fruitlist(fruit1, fruit2, fruit3):
    print("The last fruit is " + fruit3 + ".")

fruitlist(fruit1 = "apple", fruit2 = "banana", fruit3 = "cherry")

ก็จะได้ The last fruit is cherry. เช่นเดิม

3) ใช้ Arbitary keyword argument หรือ **kwargs โดยการใส่ ** ก่อนชื่อ Parameter ตอนสร้างฟังก์ชัน วิธีนี้จะเป็นการส่ง Dictionary ของ Argument เข้าไปในฟังก์ชัน โดยตอนเรียกก็เรียก Key จะได้ Value ออกมา วิธีนี้ไม่ต้องระบุจำนวน Argument ที่แน่นอน เช่น:

def fruitlist(**fruits):
    print("The last fruit is " + fruits["fruit3"] + ".")

fruitlist(fruit1 = "apple", fruit2 = "banana", fruit3 = "cherry")

ก็จะได้ The last fruit is cherry. เช่นเดียวกัน

ใช้ List และ Dictionary เป็น Argument

เราสามารถใส่ List หรือ Dictionary ที่กำหนดไว้แล้ว ลงไปเป็น Argument ได้ เช่น:

fruits = ["apple", "banana", "cherry"]

def fruitlist(fruits):
    print("The last fruit is " + fruits[-1] + ".")

fruitlist(fruits)

หรือ:

fruitdict = {
    "fruit1": "apple",
    "fruit2": "banana",
    "fruit3": "cherry"
}

def fruitlist(fruitdict):
    print("The last fruit is " + fruitdict["fruit3"] + ".")

fruitlist(fruitdict)

ก็จะได้ The last fruit is cherry. เช่นเดียวกันทั้งหมด

Return value

เราสามารถให้ฟังก์ชัน Output ค่าออกมาได้ เช่น:

def bmi(weight, height):
    return weight/(height**2)

bmi(70, 1.72)

สามารถศึกษาเพิ่มเติมเกี่ยวกับ Function ได้ที่นี่

Library import: การเรียกใช้ Library

Python มี Library ที่ขยายความสามารถเฉพาะทางให้เลือกใช้จำนวนมาก เช่น numpy เป็น Library สำหรับการประมวลผลแบบ Array หลายมิติที่มีประสิทธิภาพสูง หรือ pandas เอาไว้จัดการข้อมูลแบบตาราง เป็นต้น

ก่อนจะใช้ Library เหล่านี้ เราต้องติดตั้งเสียก่อน โดยถ้าใช้ Python ปกติ ก็ใช้ pip เป็นตัวติดตั้งและจัดการ Package เช่น pip install numpy ส่วนถ้าใช้ Anaconda ที่แนะนำในตอนแรก ก็ใช้คำสั่ง conda จัดการ เช่น conda install numpy เป็นต้น

การเรียกใช้ Library มีสองวิธีใหญ่ๆ ได้แก่:

1) เรียกโดยตรง โดยใช้ import เช่น:

import numpy

เวลาจะใช้งาน ก็ต้องเรียก numpy ก่อน เช่น:

a = numpy.array([[1, 2], [3, 4]])

2) เรียกโดยการเปลี่ยนชื่อ หรือที่เรียกว่า Alias เพื่อย่นชื่อให้สั้นลงโดยใช้ as จะได้เรียกใช้สะดวก เช่น:

import numpy as np

เวลาจะใช้งาน ก็สามารถเรียก np ได้เลย เช่น:

a = np.array([[1, 2], [3, 4]])

3) เรียกเฉพาะบางฟังก์ชันหรือ Class ที่จะใช้ โดยใช้ from...import เช่น:

from numpy import array

เวลาเรียก ก็เรียกชื่อฟังก์ชัน array เลย เช่น:

a = array([[1, 2], [3, 4]])

สามารถศึกษาเพิ่มเติมเกี่ยวกับการ Import library ได้ที่นี่

ทั้งหมดนี้น่าจะพอให้สามารถเริ่มต้นเขียนโค้ดด้วย Python เรียกใช้ Library ต่างๆ และประยุกต์นำไปแก้ปัญหาต่างๆ ได้

หน้าแรก

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.


สำนวนชวนคิด ภาษิตสอนใจ – สื่อการเรียนการสอน ภาษาไทย ป.4


พบสื่อการเรียนการสอนมากมายที่
http://www.kruao.com (ครูโอ๋)
สื่อการเรียนการสอน ภาษาไทย ป.4
เรื่อง สำนวนชวนคิด ภาษิตสอนใจ
ถ้าสื่อนี้ดีมีประโยชน์อยากให้ช่วยกดไลค์ หรือ กดติดตามครับ
จะได้มีคนเห็นสื่อการเรียนการสอนนี้มากขึ้น
เพื่อเป็นประโยชน์ไม่มากก็น้อย ในการเรียนการสอน
การทบทวน เป็นสื่อการสอน เป็นสื่อการเรียน ถือว่าท่าน
ได้ช่วยสนับสนุนการเรียนการสอนให้เด็กไทย หรือคนที่ยัง
ไม่รู้ว่ามีช่องเผื่อแพร่สื่อเหล่านี้ครับผม
เป็นสื่อการเรียนการสอนที่นำมาจาก
โครงการแท็บเล็ตพีซีเพื่อการศึกษาไทย
(OTPC : One Tablet Per Child)
จัดทำโดยสำนักงานเทคโนโลยีเพื่อการเรียนการสอน
สำนักงานคณะกรรมการการศึกษาขั้นพื้นฐาน

นอกจากการดูบทความนี้แล้ว คุณยังสามารถดูข้อมูลที่เป็นประโยชน์อื่นๆ อีกมากมายที่เราให้ไว้ที่นี่: ดูความรู้เพิ่มเติมที่นี่

สำนวนชวนคิด ภาษิตสอนใจ - สื่อการเรียนการสอน ภาษาไทย ป.4

สำนวนที่เกี่ยวกับนก


สำนวนที่เกี่ยวกับนกสำนวนสุภาษิตดอกสร้อยแสนงามวรรณคดีลำนำ
1.นกปีกหัก หมายถึง คนที่ตกอยู่ในฐานะย่ำแย่หรือลำบาก
2.นกมีหูหนูมีปีก หมายถึง คนกลับกลอกเข้าพวกได้ทุกฝ่ายเพื่อประโยชน์ของตน
3.นกสองหัว หมายถึง ทำตัวเข้าเป็นพวกทั้งสองฝ่ายโดยหวังประโยชน์เพื่อตนเอง
4.เสียงนกเสียงกา หมายถึง ความคิดเห็นไม่สำคัญ ความคิดเห็นของคนไม่มีอำนาจ
5.ปล่อยนกปล่อยกา หมายถึงปล่อยให้เป็นอิสระ ไม่เอาผิดหรือไม่เอาความ
6.ยิงปืนนัดเดียวได้นกสองตัว หมายถึง ทําอย่างเดียวได้ผล ๒ อย่าง
7.นกน้อยทำรังแต่พอตัว หมายถึง ทำอะไรพอเหมาะกับฐานะหรือความสามารถของตน
8.ชี้นกเป็นนก ชี้ไม้เป็นไม้ หมายถึง ผูัมีอำนาจว่าอย่างไรผู้น้อยก็ว่าตามนั้น หรือว่าอะไรว่าตามกัน

สำนวนที่เกี่ยวกับนก

สำนวน สุภาษิต คำพังเพย


สำนวน สุภาษิต คำพังเพย

สจ.ดำ ฆ่ายกครัว 4 ศพ สมรักษ์ คำสิงห์ โผล่! เชื่อพัวพันโควต้าลอตเตอรี่ล็อตใหญ่ l EP.1072 l 11 พ.ย.64


มาร่วมตีแผ่กระแสที่แรงที่สุดในสังคม กับรายการโหนกระแส
เวลา จันทร์ศุกร์ เวลา 12.35 น. ทางช่อง3HD กดเลข33
กดติดตามได้ที่
Fan Page : https://www.facebook.com/HKS2017/
Twitter : https://twitter.com/HoneKrasae

สจ.ดำ ฆ่ายกครัว 4 ศพ สมรักษ์ คำสิงห์ โผล่! เชื่อพัวพันโควต้าลอตเตอรี่ล็อตใหญ่ l EP.1072 l 11 พ.ย.64

พงษ์สิทธิ์ คำภีร์ – ใครจะเข้าใจ【Official Audio】


\”ใครจะเข้าใจ\” บทเพลงที่เกี่ยวกับเรื่องราวความรักของผู้หญิงคนหนึ่งที่ตัดสินใจพลีกายแลกกับเงินเพื่อความอยู่รอดของตนเองและคนข้างหลัง จากอัลบั้ม อยากขึ้นสวรรค์ ของปู พงษ์สิทธิ์ คำภีร์ เจ้าพ่อเพลงรักเพื่อชีวิต
Remastered by Woody Pornpitaksuk @Westside Mastering
เนื้อเพลง
รู้ว่าหลอกเธอไว้ และหวังว่าเธอเข้าใจ
ดั่งว่าเดินทางมาไกล ไกลจนกู่ไม่กลับ
รู้ว่านี่น่ะร้าย เป็นตายเธอคงไม่ยอม
เราเคยประนีประนอม ออมชอมกันได้ทุกอย่าง
เพราะเธอเคยบอก อย่าทำกับฉันอย่างนี้
เพราะเธอเคยบอก ว่าเธอทนไม่ได้
ไม่รู้สึกได้ไหม เธอบอกใครเล่าจะทนไหว
มีเลือดมีเนื้อหัวใจ ให้ตายซะยังดีกว่า
หิวท้องกิ่วฉันล้า ถึงออกมาไล่ล่าหาเงิน
หมดสิ้นความคิดอับจน ที่เหลือก็คือเรือนร่าง
เพราะเธอเคยบอก อย่าทำกับฉันอย่างนี้
เพราะเธอเคยบอก ว่าเธอทนไม่ได้
แล้วฉันล่ะ ใครเคยเข้าใจฉันไหม
แล้วฉันล่ะ ใครเคยคิดถึงฉันไหม
ฉันต้องนอนกับชาย ที่ฉันไม่เคยรู้จัก
ฉันต้องพลีร่างกายแลกเงิน เลี้ยงใครต่อใครตั้งกี่ร้อยคน
เพราะเธอเคยบอก อย่าทำกับฉันอย่างนี้
เพราะเธอเคยบอก ว่าเธอทนไม่ได้
แล้วฉันล่ะ ใครเคยเข้าใจฉันไหม
แล้วฉันล่ะ ใครเคยคิดถึงฉันไหม
ฉันต้องนอนกับชาย ที่ฉันไม่เคยรู้จัก
ฉันต้องพลีร่างกายแลกเงิน เลี้ยงใครต่อใครตั้งกี่ร้อยคน
เธอกำลังไป มองคล้ายฉันเป็นกากเดน
ทุกอย่างเป็นดั่งควรเป็น ฉันเห็นสมควรทุกอย่าง
น้ำตาอยู่ตรงไหน อยู่ในใจไม่ไหลออกมา
ไม่เชื่อคือโชคชะตา นี่คือสิ่งที่ฉันทำและฉันเป็น
【 ช่องทางติดตามข่าวสาร ปู พงษ์สิทธิ์ คำภีร์ 】
Facebook ► http://www.facebook.com/pupongsitofficial
Instagram ► http://instagram.com/pupongsitofficial
LINE ► @PuPongsitOfficial หรือ http://line.me/ti/p/%40pupongsitofficial
TikTok ► https://vt.tiktok.com/ZSJBeAeu5/

พงษ์สิทธิ์ คำภีร์ - ใครจะเข้าใจ【Official Audio】

นอกจากการดูบทความนี้แล้ว คุณยังสามารถดูข้อมูลที่เป็นประโยชน์อื่นๆ อีกมากมายที่เราให้ไว้ที่นี่: ดูวิธีอื่นๆLEARN FOREIGN LANGUAGE

ขอบคุณมากสำหรับการดูหัวข้อโพสต์ สํา น วน คือ อะไร

Leave a Reply

Your email address will not be published. Required fields are marked *