สนุกคิด สนุกโค้ด ด้วยภาษาไพทอน

กำลังเรียนในชื่อ:

บทที่ 5: พื้นฐานการเขียนโปรแกรมภาษาไพทอน

1. ตัวแปรและตัวดำเนินการ

ตัวแปร (Variable)

ตัวแปร (Variable) คือชื่อที่เราตั้งขึ้นมาเพื่ออ้างอิงถึงข้อมูลในหน่วยความจำ ลองนึกภาพว่ามันเป็นเหมือนกล่องที่มีป้ายชื่อติดอยู่ เพื่อให้เราสามารถเรียกใช้หรือเปลี่ยนแปลงข้อมูลในกล่องนั้นได้ง่าย ๆ

# การประกาศตัวแปรและกำหนดค่า
score = 100
player_name = "Knight"
is_alive = True

# การเรียกใช้งานตัวแปร
print("ผู้เล่น:", player_name)
print("คะแนน:", score)
print("สถานะ:", is_alive)

ประเภทของข้อมูลพื้นฐาน (Data Types)

ข้อมูลแต่ละชนิดมีประเภทที่แตกต่างกัน ซึ่งส่งผลต่อการดำเนินการกับข้อมูลนั้น ๆ

  • Integer (int): ตัวเลขจำนวนเต็ม เช่น 10, -5, 999
  • Float (float): ตัวเลขทศนิยม เช่น 3.14, -0.5, 25.0
  • String (str): ข้อความหรือชุดของอักขระ ที่อยู่ภายในเครื่องหมาย " " หรือ ' '
  • Boolean (bool): ค่าความจริง มีเพียง 2 ค่าคือ True (จริง) และ False (เท็จ)

ตัวดำเนินการ (Operators)

ตัวดำเนินการ คือสัญลักษณ์ที่ใช้เพื่อกระทำการบางอย่างกับตัวแปรและค่าต่าง ๆ

1. ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operators)

ใช้สำหรับการคำนวณทางคณิตศาสตร์

ตัวดำเนินการ คำอธิบาย ตัวอย่าง
+ บวก x + y
- ลบ x - y
* คูณ x * y
/ หาร (ได้ผลลัพธ์เป็นทศนิยม) 10 / 33.333
// หารปัดเศษทิ้ง (ได้ผลลัพธ์เป็นจำนวนเต็ม) 10 // 33
% หารเอาเศษ (Modulo) 10 % 31
** ยกกำลัง 2 ** 38
a = 15
b = 4

print("a + b =", a + b)      # ผลลัพธ์: 19
print("a - b =", a - b)      # ผลลัพธ์: 11
print("a * b =", a * b)      # ผลลัพธ์: 60
print("a / b =", a / b)      # ผลลัพธ์: 3.75
print("a // b =", a // b)     # ผลลัพธ์: 3
print("a % b =", a % b)       # ผลลัพธ์: 3
print("a ** 2 =", a ** 2)    # ผลลัพธ์: 225

2. ตัวดำเนินการเปรียบเทียบ (Comparison Operators)

ใช้สำหรับเปรียบเทียบค่าสองค่า ผลลัพธ์ที่ได้จะเป็น Boolean (True หรือ False)

ตัวดำเนินการ คำอธิบาย ตัวอย่าง
== เท่ากับ x == y
!= ไม่เท่ากับ x != y
> มากกว่า x > y
< น้อยกว่า x < y
>= มากกว่าหรือเท่ากับ x >= y
<= น้อยกว่าหรือเท่ากับ x <= y
score = 95
level = 10

print("score > 90:", score > 90)          # ผลลัพธ์: True
print("level == 10:", level == 10)        # ผลลัพธ์: True
print("level != 5:", level != 5)          # ผลลัพธ์: True
print("score < level:", score < level)    # ผลลัพธ์: False

3. ตัวดำเนินการทางตรรกศาสตร์ (Logical Operators)

ใช้เพื่อรวมเงื่อนไขเชิงเปรียบเทียบเข้าด้วยกัน

ตัวดำเนินการ คำอธิบาย
and และ (ผลลัพธ์เป็น True เมื่อทุกเงื่อนไขเป็นจริง)
or หรือ (ผลลัพธ์เป็น True เมื่อมีเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง)
not ไม่ใช่ (กลับค่าจาก True เป็น False และจาก False เป็น True)
level = 12
has_key = True
is_tired = False

# เงื่อนไข: ต้องมี level มากกว่า 10 และ มีกุญแจ
can_enter_dungeon = level > 10 and has_key
print("สามารถเข้าดันเจี้ยนได้:", can_enter_dungeon) # ผลลัพธ์: True

# เงื่อนไข: ต้องการพักผ่อน ถ้า level ต่ำกว่า 5 หรือ เหนื่อย
need_to_rest = level < 5 or is_tired
print("ต้องการพักผ่อน:", need_to_rest)           # ผลลัพธ์: False

# เงื่อนไขตรงข้าม: ไม่เหนื่อย
print("ไม่เหนื่อย:", not is_tired)               # ผลลัพธ์: True

การดำเนินการกับ String

เราสามารถใช้ตัวดำเนินการบางอย่างกับ String ได้เช่นกัน

  • การต่อ String (Concatenation): ใช้เครื่องหมาย + เพื่อนำ String มาต่อกัน
  • การทำซ้ำ String (Repetition): ใช้เครื่องหมาย * เพื่อทำซ้ำ String ตามจำนวนครั้งที่กำหนด
first_name = "Super"
last_name = "Knight"

# การต่อ String
full_name = first_name + " " + last_name
print(full_name)  # ผลลัพธ์: Super Knight

# การทำซ้ำ String
laugh = "Ha" * 5
print(laugh)      # ผลลัพธ์: HaHaHaHaHa

ทดลองเขียนโค้ดของคุณที่นี่

2. การแสดงผลข้อมูล (Displaying Output)

ในการเขียนโปรแกรม เราจำเป็นต้องแสดงผลลัพธ์ ไม่ว่าจะเป็นข้อความ, ค่าในตัวแปร, หรือผลจากการคำนวณ ให้ผู้ใช้ได้เห็น คำสั่งพื้นฐานและสำคัญที่สุดใน Python สำหรับงานนี้คือ print()

เราสามารถใส่ข้อมูลที่เราต้องการแสดงไว้ในวงเล็บ () ของคำสั่ง print ได้หลายรูปแบบ มาดูกันครับ

วิธีที่ 1: การแสดงข้อความตรงๆ

วิธีที่ง่ายที่สุดคือการใส่ข้อความที่ต้องการแสดงไว้ในเครื่องหมายคำพูด " " หรือ ' '

print("สวัสดีชาวโลก! ยินดีต้อนรับสู่โลกของ Python")
print('การเรียนเขียนโปรแกรมเป็นเรื่องสนุก!')

วิธีที่ 2: การใช้เครื่องหมายจุลภาค (,) เพื่อแสดงผลหลายค่า

เราสามารถแสดงผลข้อมูลหลายชิ้นพร้อมกันได้โดยใช้เครื่องหมาย , (comma) คั่น Python จะเว้นวรรคให้ระหว่างข้อมูลแต่ละชิ้นโดยอัตโนมัติ

player_name = "Cyber Knight"
level = 25
print("ผู้เล่น:", player_name, "มีเลเวล:", level)
# ผลลัพธ์: ผู้เล่น: Cyber Knight มีเลเวล: 25

วิธีที่ 3: การต่อข้อความ (String Concatenation) ด้วยเครื่องหมาย +

เราสามารถนำข้อความมาต่อกันเป็นสายยาวๆ ได้ด้วยเครื่องหมาย + แต่มีข้อควรระวังคือ วิธีนี้ใช้ได้กับข้อมูลประเภท String เท่านั้น หากต้องการต่อกับตัวเลข ต้องแปลงตัวเลขเป็น String ก่อนด้วยคำสั่ง str()

item_name = "ดาบแห่งแสง"
damage = 150
# แปลงตัวเลข 150 ให้เป็นข้อความ "150" ก่อนนำมาต่อ
description = "ไอเทม: " + item_name + " สร้างความเสียหาย " + str(damage) + " หน่วย"
print(description)

# ผลลัพธ์: ไอเทม: ดาบแห่งแสง สร้างความเสียหาย 150 หน่วย

วิธีที่ 4: การใช้ f-string (วิธีที่แนะนำและทันสมัยที่สุด)

f-string คือรูปแบบการจัดข้อความที่ง่ายและทรงพลังที่สุด เพียงแค่วางตัวอักษร f ไว้หน้าเครื่องหมายคำพูด แล้วใส่ชื่อตัวแปรหรือนิพจน์ทางคณิตศาสตร์ไว้ในวงเล็บปีกกา { } ได้เลย ทำให้เราสามารถแสดงผลตัวแปรหลายๆ ตัวผสมกับข้อความได้อย่างเป็นธรรมชาติ

การจัดรูปแบบการแสดงผล (Formatting)

จุดเด่นของ f-string คือเราสามารถ "จัดรูปแบบ" การแสดงผลได้ทันที เช่น การกำหนดจำนวนทศนิยมสำหรับตัวเลข float ซึ่งมีประโยชน์มากในการแสดงราคาสินค้า หรือคะแนนเฉลี่ย เราจะใช้เครื่องหมาย : (colon) ตามด้วยรูปแบบที่ต้องการ เช่น :.2f หมายถึง "แสดงผลเป็นเลขทศนิยม (float) 2 ตำแหน่ง"

name = "ลิซ่า"
score = 1250
age = 17
gpa = 3.8759 # เกรดเฉลี่ยมีทศนิยมหลายตำแหน่ง
# 1. แสดงค่าจากตัวแปรหลายตัวใน print() เดียว
print(f"ผู้เล่น {name} มีคะแนน {score} คะแนน")

# 2. สามารถคำนวณในวงเล็บปีกกาได้เลย
print(f"ปีหน้า {name} จะมีอายุ {age + 1} ปี")

# 3. การจัดรูปแบบทศนิยมให้เหลือ 2 ตำแหน่ง
# สังเกตการใช้ :.2f เพื่อบังคับให้แสดงผลทศนิยม 2 ตำแหน่ง (มีการปัดเศษให้อัตโนมัติ)
print(f"เกรดเฉลี่ยของเธอคือ {gpa:.2f}")

# 4. รวมทุกอย่างไว้ใน print() เดียวกัน
print(f"สรุป: ผู้เล่น {name} อายุ {age} ปี มีคะแนน {score} และเกรดเฉลี่ย {gpa:.2f}")

# --- ผลลัพธ์ ---
# ผู้เล่น ลิซ่า มีคะแนน 1250 คะแนน
# ปีหน้า ลิซ่า จะมีอายุ 18 ปี
# เกรดเฉลี่ยของเธอคือ 3.88
# สรุป: ผู้เล่น ลิซ่า อายุ 17 ปี มีคะแนน 1250 และเกรดเฉลี่ย 3.88

โบนัส: การใช้อักขระพิเศษ (Escape Characters)

เราสามารถควบคุมการแสดงผลเพิ่มเติมได้ เช่น การขึ้นบรรทัดใหม่ หรือการเว้นวรรคยาวๆ

  • \n : ใช้สำหรับขึ้นบรรทัดใหม่ (New Line)
  • \t : ใช้สำหรับเว้นวรรคเป็นระยะเท่ากับ 1 แท็บ (Tab)
print("--- รายงานผลการเรียน ---\nชื่อ: เด็กชายสมศักดิ์\n\tวิชา: วิทยาศาสตร์\n\tเกรด: A")

โจทย์ฝึกทักษะ: สร้างโปรไฟล์ตัวละครในเกม

สมมติว่าเรากำลังสร้างเกม RPG และต้องการแสดงหน้าต่างสถานะของตัวละคร ให้นักเรียนใช้ความรู้เรื่อง print() และ f-string เพื่อสร้างข้อความแสดงผลตามที่กำหนด

ข้อมูลตัวละคร

คัดลอกโค้ดข้างล่างนี้ไปวางในเอดิเตอร์เพื่อเริ่มต้น

character_name = "Shadow Striker"
character_class = "Assassin"
level = 15
gold = 580.50

ภารกิจ

จงเขียนโค้ดโดยใช้คำสั่ง print() เพื่อแสดงผลโปรไฟล์ตัวละครให้ออกมาหน้าตาแบบนี้เป๊ะๆ (แนะนำให้ใช้ f-string และ \n)

--- Character Profile ---
Name: Shadow Striker (Level 15)
Class: Assassin
Gold: 580.5 G

ทดลองเขียนโค้ดของคุณที่นี่

3. การรับค่าจากผู้ใช้ (User Input)

หัวใจของการเขียนโปรแกรมที่สามารถโต้ตอบกับผู้ใช้ได้ คือ "การรับข้อมูล" เข้ามาประมวลผล ในภาษา Python เราใช้คำสั่ง input() เพื่อหยุดรอให้ผู้ใช้พิมพ์ข้อมูลเข้ามา แล้วกด Enter

กฎทองของการรับค่า: ทุกอย่างคือข้อความ (String)

สิ่งสำคัญที่สุดที่ต้องจำคือ: ข้อมูลทุกอย่างที่รับมาจากคำสั่ง input() จะมีประเภทเป็นข้อความ (String) เสมอ! แม้ว่าผู้ใช้จะพิมพ์ตัวเลขเข้ามาก็ตาม เช่น ถ้าผู้ใช้พิมพ์ `15` โปรแกรมจะมองว่าเป็นข้อความ `"15"` ไม่ใช่ตัวเลข `15`

ดังนั้น หากเราต้องการนำค่าที่รับมาไปคำนวณทางคณิตศาสตร์ เราจึงจำเป็นต้อง "แปลงประเภทข้อมูล" (Type Casting) ด้วยคำสั่ง int() สำหรับจำนวนเต็ม หรือ float() สำหรับทศนิยม

ตัวอย่างที่ 1: การรับชื่อ (String)

กรณีนี้ง่ายที่สุด เพราะข้อมูลที่ได้เป็น String อยู่แล้ว เราสามารถนำไปใช้ได้เลย

player_name = input("กรุณาใส่ชื่อของคุณ: ")
print(f"ยินดีต้อนรับ, ท่าน {player_name}!")

ตัวอย่างที่ 2: การรับอายุ (Integer)

เราต้องรับค่ามาเป็น String ก่อน แล้วจึงแปลงเป็น Integer ด้วย int() เพื่อนำไปคำนวณต่อ

# แบบทีละขั้นตอน (เหมาะสำหรับผู้เริ่มต้น)
age_str = input("คุณอายุเท่าไหร่: ") # รับค่ามาเป็น String เช่น "16"
age_int = int(age_str) # แปลง "16" ให้เป็นตัวเลข 16
print(f"สุดยอด! อีก 10 ปีข้างหน้า คุณจะอายุ {age_int + 10} ปี")

# แบบรวบรัด (นิยมใช้)
your_age = int(input("ใส่อายุของคุณอีกครั้ง: "))
print(f"คุณเกิดปี ค.ศ. ประมาณ {2567 - your_age}")

ตัวอย่างที่ 3: การรับส่วนสูง (Float)

เหมือนกับการรับ Integer แต่เราใช้ float() เพื่อแปลงเป็นตัวเลขทศนิยม

height_m = float(input("คุณสูงกี่เมตร (เช่น 1.75): "))
print(f"ถ้าคุณสูงขึ้นอีก 5 ซม. คุณจะสูง {height_m + 0.05} เมตร")

โจทย์ท้าทาย: สร้างบัตรนักเรียนดิจิทัล

มาลองสร้างโปรแกรมเล็กๆ ที่ใช้รับข้อมูลส่วนตัวของนักเรียน แล้วนำมาแสดงผลเป็น "บัตรนักเรียนดิจิทัล" ที่สวยงามกันเถอะ!

ภารกิจ

จงเขียนโปรแกรมที่ทำสิ่งต่อไปนี้:

  1. รับ **ชื่อ-นามสกุล** (เป็น String)
  2. รับ **อายุ** (เป็น Integer)
  3. รับ **เกรดเฉลี่ย (GPA)** (เป็น Float)
  4. นำข้อมูลทั้งหมดมาแสดงผลในรูปแบบที่กำหนดให้เป๊ะๆ โดยใช้ f-string (ทศนิยมของ GPA ให้แสดงแค่ 2 ตำแหน่ง)

รูปแบบการแสดงผลที่ต้องการ

*************************************
    DIGITAL STUDENT ID CARD
*************************************
  NAME : [ชื่อ-นามสกุลที่รับมา]
  AGE : [อายุที่รับมา] Years Old
  GPA : [เกรดเฉลี่ยที่รับมา แสดง 2 ตำแหน่ง]
*************************************

ทดลองเขียนโค้ดของคุณที่นี่

4. โจทย์ปัญหาเพื่อฝึกฝนทักษะ

ถึงเวลาที่เราจะนำความรู้ทั้งหมดที่เรียนมา ทั้งเรื่องตัวแปร, การรับค่า (input), การแปลงประเภทข้อมูล, การคำนวณ และการแสดงผล (print) มาใช้แก้ปัญหาจริงกันแล้ว! ลองพยายามแก้โจทย์แต่ละข้อด้วยตัวเองดูนะครับ


โจทย์ที่ 1: โปรแกรมแปลงอุณหภูมิ

เขียนโปรแกรมรับค่าอุณหภูมิในหน่วยองศาเซลเซียส (Celsius) แล้วแปลงเป็นหน่วยองศาฟาเรนไฮต์ (Fahrenheit)

สูตรการแปลง: F = (C × 9/5) + 32

Example 1:
Input temperature (C): 30
Result: 30.0 Celsius is equal to 86.0 Fahrenheit

Example 2:
Input temperature (C): -10
Result: -10.0 Celsius is equal to 14.0 Fahrenheit
ทดลองเขียนโค้ดของคุณที่นี่

โจทย์ที่ 2: โปรแกรมคำนวณพื้นที่ผิวทรงกระบอก

เขียนโปรแกรมรับค่ารัศมี (r) และความสูง (h) ของทรงกระบอก แล้วคำนวณหาพื้นที่ผิวทั้งหมด

สูตรพื้นที่ผิวทั้งหมด: (2 * π * r²) + (2 * π * r * h)

💡 คำแนะนำ: ค่า π (พาย) ที่มีความแม่นยำสูง สามารถเรียกใช้จากโมดูล math ได้ โดยต้องพิมพ์ import math ไว้บนสุดของโค้ด แล้วเราจะสามารถใช้ math.pi ในสูตรคำนวณได้เลย
Example 1:
Enter radius: 7
Enter height: 10
Result: The total surface area is 747.70

Example 2:
Enter radius: 3.5
Enter height: 5
Result: The total surface area is 186.92
ทดลองเขียนโค้ดของคุณที่นี่

โจทย์ที่ 3: โปรแกรมคำนวณดัชนีมวลกาย (BMI)

เขียนโปรแกรมรับน้ำหนัก (กิโลกรัม) และส่วนสูง (เมตร) แล้วคำนวณค่าดัชนีมวลกาย (BMI)

สูตร BMI: น้ำหนัก / (ส่วนสูง * ส่วนสูง)

💡 คำแนะนำ: การยกกำลังสอง (ส่วนสูง²) สามารถเขียนได้หลายแบบ เช่น height ** 2 หรือจะใช้ฟังก์ชันจากโมดูล `math` คือ math.pow(height, 2) ก็ได้ผลลัพธ์เหมือนกัน
Example 1:
Enter weight (kg): 60
Enter height (m): 1.75
Result: Your BMI is 19.59

Example 2:
Enter weight (kg): 85
Enter height (m): 1.68
Result: Your BMI is 30.12
ทดลองเขียนโค้ดของคุณที่นี่

โจทย์ที่ 4: โปรแกรมตู้ ATM อัจฉริยะ

เขียนโปรแกรมรับจำนวนเงินที่ต้องการถอน (ต้องลงท้ายด้วย 00) แล้วคำนวณว่าจะต้องจ่ายธนบัตร 1000, 500, และ 100 บาทอย่างละกี่ใบ

คำใบ้: ใช้ตัวดำเนินการหารปัดเศษทิ้ง // และหารเอาเศษ % ให้เป็นประโยชน์

Example 1:
Enter amount to withdraw: 3800
Result:
- 1000 Baht notes: 3
- 500 Baht notes: 1
- 100 Baht notes: 3

Example 2:
Enter amount to withdraw: 900
Result:
- 1000 Baht notes: 0
- 500 Baht notes: 1
- 100 Baht notes: 4
ทดลองเขียนโค้ดของคุณที่นี่

โจทย์ที่ 5: โปรแกรมคำนวณระยะห่างระหว่างจุด

เขียนโปรแกรมรับค่าพิกัดของจุด 2 จุด (x1, y1) และ (x2, y2) แล้วคำนวณหาระยะห่างระหว่างจุดทั้งสอง

สูตรระยะห่าง: √((x2 - x1)² + (y2 - y1)²)

💡 คำแนะนำ: การถอดรากที่สอง (Square Root) ใน Python ทำได้ง่ายๆ โดยการ import math แล้วใช้ฟังก์ชัน math.sqrt()
Example 1:
Enter x1: 0
Enter y1: 0
Enter x2: 3
Enter y2: 4
Result: The distance between points is 5.0

Example 2:
Enter x1: 1
Enter y1: 2
Enter x2: 5
Enter y2: 8
Result: The distance between points is 7.21
ทดลองเขียนโค้ดของคุณที่นี่

5. การตัดสินใจด้วยเงื่อนไข (if-elif-else)

ในชีวิตจริง เราต้องตัดสินใจอยู่ตลอดเวลา เช่น "ถ้าฝนตก, จะพกร่มไปด้วย" หรือ "ถ้าหิว, จะไปหาอะไรกิน" ในโลกของการเขียนโปรแกรมก็เช่นกัน เราต้องสอนให้โปรแกรม "ตัดสินใจ" ตามสถานการณ์ต่างๆ ได้ ซึ่งเครื่องมือที่เราใช้คือ โครงสร้างเงื่อนไข (Conditional Statements) ครับ

Python มีโครงสร้างเงื่อนไขหลักๆ อยู่ 3 รูปแบบ คือ if, if-else, และ if-elif-else


รูปแบบที่ 1: if (เงื่อนไขเดียว)

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

สถานการณ์: เราจะสามารถเปิดหีบสมบัติได้ ก็ต่อเมื่อเรามีกุญแจ

has_key = True # ลองเปลี่ยนเป็น False แล้วรันดู
if has_key == True:
    print("คุณใช้กุญแจและเปิดหีบสมบัติ!")
    print("คุณได้รับดาบในตำนาน!")

# สังเกต: ถ้า has_key เป็น False โปรแกรมจะข้ามคำสั่ง print ทั้งสองไปเลย

รูปแบบที่ 2: if-else (สองทางเลือก)

ใช้เมื่อเรามีทางเลือก 2 ทาง คือ "ถ้าเงื่อนไขเป็นจริง ให้ทำอย่างหนึ่ง, แต่ถ้าไม่จริง (เป็นเท็จ) ให้ไปทำอีกอย่างหนึ่ง"

สถานการณ์: ตรวจสอบผลสอบ ถ้าคะแนนมากกว่าหรือเท่ากับ 50 ถือว่า "สอบผ่าน" นอกนั้น "สอบตก"

score = int(input("Enter your score: "))
if score >= 50:
    print("ยินดีด้วย! คุณสอบผ่าน (Congratulations! You passed.)")
else:
    print("เสียใจด้วย คุณสอบตก (Sorry, you failed.)")

print("--- สิ้นสุดการประมวลผล ---")

รูปแบบที่ 3: if-elif-else (หลายทางเลือก)

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

สถานการณ์: โปรแกรมตัดเกรดจากคะแนนสอบ

score = int(input("กรอกคะแนน (0-100): "))
if score >= 80:
    grade = "A"
elif score >= 70: # elif ย่อมาจาก "else if"
    grade = "B"
elif score >= 60:
    grade = "C"
elif score >= 50:
    grade = "D"
else: # ถ้าไม่มีเงื่อนไขไหนข้างบนเป็นจริงเลย
    grade = "F"

print(f"คุณได้เกรด: {grade}")

รูปแบบที่ 4: if ซ้อน if (Nested if)

เราสามารถมีเงื่อนไขซ้อนอยู่ข้างในเงื่อนไขได้ ใช้สำหรับสถานการณ์ที่ซับซ้อนขึ้น

สถานการณ์: การเข้าร่วมกิจกรรมพิเศษ ต้องมีเลเวล 20 ขึ้นไป และต้องมีไอเทม "ตั๋วกิจกรรม" ด้วย

level = 25
has_ticket = False
if level >= 20:
    print("เงื่อนไขเลเวลผ่าน! กำลังตรวจสอบตั๋ว...")
    if has_ticket == True:
        print("คุณมีตั๋ว! ยินดีต้อนรับสู่กิจกรรมพิเศษ!")
    else:
        print("น่าเสียดาย คุณยังไม่มีตั๋วกิจกรรม")
else:
    print("เลเวลของคุณยังไม่ถึง 20 ไม่สามารถเข้าร่วมได้")

โจทย์ท้าทาย: โปรแกรมคำนวณค่าน้ำประปาอัตราก้าวหน้า

ลองใช้ความรู้เรื่อง if-elif-else มาแก้ปัญหาในชีวิตจริงกันดูครับ

สถานการณ์

การประปาส่วนภูมิภาคหมู่บ้าน "ศุภาลัยบุรี" มีอัตราการคิดค่าน้ำแบบอัตราก้าวหน้า (ยิ่งใช้เยอะ ยิ่งจ่ายแพงต่อหน่วย) ดังนี้:

  • ขั้นที่ 1: ปริมาณการใช้น้ำ 0 - 10 หน่วยแรก คิดหน่วยละ 5 บาท
  • ขั้นที่ 2: ปริมาณการใช้น้ำส่วนที่เกิน 10 ถึง 50 หน่วย คิดหน่วยละ 10 บาท
  • ขั้นที่ 3: ปริมาณการใช้น้ำส่วนที่เกิน 50 ถึง 100 หน่วย คิดหน่วยละ 12 บาท
  • ขั้นที่ 4: ปริมาณการใช้น้ำส่วนที่เกิน 100 ถึง 500 หน่วย คิดหน่วยละ 15 บาท
  • ขั้นที่ 5: ปริมาณการใช้น้ำส่วนที่เกิน 500 หน่วยขึ้นไป คิดหน่วยละ 18 บาท

ภารกิจ: จงเขียนโปรแกรมรับค่า "จำนวนหน่วยน้ำที่ใช้" (เป็นจำนวนเต็ม) แล้วคำนวณค่าน้ำที่ต้องจ่ายทั้งหมด

ตัวอย่างการทำงาน 1:
Enter water usage (units): 35
Result: Your water bill is 300.0 Baht
(คำนวณจาก: 10 หน่วยแรกราคา 50 บาท + 25 หน่วยถัดมาราคา 250 บาท)

ตัวอย่างการทำงาน 2:
Enter water usage (units): 120
Result: Your water bill is 1350.0 Baht
(คำนวณจาก: 10*5 + 40*10 + 50*12 + 20*15)
ทดลองเขียนโค้ดของคุณที่นี่

6. การทำงานซ้ำด้วย Loop

ลองนึกภาพว่าคุณต้องเขียนโปรแกรมเพื่อแสดงข้อความ "Hello" 100 ครั้ง การจะเขียนคำสั่ง print("Hello") 100 บรรทัดคงเป็นเรื่องที่น่าเบื่อและไม่ฉลาดนัก Loop คือเครื่องมือทรงพลังที่ช่วยให้เราสั่งโปรแกรมให้ทำงานบางอย่างซ้ำๆ ตามจำนวนรอบหรือเงื่อนไขที่เรากำหนดได้

ใน Python มี Loop หลักๆ 2 ประเภทคือ while และ for ซึ่งมีวิธีการใช้งานที่แตกต่างกัน


1. While Loop: วนซ้ำจนกว่าเงื่อนไขจะไม่เป็นจริง

while loop จะทำงานตามหลักการง่ายๆ คือ "ตราบใดที่เงื่อนไขยังเป็นจริง ก็จะทำงานในลูปไปเรื่อยๆ" มันเหมาะกับงานที่เราไม่รู้จำนวนรอบที่แน่นอน แต่รู้ว่าจะต้องหยุดเมื่อไหร่

การใช้งานพื้นฐาน

เราจะสร้างตัวนับ แล้ววนลูปไปเรื่อยๆ จนกว่าตัวนับจะถึงค่าที่กำหนด

count = 1 # 1. ตั้งค่าเริ่มต้นให้ตัวแปร
while count <= 5: # 2. ตรวจสอบเงื่อนไข
    print(f"รอบที่ {count}")
    count = count + 1 # 3. อัปเดตค่าตัวแปร (สำคัญมาก! ไม่งั้นจะกลายเป็นลูปไม่รู้จบ)
print("จบการทำงานของ while loop")
While Loop ไม่รู้จบ และการใช้ break

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

สถานการณ์: โปรแกรมบวกเลขสะสม ผู้ใช้จะป้อนตัวเลขเข้ามาเรื่อยๆ และโปรแกรมจะนำไปบวกสะสมไว้ จนกว่าผู้ใช้จะป้อนเลข 0 เพื่อบอกว่าพอแล้ว

total = 0
print("โปรแกรมบวกเลขสะสม (ป้อน 0 เพื่อจบการทำงาน)")
while True: # เริ่มลูปไม่รู้จบ
    num_str = input("ป้อนตัวเลข: ")
    num = int(num_str)
    if num == 0:
        print("คุณป้อน 0, กำลังออกจากโปรแกรม...")
        break  # ออกจาก while loop ทันที!
    total = total + num
    print(f"ยอดรวมตอนนี้คือ: {total}")
print(f"ยอดรวมสุดท้ายคือ {total}")

2. For Loop: วนซ้ำตามสมาชิกในกลุ่มข้อมูล

for loop เหมาะกับงานที่เรารู้จำนวนรอบที่แน่นอน หรือต้องการวนไปตามข้อมูล "แต่ละชิ้น" ในกลุ่มข้อมูล เช่น รายชื่อเพื่อน, รายการสินค้า หรือชุดของตัวเลข

ทำความรู้จักกับ List

ก่อนจะใช้ `for` loop ให้เต็มประสิทธิภาพ เราต้องรู้จักกับ List ก่อน ลองนึกภาพว่า List คือกล่องยาวๆ ที่มีช่องเก็บของได้หลายช่อง เราสามารถเก็บข้อมูลอะไรก็ได้ (ตัวเลข, ข้อความ) ไว้ใน List โดยใช้เครื่องหมาย [ ] ครอบและใช้ , คั่นข้อมูลแต่ละตัว

# List ของข้อความ (String)
player_classes = ["Knight", "Mage", "Archer", "Thief"]
# List ของตัวเลข (Integer)
scores = [88, 92, 75, 100, 64]
การวนลูปใน List (For-each Loop)

นี่คือรูปแบบการใช้ `for` loop ที่พบบ่อยและทรงพลังที่สุด เราสามารถสั่งให้โปรแกรมหยิบของออกมาจาก List ทีละชิ้น แล้วนำมาใช้งานได้เลย

player_classes = ["Knight", "Mage", "Archer", "Thief"]
# "สำหรับแต่ละ class ใน player_classes ให้ทำ..."
for p_class in player_classes:
    print(f"- {p_class} is a valid class.")

# ผลลัพธ์:
# - Knight is a valid class.
# - Mage is a valid class.
# - Archer is a valid class.
# - Thief is a valid class.
การใช้ for loop คู่กับ range()

แล้วถ้าเราแค่อยากจะวนลูปตามจำนวนรอบที่กำหนดล่ะ? เราสามารถใช้ฟังก์ชัน range() เพื่อสร้างชุดของตัวเลขขึ้นมาให้ `for` loop วิ่งตามได้

  • range(stop): สร้างตัวเลขตั้งแต่ 0 ไปจนถึง *ก่อน* ที่จะถึงค่า stop
  • range(start, stop): สร้างตัวเลขตั้งแต่ค่า start ไปจนถึง *ก่อน* ที่จะถึงค่า stop
  • range(start, stop, step): สร้างตัวเลขตั้งแต่ค่า start ไปจนถึง *ก่อน* ที่จะถึงค่า stop โดยจะเพิ่มขึ้นทีละ step
# วนลูป 5 รอบ (i จะเป็น 0, 1, 2, 3, 4)
print("--- วนลูป 5 รอบ ---")
for i in range(5):
    print(f"รอบที่ {i}")
# วนลูปตั้งแต่ 1 ถึง 5
print("\n--- วนลูปตั้งแต่ 1 ถึง 5 ---")
for i in range(1, 6):
    print(i, end=" ") # ผลลัพธ์: 1 2 3 4 5

# วนย้อนกลับ
print("\n--- นับถอยหลัง 5 ถึง 1 ---")
for i in range(5, 0, -1):
    print(i, end=" ") # ผลลัพธ์: 5 4 3 2 1

โจทย์ฝึกทักษะ: โปรแกรมแสดงสูตรคูณ

มาลองใช้ for loop และ range() เพื่อสร้างโปรแกรมที่มีประโยชน์กันดีกว่า

ภารกิจ

จงเขียนโปรแกรมที่รับตัวเลข "แม่สูตรคูณ" จากผู้ใช้ (เช่น แม่ 7) แล้วแสดงผลสูตรคูณตั้งแต่ 1 ถึง 12 ของแม่นั้นๆ

ตัวอย่างการทำงาน:
Enter multiplication table: 7
--- Multiplication Table of 7 ---
7 x 1 = 7
7 x 2 = 14
... (ไปเรื่อยๆ จนถึง) ...
7 x 12 = 84

ทดลองเขียนโค้ดของคุณที่นี่

7. โจทย์ปัญหาประยุกต์ (Applied Problems)

ยินดีด้วยครับ! ตอนนี้คุณได้เรียนรู้เครื่องมือพื้นฐานที่จำเป็นครบแล้ว ทั้งการรับค่า, การแสดงผล, การคำนวณ, การสร้างเงื่อนไข และการทำงานซ้ำ ถึงเวลาที่จะนำเครื่องมือทั้งหมดนี้มาประกอบกันเพื่อสร้างโปรแกรมที่ซับซ้อนและแก้ปัญหาในสถานการณ์จริงกันแล้ว


โจทย์ที่ 1: โปรแกรมจำลองการกด "Like"

ในโลกโซเชียลมีเดีย การกด "Like" ถือเป็นเรื่องปกติ มาสร้างโปรแกรมที่จำลองการกด Like และมีการตอบสนองพิเศษเมื่อถึงจุดที่กำหนดกันเถอะ

ภารกิจ: เขียนโปรแกรมรับ "ชื่อผู้ใช้" และ "จำนวนครั้งที่ต้องการกด Like" จากนั้นให้ใช้ Loop เพื่อแสดงข้อความ "Liked!" ตามจำนวนครั้งที่รับมา โดยมีเงื่อนไขพิเศษคือ ทุกๆ การ Like ครั้งที่ 10 (เช่น 10, 20, 30, ...) ให้แสดงข้อความว่า "Milestone! 10th Like!" แทน

Example 1:
Enter your username: P'Mark
How many times to like?: 12
Result:
P'Mark Liked! (1)
P'Mark Liked! (2)
...
P'Mark Liked! (9)
Milestone! 10th Like!
P'Mark Liked! (11)
P'Mark Liked! (12)

Example 2:
Enter your username: Nong'Jane
How many times to like?: 5
Result:
Nong'Jane Liked! (1)
Nong'Jane Liked! (2)
Nong'Jane Liked! (3)
Nong'Jane Liked! (4)
Nong'Jane Liked! (5)
ทดลองเขียนโค้ดของคุณที่นี่

โจทย์ที่ 2: โปรแกรมคำนวณโบนัสค่าประสบการณ์ (XP)

ในเกมออนไลน์ การทำภารกิจต่อเนื่อง (Streak) มักจะให้โบนัสพิเศษ เราจะมาสร้างโปรแกรมคำนวณ XP จากการทำภารกิจรายวันเป็นเวลา 1 สัปดาห์ (7 วัน)

ภารกิจ: เขียนโปรแกรมวนลูป 7 ครั้ง (สำหรับ 7 วัน) เพื่อรับค่า XP ที่ได้รับในแต่ละวัน จากนั้นคำนวณ XP รวม และมีเงื่อนไขโบนัสดังนี้: ถ้ามีวันที่ได้รับ XP เกิน 1000 ติดต่อกันตั้งแต่ 3 วันขึ้นไป จะได้รับ XP โบนัสเพิ่มอีก 500 คะแนน

💡 คำแนะนำ: คุณจะต้องสร้างตัวแปรมานับ "Streak" หรือจำนวนวันที่ทำได้เกิน 1000 ติดต่อกัน เมื่อทำไม่ได้ตามเป้า ก็ต้องรีเซ็ตตัวนับนี้ให้กลับเป็น 0
Example 1 (ได้รับโบนัส):
Day 1 XP: 800
Day 2 XP: 1200
Day 3 XP: 1500
Day 4 XP: 1100
Day 5 XP: 900
Day 6 XP: 700
Day 7 XP: 1300
Result: Total XP = 7500. Streak Bonus! +500. Final XP = 8000.

Example 2 (ไม่ได้รับโบนัส):
Day 1 XP: 1100
Day 2 XP: 1200
Day 3 XP: 800
Day 4 XP: 1500
Day 5 XP: 1600
Day 6 XP: 900
Day 7 XP: 1000
Result: Total XP = 8100. No bonus. Final XP = 8100.
ทดลองเขียนโค้ดของคุณที่นี่

โจทย์ที่ 3: โปรแกรมจำลองตะกร้าสินค้าออนไลน์

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

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

  • ยอดซื้อรวม 1,000 - 2,999 บาท: ลด 5%
  • ยอดซื้อรวม 3,000 - 4,999 บาท: ลด 10%
  • ยอดซื้อรวม 5,000 บาทขึ้นไป: ลด 15%
สุดท้ายให้แสดงยอดรวม, ส่วนลดที่ได้รับ, และยอดสุทธิที่ต้องชำระ

Example 1:
Enter item price (or 0 to finish): 800
Enter item price (or 0 to finish): 1200
Enter item price (or 0 to finish): 550
Enter item price (or 0 to finish): 0
Result:
Total: 2550.00 Baht
Discount (5%): 127.50 Baht
Net Total: 2422.50 Baht

Example 2:
Enter item price (or 0 to finish): 450
Enter item price (or 0 to finish): 300
Enter item price (or 0 to finish): 0
Result:
Total: 750.00 Baht
Discount (0%): 0.00 Baht
Net Total: 750.00 Baht
ทดลองเขียนโค้ดของคุณที่นี่

โจทย์ที่ 4: โปรแกรมวิเคราะห์ความแข็งแกร่งของรหัสผ่าน

ความปลอดภัยเป็นเรื่องสำคัญ มาสร้างโปรแกรมที่ช่วยวิเคราะห์รหัสผ่านของผู้ใช้ว่ามีความปลอดภัยเบื้องต้นหรือไม่

ภารกิจ: เขียนโปรแกรมรับรหัสผ่าน (เป็น String) แล้วใช้ `for` loop วนไปทีละตัวอักษรเพื่อตรวจสอบเงื่อนไข 4 ข้อ:

  1. รหัสผ่านมีความยาวอย่างน้อย 8 ตัวอักษร
  2. มีตัวอักษรพิมพ์ใหญ่อย่างน้อย 1 ตัว (A-Z)
  3. มีตัวอักษรพิมพ์เล็กอย่างน้อย 1 ตัว (a-z)
  4. มีตัวเลขอย่างน้อย 1 ตัว (0-9)
จากนั้นให้แสดงผลว่ารหัสผ่าน "แข็งแกร่ง (Strong)" หากผ่านครบทุกเงื่อนไข, "ปานกลาง (Medium)" หากผ่านเงื่อนไขข้อ 1 และผ่านข้อ 2-4 อีกอย่างน้อย 1 ข้อ, นอกนั้นถือว่า "อ่อนแอ (Weak)"

💡 คำแนะนำ: สร้างตัวแปร布尔 (Boolean) เช่น `has_upper = False`, `has_lower = False` เพื่อใช้เป็น "ธง" ในการเก็บสถานะการตรวจสอบ จากนั้นใช้เมธอดของ String เช่น `.isupper()`, `.islower()`, `.isdigit()` ในการตรวจสอบแต่ละตัวอักษร
Example 1:
Enter your password: Python123
Result: Password Strength: Strong

Example 2:
Enter your password: password
Result: Password Strength: Weak
ทดลองเขียนโค้ดของคุณที่นี่

8. ฟังก์ชัน (Function)

เมื่อโปรแกรมของเราเริ่มใหญ่ขึ้น การเขียนโค้ดทุกอย่างรวมกันเป็นสายยาวๆ จะทำให้จัดการได้ยาก, อ่านไม่รู้เรื่อง, และถ้ามีข้อผิดพลาดก็หาเจอยาก ฟังก์ชันคือเครื่องมือที่ช่วยให้เราแก้ปัญหานี้ โดยการ "จัดกลุ่มโค้ด" ที่ทำงานเฉพาะอย่างไว้ด้วยกัน แล้วตั้งชื่อให้มัน

1. ฟังก์ชันคืออะไร? มีประโยชน์อย่างไร?

ลองนึกภาพว่าฟังก์ชันคือ "เครื่องจักรขนาดเล็ก" ที่มีหน้าที่เฉพาะ เช่น "เครื่องชงกาแฟ" เราแค่กดปุ่ม (เรียกใช้ฟังก์ชัน) แล้วมันก็จะทำงานตามขั้นตอนของมัน (บดเมล็ด, ต้มน้ำ, กลั่น) จนได้ผลลัพธ์ (กาแฟ) ออกมา โดยที่เราไม่จำเป็นต้องรู้รายละเอียดข้างในทั้งหมด

ประโยชน์หลักของฟังก์ชัน (หลักการ D.R.Y. - Don't Repeat Yourself)
  • นำกลับมาใช้ซ้ำได้ (Reusability): เขียนครั้งเดียว เรียกใช้กี่ครั้งก็ได้
  • จัดระเบียบโค้ด (Organization): โค้ดหลักจะดูสะอาดตา อ่านง่ายขึ้น เพราะเหลือแค่การเรียกใช้ฟังก์ชัน
  • แก้ไขง่าย (Maintainability): ถ้าต้องการเปลี่ยนวิธีการคำนวณ ก็แก้แค่ที่เดียวคือภายในฟังก์ชันนั้นๆ

2. ฟังก์ชันที่มีอยู่แล้ว (Built-in & Module Functions)

Python ใจดีมีฟังก์ชันที่สร้างไว้ให้เราใช้ได้ทันทีมากมาย บางฟังก์ชันก็พร้อมใช้เลย (เช่น print(), int(), len()) แต่บางฟังก์ชันที่เฉพาะทางมากขึ้นจะถูกเก็บไว้ใน "กล่องเครื่องมือพิเศษ" ที่เรียกว่า โมดูล (Module) ซึ่งเราต้องสั่ง import เข้ามาก่อนใช้งาน

ตัวอย่างจากโมดูล math

เป็นโมดูลที่รวบรวมฟังก์ชันทางคณิตศาสตร์ขั้นสูง

import math # สั่งนำเข้ากล่องเครื่องมือ math
# math.sqrt() - ถอดรากที่สอง
num1 = 81
print(f"รากที่สองของ {num1} คือ {math.sqrt(num1)}") # ผลลัพธ์: 9.0

# math.ceil() - ปัดเศษขึ้นเสมอ
num2 = 4.1
print(f"ปัดเศษขึ้นของ {num2} คือ {math.ceil(num2)}") # ผลลัพธ์: 5

# math.pi - ค่าพาย
radius = 7
area = math.pi * (radius ** 2)
print(f"พื้นที่วงกลมรัศมี {radius} คือ {area:.2f}") # ผลลัพธ์: 153.94
ตัวอย่างจากโมดูล random

เป็นโมดูลที่ใช้สำหรับการสุ่ม ซึ่งจำเป็นมากในการสร้างเกม

import random # สั่งนำเข้ากล่องเครื่องมือ random
# random.randint(a, b) - สุ่มตัวเลขจำนวนเต็มจาก a ถึง b (รวม a และ b ด้วย)
dice_roll = random.randint(1, 6)
print(f"ทอยลูกเต๋าได้เลข: {dice_roll}") # ผลลัพธ์: (ตัวเลขสุ่มระหว่าง 1-6)

# random.choice(list) - สุ่มเลือกสมาชิก 1 ตัวจาก List
loot = ["ดาบ", "โล่", "ยาเพิ่มเลือด", "แผนที่"]
found_item = random.choice(loot)
print(f"คุณเปิดหีบสมบัติเจอ: {found_item}") # ผลลัพธ์: (สุ่มไอเทม 1 ชิ้นจาก List)

3. การสร้างฟังก์ชันของเราเอง (User-Defined Functions)

ถึงส่วนที่สนุกที่สุดแล้ว! คือการสร้าง "เครื่องจักร" ของเราเอง

3.1 การสร้างฟังก์ชันอย่างง่าย (ไม่มีการรับ-ส่งค่า)

เป็นฟังก์ชันที่ทำหน้าที่ตามที่สั่งเท่านั้น ไม่ต้องการข้อมูลเข้าและไม่มีการส่งผลลัพธ์กลับมา เหมาะสำหรับการแสดงผลข้อความซ้ำๆ

# 1. การ "นิยาม" ฟังก์ชัน
def show_menu():
    print("--- Welcome to My Game ---")
    print("1. Start Game")
    print("2. Settings")
    print("3. Exit")
# 2. การ "เรียกใช้" ฟังก์ชัน
print("โปรแกรมเริ่มทำงาน...")
show_menu() # เรียกใช้ครั้งที่ 1
print("--------------------------")
# ... โค้ดอื่นๆ ...
show_menu() # เรียกใช้ครั้งที่ 2
3.2 การสร้างฟังก์ชันที่มีการรับ-ส่งค่า (Parameters & Return)

นี่คือรูปแบบที่ใช้งานบ่อยที่สุด

  • พารามิเตอร์ (Parameter): คือ "ข้อมูลนำเข้า" ที่ฟังก์ชันต้องการเพื่อใช้ในการทำงาน เราจะกำหนดไว้ในวงเล็บ () ตอนที่สร้างฟังก์ชัน
  • การคืนค่า (Return): คือ "ผลลัพธ์" ที่ฟังก์ชันจะส่งกลับออกมาให้โปรแกรมหลักหลังทำงานเสร็จ เราใช้คำสั่ง return
import math
# นิยามฟังก์ชันที่รับ "radius" เป็นพารามิเตอร์
def calculate_circle_area(radius):
    area = math.pi * (radius ** 2)
    return area # คืนค่า "area" ที่คำนวณได้ออกไป

# --- โปรแกรมหลัก ---
# เรียกใช้ฟังก์ชันโดยส่งค่า 10 เข้าไป
my_area = calculate_circle_area(10)
# ตอนนี้ตัวแปร my_area จะเก็บผลลัพธ์ที่ฟังก์ชัน return กลับมา

print(f"พื้นที่ของวงกลมรัศมี 10 คือ {my_area:.2f}")

# เราสามารถเรียกใช้ซ้ำกับค่าอื่นได้
small_area = calculate_circle_area(3)
print(f"พื้นที่ของวงกลมรัศมี 3 คือ {small_area:.2f}")

โจทย์ประยุกต์: โปรแกรมผู้ช่วยคำนวณเรขาคณิต

ถึงเวลาทดสอบความเข้าใจด้วยการสร้างโปรแกรมที่มีเมนูให้ผู้ใช้เลือก และเรียกใช้ฟังก์ชันต่างๆ ตามที่ผู้ใช้ต้องการ

ภารกิจ

จงเขียนโปรแกรมที่มีเมนูให้ผู้ใช้เลือกว่าต้องการคำนวณอะไรระหว่าง "พื้นที่วงกลม" หรือ "พื้นที่สี่เหลี่ยมผืนผ้า" โดย:

  1. สร้างฟังก์ชัน calculate_circle() ที่ทำหน้าที่รับค่ารัศมี, คำนวณพื้นที่, และแสดงผลลัพธ์
  2. สร้างฟังก์ชัน calculate_rectangle() ที่ทำหน้าที่รับค่าความกว้างและความยาว, คำนวณพื้นที่, และแสดงผลลัพธ์
  3. ใช้ while loop ในโปรแกรมหลักเพื่อวนรับคำสั่งจากผู้ใช้ไปเรื่อยๆ จนกว่าผู้ใช้จะเลือกเมนู "ออกจากโปรแกรม"
ตัวอย่างการทำงาน:
--- Geometry Helper ---
1. Calculate Circle Area
2. Calculate Rectangle Area
3. Exit
Enter your choice: 1

-- Circle Area Calculator --
Enter radius: 10
The area of the circle is 314.16

--- Geometry Helper ---
1. Calculate Circle Area
2. Calculate Rectangle Area
3. Exit
Enter your choice: 2

-- Rectangle Area Calculator --
Enter width: 5
Enter length: 8
The area of the rectangle is 40

--- Geometry Helper ---
1. Calculate Circle Area
2. Calculate Rectangle Area
3. Exit
Enter your choice: 3
Exiting program. Goodbye!

ทดลองเขียนโค้ดของคุณที่นี่