เทพเอ็กเซล ช่วย "ปลุกเทพ Excel ในตัวคุณ"
0
  • No products in the cart.
Python

หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if

Python การวน Loop และ เงื่อนไข if

ในตอนก่อนหน้านี้เราได้เรียนรู้เรื่องประเภทข้อมูลของภาษา python ไปแล้ว ในบทความนี้เราจะเริ่มได้เห็นพลังและความสามารถที่น่าสนใจของการเขียนโปรแกรมซักที (ก่อนจะได้เห็นพลังขั้นสุดตอนเรียนเรื่องพวก Function และ Library ต่างๆ)

นั่นก็คือความสามารถในการควบคุม Flow การไหลของคำสั่งใน Program ของเรา เช่น

  1. สามารถทำงานที่แตกต่างกันตามเงื่อนไขที่กำหนดได้ = แยกการตัดสินใจด้วยคำสั่งกลุ่ม if
  2. สามารถทำงานอะไรซ้ำๆ หรือทำตามเงื่อนไขที่กำหนดได้ โดยไม่ต้องสั่งคำสั่งนั้นเองหลายๆ รอบ = การวน 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 สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 1

แต่ใน Python จริงๆ เขียน if แบบไม่ต้องมี else ก็ได้ เช่น

A1=73
if A1>100:
  print("เยี่ยมมาก")
print("จบ")
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 2

รวมถึงสามารถใส่หลายๆ เงื่อนไขด้วย 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)
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 3

เงื่อนไขเพื่อการวน Loop ใน Python : For Loop

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

for แบบทำงานซ้ำๆ หลายๆ รอบตามจำนวนที่ระบุ

มาดูเรื่องการทำงานซ้ำๆ หลายๆ รอบตามจำนวนที่ระบุก่อนครับ

สมมติผมต้องการ print คำว่า “เทพมาก” ออกมา 6 รอบ วิธีแรกที่ทำได้คือแบบนี้

print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 4

ซึ่งเป็นวิธีที่ไม่ยืดหยุ่นเอาซะเลย และถ้าผมอยากทำร้อยรอบผมต้องตายแน่ๆ … วิธีที่ดีกว่าคือใช้ 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("เทพมาก")
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 5

ซึ่งตัวแปรหน้า in จะเป็นสิ่งที่แทนตัวเลขใน range แต่ละตัว เราสามารถเอาตัวแปรนั้นๆ มาอ้างอิงได้ในคำสั่งแต่ละรอบได้อีก เช่น

# range(6) คือ 0,1,2,3,4,5 (ไม่รวม6)

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

for แบบทำงานร่วมกับข้อมูลเป็นชุด

มาดูการทำงานร่วมกับ Data Types ที่เป็นชุดข้อมูล เช่น list, string และ dictionary กันครับ

มาดูการทำงานร่วมกับ list ก่อนครับ

ซึ่งคล้ายๆ ตอนที่เราใช้กับ range นั่นแหละ แต่คราวนี้เราสามารถใช้ตัวแปรอ้างอิงแต่ละ item ใน list นั้นๆ ได้เลย

myList = ["Eren", "Mikasa", "Armin", "Levi"]
for item in myList:   #ใช้ตัวแปรอะไรแทนคำว่า item ก็ได้
  print(item)
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 7

ซึ่งค่อนข้างสะดวกคือเราไม่จำเป็นต้องมาใช้ 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])
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 8

มาดูการทำงานร่วมกับ string กันต่อครับ

ก่อนอื่นเราต้องรู้ก่อนว่าจริงๆ แล้ว String ก็คือชุดข้อมูลที่ประกอบไปด้วยอักขระแต่ละตัวประกอบกันอยู่ และเราสามารถอ้างอิงด้วยเลข index ได้ด้วย คล้ายๆ list เลย เช่น

myString="ThepExcel"
print(myString[1]) #ได้ index1 คือตัวที่ 2
print(myString[1:4]) #ได้ตั้งแต่ index1 แต่ไม่ถึง 4 คือตัวที่ 2 ถึง 4
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 9

ทีนี้ถ้าเราใช้ for กับข้อมูล string จะเป็นยังไงกันนะ? มาดูกัน

myString="ThepExcel"
for c in myString:
  print(c)
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 10

จะเห็นว่าเราสามารถเข้าถึงอักขระแต่ละตัวใน string นั้นๆ ได้เลยแบบง่ายๆ

แต่ถ้าอยากใช้เลข index ก็ต้องใช้ range+len เช่นเคย

myString="ThepExcel"
for num in range(len(myString)):
  print(myString[num])
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 11

ต่อไปเป็นการทำงานร่วมกับ 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 ออกมา
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 12

ถ้าอยากได้ทั้ง Key และ Value แบบง่ายๆ ให้ใช้ตัวแปร 2 ตัวมารับค่าแบบนี้

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('---')
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 13

เงื่อนไขเพื่อการวน Loop ใน Python : While Loop

เป็นการทำคำสั่งไปเรื่อยๆ ในขณะที่เงื่อนไขที่กำหนดยังเป็นจริงอยู่

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

ซึ่งแน่นอนว่าจะเอาไปใช้กับพวก 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 
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 15

คำสั่งที่ควรรู้จักเพิ่มเติมเวลาใช้ 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')
หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if 16

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

จบตอน

ตอนนี้เนื้อหาเริ่มมีความซับซ้อนขึ้นนิดนึง (แต่คิดว่ายังไม่ยากเกินไป) ซึ่งที่ผ่านมาเรามี action ที่ทำได้แค่การ print โง่ๆ อยู่ เดี๋ยวตอนต่อ ไปเราจะมาเรียนรู้กันว่า จะสั่งทำอะไรกับข้อมูลเจ๋งๆ ได้บ้างเนอะ

แชร์ความรู้ให้เพื่อนๆ ของคุณ
  • 879
  •  
  •  
  •  
  •  
  • 879
  •  
  •  
  •  
  •  
Sira Ekabut
the authorSira Ekabut
• Microsoft Office Specialist : Excel ระดับ Expert • ก่อตั้งเว็บไซต์และ แฟนเพจเทพเอ็กเซล คนติดตาม 8 หมื่นคน+, คลิปวีดีโอ 1 ล้าน Views + • หนังสือ Best Seller คอมพิวเตอร์ : Excel Level Up! , จอมเวท เทพ Excel , Excel Power Up!วิทยากรใน SkillLane.com คอร์สออนไลน์ชั้นนำ / อบรม Excel ให้บริษัทชั้นนำ

Leave a Reply