มาสเตอร์การสร้างเงื่อนไขด้วยคำสั่ง if ใน Python กันเถอะ
หากต้องการเรียกใช้ Python ผ่าน Command Prompt หรือ PowerShell บนคอมพิวเตอร์ของคุณ คุณจำเป็นต้องดาวน์โหลดและติดตั้ง Python ก่อน
หากคุณยังไม่ได้ติดตั้ง กรุณาดูบทความ การติดตั้ง Python และการตั้งค่าสภาพแวดล้อมการพัฒนา เพื่อทำการติดตั้ง Python
ยินดีต้อนรับสู่โลกแห่งการเขียนโปรแกรม! สำหรับทุกคนที่เพิ่งเริ่มสร้างเว็บไซต์หรือพัฒนาแอป การเรียนรู้ Python ของคุณเป็นอย่างไรบ้าง? ในครั้งนี้ เราจะมาเจาะลึกเกี่ยวกับ คำสั่ง if ซึ่งเป็นหนึ่งใน "โครงสร้างควบคุม" พื้นฐานของการเขียนโปรแกรม คำสั่ง if เป็นคำสั่งที่ใช้สั่งให้โปรแกรมทำงานบางอย่างก็ต่อเมื่อเงื่อนไขที่กำหนดเป็นจริงเท่านั้น ทำให้เราสามารถสร้างการทำงานแบบมีเงื่อนไขได้ว่า "ถ้าเป็นอย่างนั้น ให้ทำอย่างนี้" เมื่ออ่านบทความนี้จบ คุณจะเข้าใจคำสั่ง if ตั้งแต่พื้นฐานไปจนถึงการประยุกต์ใช้ และได้สัมผัสกับ "ความสนุกที่ได้เห็นโปรแกรมทำงาน" ด้วยโค้ดที่สามารถคัดลอกไปวางแล้วใช้งานได้ทันที!
วิธีใช้คำสั่ง if เบื้องต้น
ก่อนอื่น เรามาดูรูปแบบที่เรียบง่ายที่สุดของคำสั่ง if กันก่อน นี่คือรูปแบบที่บอกว่า "ถ้าเงื่อนไขเป็นจริง (True) ให้ทำงานที่อยู่ข้างใน" ซึ่งมีโครงสร้างที่เรียบง่ายมาก
if เงื่อนไข:
# โค้ดที่จะทำงานเมื่อเงื่อนไขเป็นจริง (True)
สิ่งที่สำคัญในที่นี้คือ เครื่องหมายโคลอน (:) และ การย่อหน้า (Indentation) คุณต้องใส่โคลอนไว้ท้ายบรรทัดของคำสั่ง if เสมอ และโค้ดที่ต้องการให้ทำงานจะต้องย่อหน้าเข้าไป (ปกติคือเว้นวรรค 4 ครั้ง) จากบรรทัดถัดไป การย่อหน้านี้มีบทบาทสำคัญในการกำหนดขอบเขตของโค้ด (block) ใน Python
งั้นเรามาดูโค้ดที่ทำงานได้จริงกันเลยดีกว่า นี่คือตัวอย่างง่ายๆ ในการตรวจสอบว่าอายุถึง 20 ปีหรือไม่
# กำหนดค่า 25 ให้กับตัวแปร age
age = 25
# ถ้า age มากกว่าหรือเท่ากับ 20 ให้แสดงข้อความ
if age >= 20:
print("คุณเป็นผู้ใหญ่แล้ว")
# บรรทัดนี้อยู่นอกบล็อกของ if ดังนั้นจะทำงานเสมอไม่ว่าเงื่อนไขจะเป็นอย่างไร
print("สิ้นสุดโปรแกรม")
ผลลัพธ์การทำงาน:
คุณเป็นผู้ใหญ่แล้ว
สิ้นสุดโปรแกรม
ในโค้ดนี้ ตัวแปร `age` มีค่าเป็น 25 ดังนั้นเงื่อนไข `age >= 20` จึงเป็นจริง (True) ทำให้คำสั่ง `print("คุณเป็นผู้ใหญ่แล้ว")` ที่ย่อหน้าเข้าไปถูกทำงาน หากคุณลองเปลี่ยนค่า `age` เป็น 18 แล้วรันโปรแกรม บรรทัดนี้จะไม่ถูกทำงาน และจะแสดงผลแค่ "สิ้นสุดโปรแกรม" เท่านั้น ลองทำดูได้เลย
else: การจัดการเมื่อเงื่อนไขไม่เป็นจริง
ต่อไป เราจะมาเรียนรู้วิธีเพิ่มการทำงานในกรณีที่เงื่อนไขไม่เป็นจริง หรือ "ถ้าเป็นอย่างนั้น ให้ทำอย่างนี้ แต่ถ้าไม่ใช่ ให้ทำอีกอย่าง" ซึ่งในที่นี้เราจะใช้ else เข้ามาช่วย
if เงื่อนไข:
# โค้ดที่จะทำงานเมื่อเงื่อนไขเป็นจริง (True)
else:
# โค้ดที่จะทำงานเมื่อเงื่อนไขเป็นเท็จ (False)
เรามาลองเพิ่ม else เข้าไปในตัวอย่างการตรวจสอบอายุเมื่อสักครู่นี้กัน โดยคราวนี้จะกำหนดให้ `age` เป็น 18
# กำหนดค่า 18 ให้กับตัวแปร age
age = 18
# ถ้า age มากกว่าหรือเท่ากับ 20 ให้แสดงว่า "คุณเป็นผู้ใหญ่แล้ว"
if age >= 20:
print("คุณเป็นผู้ใหญ่แล้ว")
# ถ้าไม่ใช่ ให้แสดงว่า "คุณยังไม่บรรลุนิติภาวะ"
else:
print("คุณยังไม่บรรลุนิติภาวะ")
print("สิ้นสุดโปรแกรม")
ผลลัพธ์การทำงาน:
คุณยังไม่บรรลุนิติภาวะ
สิ้นสุดโปรแกรม
คราวนี้ `age` มีค่าเป็น 18 ดังนั้นเงื่อนไข `age >= 20` จึงเป็นเท็จ (False) ทำให้โปรแกรมข้ามการทำงานในบล็อก if ไปและมาทำงานในบล็อก else แทน ซึ่งก็คือ `print("คุณยังไม่บรรลุนิติภาวะ")` ด้วยวิธีนี้ ไม่ว่าอายุที่ป้อนเข้ามาจะเป็นเท่าไร โปรแกรมก็จะแสดงข้อความออกมาหนึ่งอย่างเสมอ
elif: การสร้างเงื่อนไขหลายทางเลือก
แล้วถ้ามีเงื่อนไขมากกว่า 2 อย่างล่ะ? เช่น เราต้องการตัดเกรดตามคะแนน เป็น "ดีเยี่ยม", "ดี", "พอใช้", "ไม่ผ่าน" การสร้างเงื่อนไขหลายทางเลือกแบบนี้ เราจะใช้ elif (ย่อมาจาก else if)
if เงื่อนไขที่ 1:
# โค้ดที่จะทำงานเมื่อเงื่อนไขที่ 1 เป็นจริง
elif เงื่อนไขที่ 2:
# โค้ดที่จะทำงานเมื่อเงื่อนไขที่ 1 เป็นเท็จ และเงื่อนไขที่ 2 เป็นจริง
elif เงื่อนไขที่ 3:
# โค้ดที่จะทำงานเมื่อเงื่อนไขที่ 1, 2 เป็นเท็จ และเงื่อนไขที่ 3 เป็นจริง
else:
# โค้ดที่จะทำงานเมื่อทุกเงื่อนไขข้างบนเป็นเท็จทั้งหมด
เราสามารถเพิ่ม elif ได้หลายอันตามต้องการ Python จะตรวจสอบเงื่อนไขจากบนลงล่าง และเมื่อเจอเงื่อนไขที่เป็นจริง (True) อันแรก ก็จะทำงานในบล็อกนั้นแล้วข้าม elif และ else ที่เหลือทั้งหมดไปทันที
เรามาดูตัวอย่างการตัดเกรดกัน
# กำหนดคะแนน 85 ให้กับตัวแปร score
score = 85
if score >= 90:
grade = "ดีเยี่ยม"
elif score >= 80:
grade = "ดี"
elif score >= 60:
grade = "พอใช้"
else:
grade = "ไม่ผ่าน"
print(f"คะแนนของคุณคือ {score} คะแนน ดังนั้นเกรดของคุณคือ '{grade}'")
ผลลัพธ์การทำงาน:
คะแนนของคุณคือ 85 คะแนน ดังนั้นเกรดของคุณคือ 'ดี'
ในโค้ดนี้ `score` คือ 85
- เงื่อนไขแรก `if score >= 90:` เป็นเท็จ (False)
- เงื่อนไขถัดมา `elif score >= 80:` เป็นจริง (True)
ตัวอย่างประยุกต์: การรวมหลายเงื่อนไขเข้าด้วยกัน
ในคำสั่ง if เรายังสามารถใช้ตัวดำเนินการตรรกะ เช่น `and` (และ), `or` (หรือ), และ `not` (ไม่) เพื่อสร้างเงื่อนไขที่ซับซ้อนยิ่งขึ้นได้
- `A and B`: เป็นจริงเมื่อทั้ง A และ B เป็นจริง
- `A or B`: เป็นจริงเมื่อ A หรือ B อย่างน้อยหนึ่งตัวเป็นจริง
- `not A`: เป็นจริงเมื่อ A เป็นเท็จ
ตัวอย่างเช่น เรามาเขียนเงื่อนไข "ระหว่าง 9 โมงเช้าถึง 5 โมงเย็น และไม่ใช่วันเสาร์-อาทิตย์" กัน
# สมมติเวลาและวันในสัปดาห์ปัจจุบัน
hour = 10
day_of_week = "วันจันทร์"
# ตรวจสอบเวลาทำการ
# เวลามากกว่าหรือเท่ากับ 9 และน้อยกว่า 17
is_open_hour = hour >= 9 and hour < 17
# วันในสัปดาห์ไม่ใช่วันเสาร์ และไม่ใช่วันอาทิตย์
is_weekday = day_of_week != "วันเสาร์" and day_of_week != "วันอาทิตย์"
if is_open_hour and is_weekday:
print("อยู่ในเวลาทำการ")
else:
print("นอกเวลาทำการ")
ผลลัพธ์การทำงาน:
อยู่ในเวลาทำการ
การผสมผสานเงื่อนไขหลายๆ อย่างเข้าด้วยกันเช่นนี้ จะช่วยให้เราสามารถจำลองกฎเกณฑ์ที่ซับซ้อนในโลกแห่งความเป็นจริงให้อยู่ในโปรแกรมได้
ตัวอย่างโค้ดฉบับสมบูรณ์สำหรับ Web Creator
สำหรับ Web Creator ทั้งหลาย อาจจะสนใจการใช้ Python เพื่อสร้าง HTML แบบไดนามิก ตัวอย่างต่อไปนี้คือสคริปต์ Python ที่สร้างข้อความ HTML ตามสถานะการล็อกอินและแผนสมาชิกของผู้ใช้ เมื่อรันโค้ด Python นี้ จะมีไฟล์ HTML ชื่อ `welcome_message.html` ถูกสร้างขึ้นมา นี่เป็นโอกาสดีที่จะได้สัมผัสประสบการณ์ "โค้ดที่ทำงานได้จริง"!
ลองบันทึกโค้ด Python ด้านล่างนี้เป็นไฟล์ชื่อ `generate_html.py` แล้วรันดู
# --- การจำลองข้อมูลผู้ใช้ ---
is_logged_in = True
user_name = "สมชาย"
membership_plan = "premium" # อาจจะเป็น "premium", "standard", "free"
# --- การกำหนดเนื้อหา HTML ---
if is_logged_in:
if membership_plan == "premium":
title = f"ยินดีต้อนรับ คุณ{user_name}"
message = "คุณสามารถใช้ฟีเจอร์พรีเมียมทั้งหมดได้"
color = "#ffd700" # Gold
elif membership_plan == "standard":
title = f"ยินดีต้อนรับ คุณ{user_name}"
message = "คุณกำลังใช้แผนบริการสแตนดาร์ด"
color = "#4682b4" # SteelBlue
else: # free plan
title = f"ยินดีต้อนรับ คุณ{user_name}"
message = 'คุณกำลังใช้แผนบริการฟรี อัปเกรดเลยไหม?'
color = "#cccccc" # LightGray
else:
title = "สวัสดี ผู้มาเยือน"
message = 'คุณต้องล็อกอินเพื่อใช้บริการ'
color = "#f0f0f0"
# --- การสร้างโค้ด HTML ---
html_content = f"""
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ข้อความต้อนรับ</title>
<style>
body {{
font-family: sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f9f9f9;
}}
.welcome-card {{
border: 2px solid {color};
border-radius: 10px;
padding: 2rem;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
text-align: center;
background-color: white;
}}
h1 {{
color: #333;
}}
p {{
color: #555;
font-size: 1.1rem;
}}
a {{
color: #007bff;
text-decoration: none;
}}
a:hover {{
text-decoration: underline;
}}
</style>
</head>
<body>
<div class="welcome-card">
<h1>{title}</h1>
<p>{message}</p>
</div>
</body>
</html>
"""
# --- การเขียนไฟล์ ---
try:
with open("welcome_message.html", "w", encoding="utf-8") as f:
f.write(html_content)
print("สร้างไฟล์ HTML 'welcome_message.html' เรียบร้อยแล้ว")
print("กรุณาเปิดไฟล์ในเบราว์เซอร์เพื่อตรวจสอบ")
except IOError as e:
print(f"เกิดข้อผิดพลาดขณะเขียนไฟล์: {e}")
หลังจากรันโค้ดนี้ จะมีไฟล์ชื่อ `welcome_message.html` ถูกสร้างขึ้นในโฟลเดอร์เดียวกัน เมื่อเปิดไฟล์นี้ในเบราว์เซอร์ คุณจะเห็นข้อความที่ออกแบบตามค่าของ `is_logged_in` และ `membership_plan` ลองเปลี่ยนค่าของตัวแปรเหล่านี้ดู แล้วสังเกตว่า HTML ที่สร้างขึ้นเปลี่ยนแปลงไปอย่างไร นี่คือก้าวแรกสู่การสร้างเนื้อหาแบบไดนามิกด้วยการเขียนโปรแกรม
ข้อควรระวัง (ข้อผิดพลาดที่พบบ่อย)
ในช่วงแรกที่เริ่มใช้คำสั่ง if มีข้อผิดพลาดบางอย่างที่ทุกคนต้องเคยเจอ เรามาตรวจสอบกันล่วงหน้าดีกว่า
1. การสับสนระหว่างตัวดำเนินการเปรียบเทียบ `==` และตัวดำเนินการกำหนดค่า `=`
ในการเปรียบเทียบว่า "เท่ากัน" หรือไม่ในเงื่อนไขของ if เราต้องใช้เครื่องหมายเท่ากับสองตัว `==` ส่วนเครื่องหมายเท่ากับตัวเดียว `=` ใช้สำหรับกำหนดค่าให้กับตัวแปร หากใช้ผิด อาจทำให้เกิดข้อผิดพลาดหรือทำงานไม่เป็นไปตามที่ตั้งใจ
# ผิด
if membership_plan = "premium": # ตรงนี้จะเกิดข้อผิดพลาด!
...
# ถูกต้อง
if membership_plan == "premium":
...
2. การย่อหน้าที่ผิดพลาด
ใน Python การย่อหน้ามีความหมายถึงโครงสร้างของโค้ด การทำงานภายในบล็อก if จะต้องย่อหน้าด้วยจำนวนเว้นวรรคที่เท่ากัน (ปกติคือ 4 ครั้ง) หากย่อหน้าไม่ตรงกัน จะเกิดข้อผิดพลาด `IndentationError`
score = 80
if score >= 60:
print("ผ่าน")
print("ขอแสดงความยินดี") # เกิดข้อผิดพลาดเพราะย่อหน้าไม่ตรงกัน
3. การเลือกใช้ระหว่าง `if` และ `elif`
หากเรานำเงื่อนไขหลายๆ อันมาเรียงต่อกันโดยใช้แค่ `if` จะทำให้ `if` แต่ละอันถูกประเมินแยกจากกัน ซึ่งอาจให้ผลลัพธ์ไม่ตรงกับที่ต้องการ
ตัวอย่างเช่น ลองพิจารณากรณีที่คะแนนคือ 95
# ตัวอย่างที่ผิด (ใช้ if ติดกัน)
score = 95
if score >= 90:
print("เกรดคือ ดีเยี่ยม")
if score >= 80: # if นี้ก็จะถูกประเมินแยกต่างหาก
print("เกรดคือ ดี")
ผลลัพธ์การทำงาน:
เกรดคือ ดีเยี่ยม
เกรดคือ ดี
เนื่องจาก 95 มากกว่าหรือเท่ากับ 90 และยังมากกว่าหรือเท่ากับ 80 ด้วย ข้อความทั้งสองจึงถูกแสดงออกมา ในกรณีเช่นนี้ `elif` คือคำตอบที่ใช่ เพราะเมื่อใช้ `elif` การประเมินจะสิ้นสุดลงทันทีที่เงื่อนไขแรกเป็นจริง
# ตัวอย่างที่ถูกต้อง (ใช้ elif)
score = 95
if score >= 90:
print("เกรดคือ ดีเยี่ยม")
elif score >= 80:
print("เกรดคือ ดี")
ผลลัพธ์การทำงาน:
เกรดคือ ดีเยี่ยม
ดังนั้น เมื่อต้องการประเมินเงื่อนไขเพียงเรื่องเดียวแต่มีหลายระดับ ควรใช้โครงสร้าง `if-elif-else`
แนะนำโค้ดที่เกี่ยวข้องและมีประโยชน์
เรามาแนะนำไวยากรณ์ที่มีประโยชน์ซึ่งมักใช้คู่กับคำสั่ง if กัน
ตัวดำเนินการ `in`: ตรวจสอบว่ามีองค์ประกอบอยู่ในลิสต์หรือสตริงหรือไม่
เมื่อต้องการตรวจสอบว่ามีองค์ประกอบที่ต้องการอยู่ในลิสต์ ทูเพิล หรือสตริงหรือไม่ ตัวดำเนินการ `in` มีประโยชน์อย่างมาก ทำให้เราสามารถเขียนโค้ดได้กระชับกว่าการใช้ `or` ต่อกันหลายๆ ครั้ง
ตัวอย่างเช่น ลองตรวจสอบว่าวันนี้เป็นวันหยุด (เสาร์-อาทิตย์) หรือไม่
day_of_week = "วันอาทิตย์"
holidays = ["วันเสาร์", "วันอาทิตย์"]
# วิธีเขียนแบบยาว
# if day_of_week == "วันเสาร์" or day_of_week == "วันอาทิตย์":
# print("วันนี้เป็นวันหยุด")
# วิธีเขียนแบบกระชับโดยใช้ 'in'
if day_of_week in holidays:
print("วันนี้เป็นวันหยุด")
else:
print("วันนี้เป็นวันทำงาน")
ผลลัพธ์การทำงาน:
วันนี้เป็นวันหยุด
การใช้ตัวดำเนินการ `in` ทำให้เราสามารถตรวจสอบได้ในบรรทัดเดียวว่า `day_of_week` อยู่ในลิสต์ `holidays` หรือไม่ ซึ่งทำให้โค้ดอ่านง่ายขึ้นมาก
สรุป
ในบทความนี้ เราได้อธิบายเกี่ยวกับพื้นฐานการสร้างเงื่อนไขด้วยคำสั่ง if ใน Python ตั้งแต่วิธีใช้เบื้องต้น การประยุกต์ใช้ `else` และ `elif` ไปจนถึงตัวอย่างการสร้าง HTML แบบไดนามิกสำหรับ Web Creator
- if: ทำงานเมื่อเงื่อนไขเป็นจริง
- else: ทำงานเมื่อเงื่อนไขของ if เป็นเท็จ
- elif: ประเมินเงื่อนไขหลายๆ อย่างตามลำดับ
- การย่อหน้าและเครื่องหมายโคลอน (:) คือหัวใจของไวยากรณ์
- สามารถแสดงเงื่อนไขที่ซับซ้อนขึ้นได้โดยการใช้ตัวดำเนินการ `and`, `or`, `in`
คำสั่ง if เป็นโครงสร้างที่สำคัญอย่างยิ่งและใช้ในโปรแกรมทุกประเภท ลองนำโค้ดในบทความนี้ไปรันและเปลี่ยนค่าต่างๆ ดู การได้เห็นโค้ดที่คุณเขียนเปลี่ยนแปลงการทำงานไปตามเงื่อนไข จะทำให้คุณรู้สึกถึงความสนุกและพลังของการเขียนโปรแกรม ขอให้คุณมาสเตอร์การสร้างเงื่อนไขและนำไปใช้ในการพัฒนาเว็บเซอร์วิสหรือเครื่องมือที่คุณต้องการสร้างต่อไป!
สำหรับก้าวต่อไป ลองเรียนรู้เกี่ยวกับการทำงานแบบวนซ้ำดูไหม?
ไปยังบทความถัดไป: ทำความเข้าใจ Loop ด้วย for และ while ใน Python