---
title: "หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if"
url: https://www.thepexcel.com/python-excel-03-loop-if/
type: post
date: 2020-11-18
updated: 2025-04-24
author: Sira Ekabut
categories: [Programming]
tags: [loop, for, while, python]
---

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

[ในตอนก่อนหน้านี้](https://www.thepexcel.com/python-excel-02-data-types/)เราได้เรียนรู้เรื่องประเภทข้อมูลของภาษา 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)
```

 ![1](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-001.png) 

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

 

```
A1=73
if A1>100:
  print("เยี่ยมมาก")
print("จบ")
```

 ![2](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-002.png) 

รวมถึงสามารถใส่หลายๆ เงื่อนไขด้วย 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)
```

 ![3](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-003.png) 

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

 

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

 

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

 

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

 

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

 

```
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
print("เทพมาก")
```

 ![4](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-006.png) 

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

 ![5](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-007.png) 

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

 

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

for num in range(6):   
  #เอาตัวแปร num มาใช้ได้
  print("เทพมาก จากตัวแปรเลข "+str(num)+", ซึ่งเป็นการรันครั้งที่ "+str(num+1)) 
```

 ![6](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-008.png) 

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

 

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

 

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

 

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

 

```
myList = ["Eren", "Mikasa", "Armin", "Levi"]
for item in myList:   #ใช้ตัวแปรอะไรแทนคำว่า item ก็ได้
  print(item)
```

 ![7](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-004.png) 

ซึ่งค่อนข้างสะดวกคือเราไม่จำเป็นต้องมาใช้ 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])
```

 ![8](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-009.png) 

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

 

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

 

```
myString="ThepExcel"
print(myString[1]) #ได้ index1 คือตัวที่ 2
print(myString[1:4]) #ได้ตั้งแต่ index1 แต่ไม่ถึง 4 คือตัวที่ 2 ถึง 4
```

 ![9](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-011.png) 

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

 

```
myString="ThepExcel"
for c in myString:
  print(c)
```

 ![10](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-012.png) 

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

 

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

 

```
myString="ThepExcel"
for num in range(len(myString)):
  print(myString[num])
```

 ![11](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-013.png) 

#### **ต่อไปเป็นการทำงานร่วมกับ 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 ออกมา
```

 ![12](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-014-1024x531.png) 

ถ้าอยากได้ทั้ง 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('---')
```

 ![13](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-015-1024x646.png) 

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

 

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

 

```
i = 1  #ให้ i เป็น 1
while i <= 6:  #กำหนดเงื่อนไขให้ทำในขณะที่ i ไม่เกิน 6
  print("เทพมาก" + str(i))
  i = i+1  #เพิ่ม i ก่อนจะจบ action 
```

 ![14](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-016.png) 

ซึ่งแน่นอนว่าจะเอาไปใช้กับพวก 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 
```

 ![15](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-017.png) 

คำสั่งที่ควรรู้จักเพิ่มเติมเวลาใช้ 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')
```

 ![16](https://www.thepexcel.com/wp-content/uploads/2020/11/python-03-018.png) 

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

 

## จบตอน

 

ตอนนี้เนื้อหาเริ่มมีความซับซ้อนขึ้นนิดนึง (แต่คิดว่ายังไม่ยากเกินไป) ซึ่งที่ผ่านมาเรามี action ที่ทำได้แค่การ print โง่ๆ อยู่ เดี๋ยว[ตอนต่อ ไปเราจะมาเรียนรู้กันว่า จะสั่งทำอะไรกับข้อมูลเจ๋งๆ ได้บ้าง](https://www.thepexcel.com/python-excel-04-string-list/)เนอะ

  

## สารบัญ Series Python

---

_Source: [https://www.thepexcel.com/python-excel-03-loop-if/](https://www.thepexcel.com/python-excel-03-loop-if/)_
