ในตอนก่อนหน้านี้เราได้เรียนรู้เรื่องประเภทข้อมูลของภาษา python ไปแล้ว ในบทความนี้เราจะเริ่มได้เห็นพลังและความสามารถที่น่าสนใจของการเขียนโปรแกรมซักที (ก่อนจะได้เห็นพลังขั้นสุดตอนเรียนเรื่องพวก Function และ Library ต่างๆ)
นั่นก็คือความสามารถในการควบคุม Flow การไหลของคำสั่งใน Program ของเรา เช่น
- สามารถทำงานที่แตกต่างกันตามเงื่อนไขที่กำหนดได้ = แยกการตัดสินใจด้วยคำสั่งกลุ่ม if
- สามารถทำงานอะไรซ้ำๆ หรือทำตามเงื่อนไขที่กำหนดได้ โดยไม่ต้องสั่งคำสั่งนั้นเองหลายๆ รอบ = การวน Loop ด้วย for, while (ซึ่งการวน Loop เป็น Concept ที่อาจจะไม่คุ้นเคยกับคนใช้ Excel ที่ไม่ได้เขียนโปรแกรมมาก่อน)
ซึ่งสิ่งเหล่านี้เป็นจุดเริ่มต้นของการทำอะไรที่ Advance มากขึ้นต่อไปในอนาคตได้ เรามาดูรายละเอียดทีละกลุ่มกัน
เงื่อนไขกลุ่ม if ใน Python
อย่างที่บอกไปแล้วว่าการเขียน if คือ การแยกการตัดสินใจให้ทำงานแตกต่างกันตามเงื่อนไขที่กำหนดได้ ซึ่งก็เหมือนฟังก์ชัน IF ใน Excel นั่นแหละ ซึ่งต้องมีเรื่องของเงื่อนไขที่จะเช็ค และสามารถกำหนดได้ว่าถ้าเงื่อนไขเป็นจริงจะทำอะไร ถ้าเงื่อนไขเป็นเท็จจะทำอะไร แค่ใน Excel ใช้เป็นฟังก์ชัน แต่ Python ใช้เป็น Statement แทน
ใน python จะเขียนแบบนี้ (เครื่องหมาย colon : หลังเงื่อนไขต่างๆ และการย่อหน้าใน action ที่จะทำ “สำคัญมาก” ใน Python)
if เงื่อนไข:
คำสั่งกรณีเงื่อนไขเป็นจริง
else:
คำสั่งกรณีเงื่อนไขเป็นเท็จ
เช่น ใน Excel เขียนว่า
=IF(A1>50, "ผ่าน", "ไม่ผ่าน")
ใน python จะเป็นแบบนี้
A1=73
if A1>50:
B1="ผ่าน"
else:
B1="ไม่ผ่าน"
print(B1)

แต่ใน Python จริงๆ เขียน if แบบไม่ต้องมี else ก็ได้ เช่น
A1=73
if A1>100:
print("เยี่ยมมาก")
print("จบ")

รวมถึงสามารถใส่หลายๆ เงื่อนไขด้วย elif (else if) ไปเรื่อยๆ กี่รอบก็ได้ เช่น
Score=73
if Score>=80:
Grade="A"
elif Score>=70:
Grade="B"
elif Score>=60:
Grade="C"
elif Score>=50:
Grade="D"
else:
Grade="F"
print(Grade)

เงื่อนไขเพื่อการวน Loop ใน Python : For Loop
การวนลูปแบบแรกที่ผมจะขอพูดถึงก็คือ for loop ซึ่งสามารถทำงานซ้ำๆ ได้หลายๆ รอบตามต้องการ และยังทำงานร่วมกับ Data Types ที่เป็นชุดข้อมูลเช่น พวก list, tuple, dictionary, set ก็ได้ด้วย รวมถึงจริงๆ แล้วก็สามารถทำงานกับ string ได้ด้วย (มองว่า string คือชุดข้อมูลที่รวมเอาแต่และ character มาไว้ด้วยกันเป็นข้อความ)
for แบบทำงานซ้ำๆ หลายๆ รอบตามจำนวนที่ระบุ
มาดูเรื่องการทำงานซ้ำๆ หลายๆ รอบตามจำนวนที่ระบุก่อนครับ
สมมติผมต้องการ print คำว่า “เทพมาก” ออกมา 6 รอบ วิธีแรกที่ทำได้คือแบบนี้
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")

ซึ่งเป็นวิธีที่ไม่ยืดหยุ่นเอาซะเลย และถ้าผมอยากทำร้อยรอบผมต้องตายแน่ๆ … วิธีที่ดีกว่าคือใช้ for มาช่วย ร่วมกับคำสั่ง range(ตัวเลข) ในรูปแบบที่ว่า
for ตัวแปร in range(ตัวเลข):
คำสั่งที่ต้องการทำ
โดยที่คำสั่ง range มีวิธีทำงานดังนี้
- range(6) จะออกมาเป็นเลข sequence ตั้งแต่ 0 แต่ไม่รวม 6 นั่นคือ 0,1,2,3,4,5 (ไม่รวม6)
- range(2, 6) จะออกมาเป็นเลข sequence ตั้งแต่ 2 แต่ไม่รวม 6 นั่นคือ 2,3,4,5 (ไม่รวม6)
- range(2, 17, 3) จะออกมาเป็นเลข sequence ตั้งแต่ 2 แต่ไม่รวม 17 และเพิ่มทีละ 3 นั่นคือ 2,5,8,11,14 (ไม่รวม 17)
ซึ่งแบบที่ใช้บ่อยสุดคือแบบแรก คือ range(ตัวเลข) อยากทำงานกี่รอบก็ใส่ไปเท่านั้นเลย เช่น
# range(6) คือ 0,1,2,3,4,5 (ไม่รวม6)
for num in range(6): #ใช้ตัวแปรอะไรแทนคำว่า num ก็ได้
print("เทพมาก")

ซึ่งตัวแปรหน้า in จะเป็นสิ่งที่แทนตัวเลขใน range แต่ละตัว เราสามารถเอาตัวแปรนั้นๆ มาอ้างอิงได้ในคำสั่งแต่ละรอบได้อีก เช่น
# range(6) คือ 0,1,2,3,4,5 (ไม่รวม6)
for num in range(6):
#เอาตัวแปร num มาใช้ได้
print("เทพมาก จากตัวแปรเลข "+str(num)+", ซึ่งเป็นการรันครั้งที่ "+str(num+1))

for แบบทำงานร่วมกับข้อมูลเป็นชุด
มาดูการทำงานร่วมกับ Data Types ที่เป็นชุดข้อมูล เช่น list, string และ dictionary กันครับ
มาดูการทำงานร่วมกับ list ก่อนครับ
ซึ่งคล้ายๆ ตอนที่เราใช้กับ range นั่นแหละ แต่คราวนี้เราสามารถใช้ตัวแปรอ้างอิงแต่ละ item ใน list นั้นๆ ได้เลย
myList = ["Eren", "Mikasa", "Armin", "Levi"]
for item in myList: #ใช้ตัวแปรอะไรแทนคำว่า item ก็ได้
print(item)

ซึ่งค่อนข้างสะดวกคือเราไม่จำเป็นต้องมาใช้ myList[index] ในการอ้างอิงแต่ละ item ก็ได้ แถมไม่ต้องนับจำนวน item ด้วยซ้ำ
แต่ถ้าอยากจะอ้างด้วยเลข index จริงๆ สามารถทำได้ด้วยการประยุกต์ใช้ len(myList) เพื่อนับจำนวน item แล้วส่งไปให้ range ใช้ต่อ ดังนี้
myList = ["Eren", "Mikasa", "Armin", "Levi"]
#ถ้าจะใช้ concept ของเลข index ก็จะเป็นแนวๆ นี้
#len(myList) คือนับว่ามีกี่ item แล้วค่อยส่งไปให้ range อีกที
for i in range(len(myList)):
print(myList[i])

มาดูการทำงานร่วมกับ string กันต่อครับ
ก่อนอื่นเราต้องรู้ก่อนว่าจริงๆ แล้ว String ก็คือชุดข้อมูลที่ประกอบไปด้วยอักขระแต่ละตัวประกอบกันอยู่ และเราสามารถอ้างอิงด้วยเลข index ได้ด้วย คล้ายๆ list เลย เช่น
myString="ThepExcel"
print(myString[1]) #ได้ index1 คือตัวที่ 2
print(myString[1:4]) #ได้ตั้งแต่ index1 แต่ไม่ถึง 4 คือตัวที่ 2 ถึง 4

ทีนี้ถ้าเราใช้ for กับข้อมูล string จะเป็นยังไงกันนะ? มาดูกัน
myString="ThepExcel"
for c in myString:
print(c)

จะเห็นว่าเราสามารถเข้าถึงอักขระแต่ละตัวใน string นั้นๆ ได้เลยแบบง่ายๆ
แต่ถ้าอยากใช้เลข index ก็ต้องใช้ range+len เช่นเคย
myString="ThepExcel"
for num in range(len(myString)):
print(myString[num])

ต่อไปเป็นการทำงานร่วมกับ dictionary ครับ
ถ้าเราใช้ for กับ dictionary เฉยๆ ตัวแปร จะหมายถึง key ของ dictionary นั้นๆ
myDict = {"FirstName" : "Sira", "LastName" : "Ekabut", "Age" : 37, "Height" : 170 }
for x in myDict: #อ้าง myDict เฉยๆ x จะหมายถึง key ของ dictionary นั้นๆ
print(x) #print key ออกมา
print('--------')
for x in myDict: #อ้าง myDict เฉยๆ x จะหมายถึง key ของ dictionary นั้นๆ
print(myDict[x]) #print value ออกมา

ถ้าอยากได้ทั้ง Key และ Value แบบง่ายๆ ให้ใช้ตัวแปร 2 ตัวมารับค่าแบบนี้ (x,y) in myDict.items() (เรียกว่าการ Unpack)
myDict = {"FirstName" : "Sira", "LastName" : "Ekabut", "Age" : 37, "Height" : 170 }
for (x,y) in myDict.items(): #อ้าง myDict.items() จะได้ตัวแปร 2 ชุด
คือ key กับ value
print(x) #print x ออกมา
print(y) #print y ออกมา
print(x,y) #print x คู่กับ y
print('---')

เงื่อนไขเพื่อการวน Loop ใน Python : While Loop
เป็นการทำคำสั่งไปเรื่อยๆ ในขณะที่เงื่อนไขที่กำหนดยังเป็นจริงอยู่
i = 1 #ให้ i เป็น 1
while i <= 6: #กำหนดเงื่อนไขให้ทำในขณะที่ i ไม่เกิน 6
print("เทพมาก" + str(i))
i = i+1 #เพิ่ม i ก่อนจะจบ action

ซึ่งแน่นอนว่าจะเอาไปใช้กับพวก list, dict, string อะไรก็ได้ ถ้าอยากทำ แต่แน่นอนว่ามันยากกว่าใช้ for แหละเนอะ
myList = ["Eren", "Mikasa", "Armin", "Levi"]
i = 0 #ให้ i เป็น 0 ให้สอดคล้องกับ index
while i < len(myList): #กำหนดเงื่อนไขให้ทำในขณะที่ i ไม่เกินจำนวนตัวใน Mylist
print(myList[i])
i = i+1 #เพิ่ม i ก่อนจะจบ action

คำสั่งที่ควรรู้จักเพิ่มเติมเวลาใช้ while loop นั้นมีอีก 2 ตัวหลักๆ ดังนี้
- break : เป็นคำสั่งให้จบการวน loop ไปเลย
- continue : เป็นคำสั่งให้ทำต่อใน loop ถัดไปทันที
n = 0
while n < 10:
n=n+1
if n == 2:
continue #ไป loop ต่อไปเลย โดยไม่ได้ print
elif n == 7:
break #ออกจาก loop ไปเลย โดยไม่ได้ print
print(n)
print('จบ Loop')

ดูเหมือนว่า while จะเหมาะกับการ monitor สถานการณ์บางอย่าง ว่าถ้ามันยังคงเป็นจริงอยู่ก็จะทำไปเรื่อยๆ หรือไม่ก็อาจกลับด้านคือใช้ดักจับสถานการณ์บางอย่าง ว่าถ้าเกิดเหตุการณ์นั้นแล้วค่อยให้ไปต่อ แบบนั้นก็ได้ เช่น ออกแบบเกมทายใจให้ทายเลขจนกว่าจะถูก เป็นต้น
จบตอน
ตอนนี้เนื้อหาเริ่มมีความซับซ้อนขึ้นนิดนึง (แต่คิดว่ายังไม่ยากเกินไป) ซึ่งที่ผ่านมาเรามี action ที่ทำได้แค่การ print โง่ๆ อยู่ เดี๋ยวตอนต่อ ไปเราจะมาเรียนรู้กันว่า จะสั่งทำอะไรกับข้อมูลเจ๋งๆ ได้บ้างเนอะ
สารบัญ Series Python
- หัดเขียนโปรแกรม Python สำหรับคนเป็น Excel มาก่อน : ตอนที่ 1
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 2 – ประเภทข้อมูล (Data Types)
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 5 – การสร้างฟังก์ชันขึ้นมาใช้เอง (Function)
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 6 – การเรียกใช้ Module / Packages เจ๋งๆ ที่มีคนสร้างไว้แล้ว
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 7 – Web Scraping ด้วย Beautiful Soup
- แนวทางการใช้ Python ใน Power BI
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 8 – การสร้างกราฟด้วย Matplotlib
- รวม Link สอน Python / Programming / AI/ Machine Learning แบบฟรีๆ