EP07: โครงสร้างข้อมูลขั้นสูง: ดิกชันนารีและเซต
(1) ทบทวนความรู้เดิม (2) ดิกชันนารี (Dictionaries) ใน Python: โครงสร้างข้อมูลแบบ Key-Value 📖 (3) เซต (Sets) ใน Python: กลุ่มของข้อมูลที่ไม่ซ้ำกัน 🛡️
(1) ทบทวนความรู้เดิม
True
(จริง) และ False
(เท็จ) ซึ่งเป็นผลลัพธ์สำคัญในการตัดสินใจของโปรแกรม==
(เท่ากับ), !=
(ไม่เท่ากับ)>
(มากกว่า), <
(น้อยกว่า)>=
(มากกว่าหรือเท่ากับ), <=
(น้อยกว่าหรือเท่ากับ)True
หรือ False
เสมอ
5 > 3
(ได้ True
), 10 == 20
(ได้ False
), 'hello' == 'hello'
(ได้ True
)and
(และ): ผลลัพธ์เป็น True
เมื่อเงื่อนไข ทั้งสองข้าง เป็น True
(age >= 18) and (country == "Thailand")
or
(หรือ): ผลลัพธ์เป็น True
เมื่อเงื่อนไข อย่างน้อยหนึ่งข้าง เป็น True
(day == "Saturday") or (day == "Sunday")
not
(ไม่): กลับค่าความจริงจาก True
เป็น False
และจาก False
เป็น True
not is_member
input()
และการแปลงชนิดข้อมูล:
input()
คืนค่าเป็นสตริง (str
) เสมอint()
, float()
เพื่อแปลงเป็นตัวเลขก่อนนำไปคำนวณหรือเปรียบเทียบเชิงตัวเลข(2) แนวคิดการควบคุมการไหลของโปรแกรม (Control Flow Concept)
(3) โครงสร้างควบคุมแบบเลือกทำทางเดียว (One-Way Selection): if
statement
if <เงื่อนไข (condition)>:
# ชุดคำสั่งที่จะทำงานเมื่อเงื่อนไขเป็นจริง
# (ต้องมีการเยื้องเข้ามา)
statement_1
statement_2
...
# ชุดคำสั่งต่อไป (อยู่นอกบล็อก if)
<เงื่อนไข>
<เงื่อนไข>
เป็น True
ชุดคำสั่งที่อยู่ภายใต้ if
(ที่เยื้องเข้าไป) จะถูกทำงาน<เงื่อนไข>
เป็น False
ชุดคำสั่งที่อยู่ภายใต้ if
จะถูกข้ามไป และโปรแกรมจะไปทำงานคำสั่งถัดไปที่อยู่นอกบล็อก if
if
IndentationError
หรือทำให้โปรแกรมทำงานผิดพลาดage = int(input("กรุณาป้อนอายุของคุณ: "))
if age >= 18:
print("คุณเป็นผู้ใหญ่แล้ว")
print("จบการตรวจสอบอายุ") # คำสั่งนี้จะทำงานเสมอ ไม่ว่าเงื่อนไขจะเป็นจริงหรือเท็จ
score = 75
if score >= 50:
print("ยินดีด้วย! คุณสอบผ่าน")
print("คุณได้คะแนน:", score)
(4) โครงสร้างควบคุมแบบเลือกทำสองทาง (Two-Way Selection): if-else
statement
if <เงื่อนไข (condition)>:
# ชุดคำสั่งที่จะทำงานเมื่อเงื่อนไขเป็นจริง
statement_block_1
else:
# ชุดคำสั่งที่จะทำงานเมื่อเงื่อนไขเป็นเท็จ
statement_block_2
# ชุดคำสั่งต่อไป
<เงื่อนไข>
True
ให้ทำ statement_block_1
แล้วข้าม statement_block_2
ไปFalse
ให้ข้าม statement_block_1
แล้วไปทำ statement_block_2
if
หรือ else
) ที่ถูกทำงานnumber = int(input("ป้อนตัวเลขจำนวนเต็ม: "))
if number % 2 == 0:
print(f"{number} เป็นเลขคู่")
else:
print(f"{number} เป็นเลขคี่")
temperature = float(input("อุณหภูมิวันนี้ (องศาเซลเซียส): "))
if temperature > 30:
print("วันนี้อากาศร้อนมาก!")
else:
print("วันนี้อากาศไม่ร้อนเท่าไหร่")
(5) โครงสร้างควบคุมแบบเลือกทำหลายทาง (Multi-Way Selection): if-elif-else
statement
if <เงื่อนไข_1>:
# ชุดคำสั่งเมื่อ เงื่อนไข_1 เป็นจริง
statement_block_1
elif <เงื่อนไข_2>:
# ชุดคำสั่งเมื่อ เงื่อนไข_1 เป็นเท็จ และ เงื่อนไข_2 เป็นจริง
statement_block_2
elif <เงื่อนไข_3>:
# ชุดคำสั่งเมื่อ เงื่อนไข_1,2 เป็นเท็จ และ เงื่อนไข_3 เป็นจริง
statement_block_3
# ... (สามารถมี elif เพิ่มเติมได้ตามต้องการ)
else:
# ชุดคำสั่งเมื่อทุกเงื่อนไขข้างบนเป็นเท็จทั้งหมด (เป็นทางเลือกเสริม)
statement_block_else
# ชุดคำสั่งต่อไป
<เงื่อนไข_1>
ถ้าเป็น True
ทำ statement_block_1
แล้วออกจากโครงสร้าง if-elif-else
ทั้งหมด<เงื่อนไข_1>
เป็น False
ให้ตรวจสอบ <เงื่อนไข_2>
ถ้าเป็น True
ทำ statement_block_2
แล้วออกจากโครงสร้างelif
ที่เหลือif
และ elif
ทั้งหมดเป็น False
และมี else
อยู่ โปรแกรมจะทำ statement_block_else
else
เป็นส่วนที่ไม่บังคับ (optional)score = int(input("ป้อนคะแนนสอบ (0-100): "))
if score >= 80:
grade = "A"
elif score >= 70:
grade = "B"
elif score >= 60:
grade = "C"
elif score >= 50:
grade = "D"
else:
grade = "F"
print(f"คุณได้เกรด: {grade}")
choice = input("เลือกเมนู (1=กาแฟ, 2=ชา, 3=น้ำผลไม้): ")
if choice == '1':
print("คุณเลือกกาแฟ ราคา 50 บาท")
elif choice == '2':
print("คุณเลือกชา ราคา 40 บาท")
elif choice == '3':
print("คุณเลือกน้ำผลไม้ ราคา 60 บาท")
else:
print("คุณเลือกไม่ถูกต้อง กรุณาเลือกใหม่")
(6) การสร้างเงื่อนไขที่ซับซ้อน (Complex Conditions)
and
, or
, not
เพื่อเชื่อมโยงนิพจน์เปรียบเทียบหลายๆ อันเข้าด้วยกันage = 25
is_student = True
if age < 18:
print("เป็นผู้เยาว์")
elif age >= 18 and age <= 60:
print("เป็นวัยทำงาน")
if is_student: # Nested if example
print("และยังเป็นนักศึกษา")
else:
print("เป็นผู้สูงอายุ")
# ตัวอย่างการใช้ or
day = input("วันนี้วันอะไร (เช่น Monday, Sunday): ").capitalize() # ทำให้ตัวแรกเป็นตัวใหญ่
if day == "Saturday" or day == "Sunday":
print(f"{day} เป็นวันหยุดสุดสัปดาห์!")
else:
print(f"{day} เป็นวันทำงาน")
not
มาก่อน and
และ and
มาก่อน or
ใช้วงเล็บ ()
เพื่อจัดกลุ่มและทำให้อ่านง่ายขึ้น(7) (เสริม) คำสั่ง if
ซ้อน if
(Nested if
Statements)
if
(หรือ if-else
, if-elif-else
) อยู่ภายในบล็อกคำสั่งของโครงสร้าง if
(หรือ else
, elif
) อีกชั้นหนึ่งusername = input("Username: ")
if username == "admin":
password = input("Password: ")
if password == "secret123":
print("เข้าสู่ระบบสำเร็จในฐานะผู้ดูแลระบบ")
else:
print("รหัสผ่านไม่ถูกต้อง")
elif username == "user":
print("เข้าสู่ระบบสำเร็จในฐานะผู้ใช้งานทั่วไป")
else:
print("ไม่พบชื่อผู้ใช้งานนี้")
if
หลายชั้นเกินไปอาจทำให้โค้ดอ่านยากและซับซ้อน ควรพิจารณาทางเลือกอื่นถ้าเป็นไปได้ (เช่น การใช้ and
หรือการแยกเป็นฟังก์ชันในภายหลัง)(8) ความสำคัญของการเยื้อง (Indentation) ใน Python
{}
เพื่อกำหนดบล็อกของโค้ดเหมือนภาษาอื่น แต่ใช้ การเยื้อง:
IndentationError
: จะเกิดขึ้นถ้าการเยื้องไม่ถูกต้อง หรือไม่สอดคล้องกันif
)
7
-> Output: คุณป้อนเลขบวก
-3
-> (ไม่มี Output จาก if)0
-> (ไม่มี Output จาก if)1200
-> Output: คุณได้รับส่วนลดพิเศษ 5%!
800
-> (ไม่มี Output)if-else
)
and
ในเงื่อนไข)if-elif-else
)
.upper()
หรือ .lower()
กับ input เพื่อทำให้การเปรียบเทียบง่ายขึ้น)and
, or
, not
)
.lower()
หรือ .capitalize()
กับ input เพื่อให้ง่ายต่อการเปรียบเทียบ)if
)
แบบฝึกหัดประยุกต์ (เลือกทำ 1-2 ข้อ หรือเป็นการบ้าน)
--- Welcome to Our Cafe ---
1. Espresso (50 Baht)
2. Latte (60 Baht)
3. Cappuccino (65 Baht)
4. Americano (45 Baht)
Please enter your choice (1-4):
--- Welcome to Our Cafe ---
1. Espresso (50 Baht)
2. Latte (60 Baht)
3. Cappuccino (65 Baht)
4. Americano (45 Baht)
Please enter your choice (1-4):
จงเขียนโปรแกรมคำนวณตามกฏของโฮห์มให้มีการทำงานดังนี้
---โปรแกรมคำนวณ Ohm's Law---
1. คำนวณแรงดัน (Voltage)
2. คำนวณกระแส (Current)
3. คำนวณความต้านทาน (Resistance)
กรุณาเลือกตัวเลือก (1/2/3):
จากนั้นให้รับค่าแล้วคำนวณตามสูตร แล้วแาดงผลลัพธ์