Notes & software courses · Free to learn
Aph's Blog
On this page

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

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

เครื่องหมายที่ใช้คำนวณ เปรียบเทียบ และเชื่อมเงื่อนไข — พร้อมลำดับความสำคัญที่ต้องระวัง

ตัวดำเนินการ (operator) คือสัญลักษณ์ที่ใช้กระทำกับค่า เช่น + คูณ เปรียบเทียบ แบ่งเป็นกลุ่มหลัก ๆ ที่ต้องรู้จักทั้งหมด

ตัวดำเนินการเลขคณิต (Arithmetic)

python
print(7 + 3)   # 10   บวก
print(7 - 3)   # 4    ลบ
print(7 * 3)   # 21   คูณ
print(7 / 3)   # 2.333...  หาร (ได้ float เสมอ)
print(7 // 3)  # 2    หารปัดเศษลง (floor division)
print(7 % 3)   # 1    เศษจากการหาร (modulo)
print(2 ** 3)  # 8    ยกกำลัง (2 ยกกำลัง 3)
ตัวดำเนินการความหมาย7 op 2 ได้
+บวก9
-ลบ5
*คูณ14
/หาร (float)3.5
//หารปัดลง3
%เศษ (modulo)1
**ยกกำลัง49
% (modulo) มีประโยชน์เกินคาด

ใช้เช็คเลขคู่/คี่: n % 2 == 0 คือคู่ ใช้เช็คหารลงตัว: n % 5 == 0 คือหาร 5 ลงตัว และใช้วนค่าเป็นวง เช่น (i + 1) % 7 ให้เลขวันในสัปดาห์ 0-6 เทคนิคนี้เจอบ่อยมากในข้อสอบ

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

ผลลัพธ์ของการเปรียบเทียบเป็น bool (True หรือ False) เสมอ ใช้เป็นเงื่อนไขในบทถัดไป

python
print(5 == 5)   # True   เท่ากันไหม (สองตัว! ไม่ใช่ = ตัวเดียว)
print(5 != 3)   # True   ไม่เท่ากัน
print(5 > 3)    # True   มากกว่า
print(5 < 3)    # False  น้อยกว่า
print(5 >= 5)   # True   มากกว่าหรือเท่ากับ
print(5 <= 4)   # False  น้อยกว่าหรือเท่ากับ

print("abc" == "abc")  # True  เปรียบเทียบข้อความก็ได้
= กับ == ต่างกันคนละเรื่อง

= (ตัวเดียว) คือ "กำหนดค่า" เช่น x = 5 ส่วน == (สองตัว) คือ "เปรียบเทียบว่าเท่ากันไหม" เช่น x == 5 สับสนสองตัวนี้คือบั๊กยอดฮิตของมือใหม่ทุกคน

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

ใช้เชื่อมเงื่อนไขหลายอันเข้าด้วยกัน มี 3 ตัว: and, or, not

python
age = 20
has_id = True

print(age >= 18 and age < 60)  # True  (จริงทั้งคู่)
print(age < 13 or age > 65)    # False (ไม่จริงสักอัน)
print(not has_id)              # False (กลับค่า)

# เชื่อมหลายเงื่อนไขได้
can_enter = age >= 18 and has_id and age < 100
print(can_enter)               # True
ABA and BA or B
TrueTrueTrueTrue
TrueFalseFalseTrue
FalseTrueFalseTrue
FalseFalseFalseFalse
จำง่าย ๆ

and = ต้องจริงทั้งหมดถึงจะจริง (เข้มงวด) · or = จริงแค่อันเดียวก็พอ (ใจดี) · not = กลับค่าจริงเป็นเท็จ เท็จเป็นจริง

ตัวดำเนินการกำหนดค่าแบบย่อ (Augmented Assignment)

การอัปเดตค่าตัวเองเขียนย่อได้ ช่วยให้โค้ดสั้นลงและอ่านง่ายขึ้น เจอบ่อยมากในการนับและสะสมค่า

python
count = 10
count += 5    # เท่ากับ count = count + 5  -> 15
count -= 3    # -> 12
count *= 2    # -> 24
count //= 5   # -> 4
print(count)  # 4

text = "Ha"
text += "ha"  # ต่อข้อความก็ได้ -> 'Haha'
print(text)

ลำดับความสำคัญ (Operator Precedence)

เมื่อมีหลายตัวดำเนินการในบรรทัดเดียว Python ทำตามลำดับเหมือนคณิตศาสตร์: วงเล็บ → ยกกำลัง → คูณ/หาร → บวก/ลบ → เปรียบเทียบ → ตรรกะ ถ้าไม่แน่ใจให้ใส่วงเล็บไว้ ปลอดภัยและอ่านง่ายกว่า

python
print(2 + 3 * 4)      # 14   (คูณก่อน: 2 + 12)
print((2 + 3) * 4)    # 20   (วงเล็บก่อน: 5 * 4)
print(10 - 2 ** 2)    # 6    (ยกกำลังก่อน: 10 - 4)
print(True or False and False)  # True (and ก่อน or)

Membership (in) & Identity (is)

อีกสองกลุ่มที่ใช้บ่อยมาก: in เช็คว่า "มีอยู่ในกลุ่มไหม" และ is เช็คว่า "เป็น object เดียวกันไหม" (ต่างจาก == ที่เช็คค่าเท่ากัน)

python
# in / not in — เช็คสมาชิก (ใช้กับ list, str, dict)
print("a" in "cat")           # True
print(3 in [1, 2, 3])         # True
print("x" not in "cat")       # True

fruits = ["แอปเปิล", "กล้วย"]
if "กล้วย" in fruits:
    print("มีกล้วย")

# is — เช็คว่าเป็น object เดียวกัน (ใช้กับ None เป็นหลัก)
x = None
print(x is None)              # True  (วิธีมาตรฐานเช็ค None)
print(x == None)              # ได้ผลเหมือนกันแต่ไม่นิยม — ใช้ is
== เทียบค่า, is เทียบ object

ใช้ == เกือบทุกครั้งที่เทียบค่า ส่วน is ใช้เฉพาะกับ None (x is None) ตามธรรมเนียม Python — อย่าใช้ is เทียบตัวเลข/ข้อความทั่วไป เพราะผลอาจไม่เป็นอย่างที่คิด

สรุปหัวข้อนี้

  • เลขคณิต: + - * / // % ** — จำ % ไว้ใช้เช็คคู่/คี่และหารลงตัว
  • เปรียบเทียบ: == != > < >= <= ได้ผลเป็น True/False (อย่าสับสน = กับ ==)
  • ตรรกะ: and (จริงทั้งหมด), or (จริงอย่างน้อยหนึ่ง), not (กลับค่า)
  • กำหนดค่าย่อ: += -= *= //= ช่วยอัปเดตค่าตัวเองสั้นลง
  • membership: in / not in เช็คสมาชิก; identity: is ใช้เช็ค None
  • ลำดับความสำคัญตามคณิตศาสตร์ — ไม่แน่ใจให้ใส่วงเล็บ
แบบฝึกหัด

1) รับเลขจาก input() แล้วบอกว่าคู่หรือคี่ด้วย % 2) คำนวณว่า 137 วินาที = กี่นาทีกี่วินาที (ใช้ // และ %) 3) ลองทำนายผลของ 2 + 3 * 4 ** 2 ก่อนรันจริง 4) เขียนเงื่อนไขเช็คว่าปีหนึ่งเป็นปีอธิกสุรทินไหม (หาร 4 ลงตัว และไม่หาร 100 ลงตัว หรือหาร 400 ลงตัว)