ตัวดำเนินการเชิงเปรียบเทียบ != หมายถึงอะไร

ตัวดำเนินการ (Operators) คือกลุ่มของเครื่องหมายหรือสัญลักษณ์ที่ใช้ทำงานเหมือนกับฟังก์ชัน แต่แตกต่างกันตรงไวยากรณ์หรือความหมายในการใช้งาน ในภาษา Python นั้นสนับสนุนตัวดำเนินการประเภทต่างๆ สำหรับการเขียนโปรแกรม เช่น ตัวดำเนินการ

a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
1 เป็นตัวดำเนินการทางคณิตศาสตร์ที่ใช้สำหรับการบวกตัวเลขเข้าด้วยกัน หรือตัวดำเนินการ
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
2 เป็นตัวดำเนินการเพื่อให้เปรียบเทียบค่าสองค่า

นี่เป็นรายการของตัวดำเนินการในภาษา Python ที่คุณจะได้เรียนในบทนี้

  • Assignment operator
  • Arithmetic operators
  • Comparison operators
  • Logical operators
  • Bitwise operators
  • Sequence Operators
  • Truth Value Testing

Assignment operator

ตัวดำเนินการที่เป็นพื้นฐานที่สุดสำหรับการเขียนโปรแกรมในทุกๆ ภาษาก็คือ ตัวดำเนินการกำหนดค่า (Assignment operator) ตัวดำเนินการนี้แสดงโดยใช้เครื่องหมายเท่ากับ (

a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
3) มันใช้สำหรับกำหนดค่าให้กับตัวแปร มาดูตัวอย่างการใช้งานในภาษา Python

a = 3
b = 5.29
c = b
name = 'Mateo'
my_list = [2, 5, 8, 10, 24]
x, y = 10, 20

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

Arithmetic operators

ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic operators) คือตัวดำเนินการที่ใช้สำหรับการคำนวณทางคณิตศาสตร์ในพื้นฐาน เช่น การบวก การลบ การคูณ และการหาร มากไปกว่านั้น ในภาษา Python ยังมีตัวดำเนินการทางคณิตศาสตร์เพิ่มเติม เช่น การหารเอาเศษ (Modulo) การหารแบบเลขจำนวนเต็ม และการยกกำลัง เป็นต้น

นี่เป็นตารางของตัวดำเนินการทางคณิตศาสตร์ในภาษา Python

OperatorNameExample+Additiona + b-Subtractiona - b*Multiplicationa * b/Divisiona / b//Division and floora // b%Moduloa % b**Powera ** b

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

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power

ในตัวอย่าง เราได้ประกาศตัวแปร

a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
4 และ
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
5 และกำหนดค่าให้กับตัวแปรทั้งสองเป็น 5 และ 3 ตามลำดับ ในสี่ตัวดำเนินการแรกเป็นการดำเนินการทางคณิตศาสตร์พื้นฐาน สำหรับตัวดำเนินการ
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
6 เป็นการหารเช่นเดียวกัน แต่ผลลัพธ์ของการหารนั้นจะตัดส่วนที่เป็นทศนิยมทิ้งไป ส่วนตัวดำเนินการ
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
7 นั้นเป็นการหารโดยผลลัพธ์จะเป็นเศษของการหารแทน ส่วนสุดท้าย
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
8 นั้นแทนการยกกำลัง

a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125

นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการใช้งานตัวดำเนินการทางคณิตศาสตร์

Comparison operators

ตัวดำเนินการเปรียบเทียบ (Comparison operators) คือตัวดำเนินการที่ใช้สำหรับเปรียบเทียบค่าหรือค่าในตัวแปร ซึ่งผลลัพธ์ของการเปรียบเทียบนั้นจะเป็น True หากเงื่อนไขเป็นจริง และเป็น False หากเงื่อนไขไม่เป็นจริง ตัวดำเนินการเปรียบเทียบมักจะใช้กับคำสั่งตรวจสอบเงื่อนไข if และคำสั่งวนซ้ำ for while เพื่อควบคุมการทำงานของโปรแกรม

นี่เป็นตารางของตัวดำเนินการเปรียบเทียบในภาษา Python

OperatorNameExample<Less thana < b<=Less than or equala <= b>Greater thana > b>=Greater than or equala >= b==Equala == b!=Not equala != bisObject identitya is bis notNegated object identitya is not b

ในตาราง แสดงให้เห็นถึงตัวดำเนินการเปรียบเทียบประเภทต่างๆ เช่น การเปรียบเทียบความเท่ากัน โดยคุณสามารถใช้ตัวดำเนินการเปรียบเทียบเพื่อเปรียบเทียบว่าค่าในตัวแปรนั้นเท่ากันหรือไม่ หรือการเปรียบเทียบค่ามากกว่าหรือน้อยกว่า ต่อไปมาดูตัวอย่างการใช้งานตัวดำเนินการเปรียบเทียบในภาษา Python

# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()

ในตัวอย่าง เป็นการเปรียบเทียบค่าประเภทต่างๆ ในคำสั่งกลุ่มแรกนั้นเป็นการใช้ตัวดำเนินการเปรียบเทียบกับค่าคงที่ ในกลุ่มที่สองเป็นการใช้งานกับตัวแปร ซึ่งถ้าหากเงื่อนไขเป็นจริงจะได้ผลลัพธ์เป็น True และถ้าหากไม่จริงจะได้ผลลัพธ์เป็น False

4 == 4 : True
1 < 2: True
3 > 10: False
2 <= 1.5 False

a != b: True
a - b == 2: True

นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการใช้ตัวดำเนินการเปรียบเทียบ

สำหรับตัวดำเนินการ

a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
9 และ
# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
0 นั้นจะเกี่ยวข้องกับ การเขียนโปรแกรมเชิงวัตถุ ซึ่งเป็นรูปแบบการเขียนโปรแกรมขั้นสูง มันใช้สำหรับตรวจสอบความเท่ากันของออบเจ็ค โดยออบเจ็คเหล่านั้นจะต้องอ้างถึงที่อยู่ตำแหน่งเดียวกันในหน่วยความจำ (Reference type) เนื่องจากมันค่อนข้างซับซ้อน ดังนั้น เรามีอีกตัวอย่างที่จะช่วยให้คุณเข้าใจมากขึ้น

a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20

ในตัวอย่าง เราได้ประกาศตัวแปร

a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
4 และกำหนดค่าเป็น
# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
2 และประกาศตัวแปร
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
5 โดยกำหนดค่าของมันให้เท่ากับค่าของตัวแปร
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
4 คุณจะเห็นว่าในคำสั่ง
# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
5 นั้นจะสร้างตัวแปรใหม่ที่ไม่เกี่ยวข้องกัน แต่มันแตกต่างสำหรับการเขียนโปรแกรมเชิงวัตถุ เพราะการใช้ตัวดำเนินการกำหนดค่า (
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
3) กับออบเจ็คนั้น จะเป็นการอ้างถึงหน่วยความจำแทน มาดูตัวอย่างถัดไป

class Person:

    def __init__(self, name):
        self.name = name

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

p1 = Person('Tommy')
p2 = Person('Jane')
# Tell p3 to use memory address of p1
p3 = p1

print('Memory address of a: ', id(p1))
print('Memory address of b: ', id(p2))
print('Memory address of c: ', id(p3))

print('p1 name:', p1.getName())
print('p3 name:', p1.getName())

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')
print('p1 name:', p1.getName())
print('p3 name:', p3.getName())

print('p1 is p2:', p1 is p2)
print('p1 is p3:', p1 is p3)

ในตัวอย่าง เราได้สร้างคลาส

# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
7 ซึ่งเป็นคลาสของบุคคลที่มีแอตทริบิวต์เป็น
# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
8 หลังจากนั้นเราได้สร้างออบเจ็คจากคลาสมาสองออบเจ็คคือ
# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
9 และ
4 == 4 : True
1 < 2: True
3 > 10: False
2 <= 1.5 False

a != b: True
a - b == 2: True
0

p3 = p1

ในบรรทัดถัดมา เรากำหนดตัวแปร

# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
9 ให้เท่ากับตัวแปร
4 == 4 : True
1 < 2: True
3 > 10: False
2 <= 1.5 False

a != b: True
a - b == 2: True
2 การทำเช่นนี้กับตัวแปรที่เป็น instance ของคลาสนั้นไม่ได้เป็นการสร้างออบเจ็คใหม่ขึ้นมา แต่เป็นการสร้างตัวแปรขึ้นมา โดยที่ตัวแปรนั้นมีหน่วยความจำเดียวกับตัวแปร
# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
9 นั่นจะทำให้สองตัวแปรนี้เป็นออบเจ็คเดียวกัน เพราะมันอ้างถึงข้อมูบเดียวกันในหน่วยความจำ และต่อมาเราได้ใช้ฟังก์
4 == 4 : True
1 < 2: True
3 > 10: False
2 <= 1.5 False

a != b: True
a - b == 2: True
4 เพื่อตรวจสอบที่อยู่ของออบเจ็คในหน่วยความจำ จะเห็นว่าทั้งสองตัวแปรมีที่อยู่เดียวกัน

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')

ในคำสั่งต่อมา เป็นการเปลี่ยนชื่อในตัวแปร

4 == 4 : True
1 < 2: True
3 > 10: False
2 <= 1.5 False

a != b: True
a - b == 2: True
2 เป็น
4 == 4 : True
1 < 2: True
3 > 10: False
2 <= 1.5 False

a != b: True
a - b == 2: True
6 และหลังจากนั้นเราแสดงชื่อในแต่ละตัวแปรอีกครั้ง และผลลัพธ์ที่ได้คือชื่อของตัวแปร
# Constant comparison
print('4 == 4 :', 4 == 4)
print('1 < 2:', 1 < 2)
print('3 > 10:', 3 > 10)
print('2 <= 1.5', 2 <= 1.5)
print()

# Variable comparison
a = 10
b = 8
print('a != b:', a != b)
print('a - b == 2:', a - b == 2)
print()
9 ก็เปลี่ยนไปเช่นกัน นี่เป็นการยืนยันว่าทั้งสองตัวแปรนั้นเป็นออบเจ็คเดียวกัน และในตอนท้าย เราได้ทำการเปรียบเทียบด้วยตัวดำเนินการ
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
9

Memory address of a:  52840560
Memory address of b:  52840624
Memory address of c:  52840560
p1 name: Tommy
p3 name: Tommy
Changed p3 name to 'Tom'
p1 name: Tom
p3 name: Tom
p1 is p2: False
p1 is p3: True

และนี่เป็นผลลัพธ์การทำงานของโปรแกรม

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

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
0

ในตัวอย่าง เป็นโปรแกรมในการรับค่าตัวเลขแบบ Integer แล้วเราใช้คำสั่ง if ในการตรวจสอบตัวเลขสองอย่างคือ ตรวจสอบว่าเป็นเลขคู่หรือเลขคี่ และตรวจสอบว่าเป็นจำนวนเต็มบวก เต็มลบ หรือศูนย์ ในเงื่อนไข

4 == 4 : True
1 < 2: True
3 > 10: False
2 <= 1.5 False

a != b: True
a - b == 2: True
9 นั้นเป็นการตรวจโดยการหารเอาเศษ ซึ่งมีความหมายว่า หากตัวเลขนั้นหารแล้วมีเศษเท่ากับ 0 นั้นหมายความว่าตัวเลขจะเป็นเลขคู่และในบล็อคคำสั่ง if จะทำงาน และถ้าไม่เป็นจริงโปรแกรมจะทำงานในบล็อคคำสั่ง else แทน ในบล็อคของคำสั่ง if ต่อมา เป็นการตรวจสอบว่าตัวเลขนั้นเป็นตัวเลขที่มากกว่า น้อยกว่า หรือเท่ากับศูนย์

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
1
a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
2

นี่เป็นผลลัพธ์การทำงานของโปรแกรมสองครั้ง เมื่อเรากรอกตัวเลขเป็น 5 และ -1 ตามลำดับ และโปรแกรมจะบอกเราว่าตัวเลขนั้นเป็นแบบไหน

Logical operators

ตัวดำเนินการตรรกศาสตร์ (Logical operators) คือตัวดำเนินการที่ใช้สำหรับประเมินค่าทางตรรกศาสตร์ ซึ่งเป็นค่าที่มีเพียงจริง (True) และเท็จ (False) เท่านั้น โดยทั่วไปแล้วเรามักใช้ตัวดำเนินการตรรกศาสตร์ในการเชื่อม Boolean expression ตั้งแต่หนึ่ง expression ขึ้นไปและผลลัพธ์สุดท้ายที่ได้นั้นจะเป็น Boolean

นี่เป็นตารางของตัวดำเนินการตรรกศาสตร์ในภาษา Python

OperatorExampleResultanda and bTrue if a and b are true, else Falseora or bTrue if a or b are true, else Falsenotnot aTrue if a is False, else True

ในภาษา Python นั้นมีตัวดำเนินการทางตรรกศาสตร์ 3 ชนิด คือ ตัวดำเนินการ

a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20
0 เป็นตัวดำเนินการที่ใช้เชื่อมสอง Expression และได้ผลลัพธ์เป็น True หาก Expression ทั้งสองเป็น True ไม่เช่นนั้นจะได้ผลลัพธ์เป็น False ตัวดำเนินการ
a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20
1 เป็นตัวดำเนินการที่ใช้เชื่อมสอง Expression และได้ผลลัพธ์เป็น True หากมีอย่างน้อยหนึ่ง Expression ที่เป็น True ไม่เช่นนั้นได้ผลลัพธ์เป็น False และตัวดำเนินการ
a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20
2 ใช้ในการกลับค่าจาก True เป็น False และในทางกลับกัน มาดูตัวอย่างการใช้งาน

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
3

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

a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20
0 เพื่อตรวจสอบว่าทั้งชื่อผู้ใช้และรหัสผ่านนั้นถูกต้อง ทำให้เงื่อนไขเป็นจริงและในบล็อคคำสั่ง if จะทำงาน

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
4

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเรากรอกชื่อผู้ใช้เป็น "mateo" และรหัสผ่านเป็น "3456" ซึ่งถูกต้องทั้งสองอย่างทำให้สามารถเข้าสู่ระบบได้สำเร็จ

Bitwise operators

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

นี่เป็นตารางของตัวดำเนินการระดับบิตในภาษา Python

OperatorNameResult&Bitwise anda & b|Bitwise ora | b^Bitwise exclusive ora ^ b<<Bitwise shifted lefta << b>>Bitwise shifted righta >> b~Bitwise invert~a

ตัวดำเนินการระดับบิตใช้จัดการกับบิตของข้อมูลที่เป็นตัวเลข โดยปกติแล้วเมื่อเรากำหนดค่าให้กับตัวแปรนั้น คอมพิวเตอร์จะเก็บค่าเหล่านี้ในหน่วยความจำในรูปแบบของตัวเลขฐานสอง (binary form) ซึ่งประกอบไปด้วยเพียง 1 และ 0 เท่านั้น ดังนั้นเราใช้ตัวดำเนินการเหล่านี้ในการจัดการกับข้อมูลได้โดยตรง มาดูตัวอย่าง

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
5

ในตัวอย่าง เป็นการใช้ตัวดำเนินการระดับบิตประเภทต่างๆ ในภาษา Python เรามีตัวแปร

a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
4 และตัวแปร
a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
5 และกำหนดค่า 3 และ 5 ให้กับตัวแปรตามลำดับ เราได้คอมเมนต์ค่าในฐานสองไว้ด้วย ในการทำงานนั้นโปรแกรมจะทำงานทีละคู่ของบิต ดูวิธีการคำนวณต่อไปนี้ประกอบ

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
6

จากการแสดงการทำงานข้างบนนั้น ในตัวดำเนินการ

a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20
6 หากทั้งสองบิตมีค่าเป็น 1 จะได้ผลลัพธ์เป็น 1 ไม่เช่นนั้น 0 ในตัวดำเนินการ
a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20
7 หากอย่างน้อยหนึ่งบิตที่มีค่าเป็น 1 จะได้ผลลัพธ์เป็น 1 ไม่เช่นนั้น 0 ในตัวดำเนินการ
a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20
8 หากทั้งสองบิตนั้นแตกต่างกันจะได้ผลลัพธ์เป็น 1 ไม่เช่นนั้น 0 และในตัวดำเนินการ
a = 10
b = a # Assign value of a to b
b = 20
print(a) # result 10
print(b) # result  20
9 นั้นเป็นการกลับค่าของบิต หลังจากนั้นเราแปลงผลลัพธ์ที่ได้กลับไปยังฐานสิบ

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
7

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

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
8

นี่เป็นผลลัพธ์การทำงานของโปรแกรม ในการใช้งานตัวดำเนินการระดับบิตในภาษา Python

Sequence Operators

ในภาษา Python มีตัวดำเนินการในการตรวจสอบการเป็นสมาชิกในออบเจ็คประเภท List Tuple และ Dictionary ตัวดำเนินการ

class Person:

    def __init__(self, name):
        self.name = name

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

p1 = Person('Tommy')
p2 = Person('Jane')
# Tell p3 to use memory address of p1
p3 = p1

print('Memory address of a: ', id(p1))
print('Memory address of b: ', id(p2))
print('Memory address of c: ', id(p3))

print('p1 name:', p1.getName())
print('p3 name:', p1.getName())

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')
print('p1 name:', p1.getName())
print('p3 name:', p3.getName())

print('p1 is p2:', p1 is p2)
print('p1 is p3:', p1 is p3)
0 ใช้ในการตรวจสอบถ้าหากค่านั้นมีอยู่ในออบเจ็ค ถ้าหากพบจะได้ผลลัพธ์เป็น True และหากไม่พบจะได้ผลลัพธ์เป็น False และตัวดำเนินการ
class Person:

    def __init__(self, name):
        self.name = name

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

p1 = Person('Tommy')
p2 = Person('Jane')
# Tell p3 to use memory address of p1
p3 = p1

print('Memory address of a: ', id(p1))
print('Memory address of b: ', id(p2))
print('Memory address of c: ', id(p3))

print('p1 name:', p1.getName())
print('p3 name:', p1.getName())

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')
print('p1 name:', p1.getName())
print('p3 name:', p3.getName())

print('p1 is p2:', p1 is p2)
print('p1 is p3:', p1 is p3)
1 นั้นจะทำงานตรงกันข้าม หากไม่พบจะได้ผลลัพธ์เป็น True แทน

นี่เป็นตารางของตัวดำเนินการในการตรวจสอบการเป็นสมาชิกในออบเจ็ค ในภาษา Python

OperatorNameExampleinObject membershipsa in bnot inNegated object membershipsa not in b

มาดูตัวอย่างการใช้งานของตัวดำเนินการเหล่านี้ เราจะใช้ในการตรวจสอบการมีอยู่ของข้อมูลใน List และ Dictionary

a = 5
b = 3
print("a + b = ", a + b)
print("a - b = ", a - b)
print("a * b = ", a * b)
print("a / b = ", a / b)
print("a // b = ", a // b) # floor number to integer
print("a % b = ", a % b)   # get division remainder
print("a ** b = ", a ** b) # power
9

ในตัวอย่าง เป็นการตรวจสอบข้อมูลใน List และ Dictionary ในโปรแกรมของเรามีตัวแปร List

class Person:

    def __init__(self, name):
        self.name = name

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

p1 = Person('Tommy')
p2 = Person('Jane')
# Tell p3 to use memory address of p1
p3 = p1

print('Memory address of a: ', id(p1))
print('Memory address of b: ', id(p2))
print('Memory address of c: ', id(p3))

print('p1 name:', p1.getName())
print('p3 name:', p1.getName())

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')
print('p1 name:', p1.getName())
print('p3 name:', p3.getName())

print('p1 is p2:', p1 is p2)
print('p1 is p3:', p1 is p3)
2 ซึ่งมีรายชื่ออยู่ภายใน เราใช้คำสั่ง if เพื่อตรวจสอบว่า
class Person:

    def __init__(self, name):
        self.name = name

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

p1 = Person('Tommy')
p2 = Person('Jane')
# Tell p3 to use memory address of p1
p3 = p1

print('Memory address of a: ', id(p1))
print('Memory address of b: ', id(p2))
print('Memory address of c: ', id(p3))

print('p1 name:', p1.getName())
print('p3 name:', p1.getName())

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')
print('p1 name:', p1.getName())
print('p3 name:', p3.getName())

print('p1 is p2:', p1 is p2)
print('p1 is p3:', p1 is p3)
3 นั้นมีอยู่ใน List หรือไม่ ผลลัพธ์ที่ได้นั้นจะเป็นจริงเพราะชื่อมีอยู่

และต่อมาเราตรวจสอบ

class Person:

    def __init__(self, name):
        self.name = name

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

p1 = Person('Tommy')
p2 = Person('Jane')
# Tell p3 to use memory address of p1
p3 = p1

print('Memory address of a: ', id(p1))
print('Memory address of b: ', id(p2))
print('Memory address of c: ', id(p3))

print('p1 name:', p1.getName())
print('p3 name:', p1.getName())

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')
print('p1 name:', p1.getName())
print('p3 name:', p3.getName())

print('p1 is p2:', p1 is p2)
print('p1 is p3:', p1 is p3)
4 นั้นไม่พบชื่อดังกล่าวใน List ต่อมาเป็นการตรวจสอบการมีอยู่ของข้อมูลใน Dictionary เนื่องจาก Dictionary นั้นเป็นข้อมูลที่เก็บในคู่ของ Key และ Values เพื่อตรวจสอบกับ Key เราต้องใช้เมธอด
class Person:

    def __init__(self, name):
        self.name = name

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

p1 = Person('Tommy')
p2 = Person('Jane')
# Tell p3 to use memory address of p1
p3 = p1

print('Memory address of a: ', id(p1))
print('Memory address of b: ', id(p2))
print('Memory address of c: ', id(p3))

print('p1 name:', p1.getName())
print('p3 name:', p1.getName())

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')
print('p1 name:', p1.getName())
print('p3 name:', p3.getName())

print('p1 is p2:', p1 is p2)
print('p1 is p3:', p1 is p3)
5 และเมธอด
class Person:

    def __init__(self, name):
        self.name = name

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

p1 = Person('Tommy')
p2 = Person('Jane')
# Tell p3 to use memory address of p1
p3 = p1

print('Memory address of a: ', id(p1))
print('Memory address of b: ', id(p2))
print('Memory address of c: ', id(p3))

print('p1 name:', p1.getName())
print('p3 name:', p1.getName())

print('Changed p3 name to \'Tom\'')
p3.setName('Tom')
print('p1 name:', p1.getName())
print('p3 name:', p3.getName())

print('p1 is p2:', p1 is p2)
print('p1 is p3:', p1 is p3)
6 สำหรับ Value

a + b =  8
a - b =  2
a * b =  15
a / b =  1.6666666666666667
a // b =  1
a % b =  2
a ** b =  125
0

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

Truth Value Testing

เนื่องจากตัวแปรในภาษา Python นั้นเป็นประเภทข้อมูลแบบไดนามิกส์ ดังนั้นออบเจ็คต่างๆ นั้นสามารถที่จะทำมาประเมินสำหรับค่าความจริง โดยการใช้คำสั่งตรวจสอบเงื่อนไขเช่น if หรือ while หรือการกระทำเพื่อตรวจหาค่า boolean โดยค่าข้างล่างนี้เป็นค่าที่ถูกประเมินเป็น False

  • class Person:
    
        def __init__(self, name):
            self.name = name
    
        def setName(self, name):
            self.name = name
    
        def getName(self):
            return self.name
    
    p1 = Person('Tommy')
    p2 = Person('Jane')
    # Tell p3 to use memory address of p1
    p3 = p1
    
    print('Memory address of a: ', id(p1))
    print('Memory address of b: ', id(p2))
    print('Memory address of c: ', id(p3))
    
    print('p1 name:', p1.getName())
    print('p3 name:', p1.getName())
    
    print('Changed p3 name to \'Tom\'')
    p3.setName('Tom')
    print('p1 name:', p1.getName())
    print('p3 name:', p3.getName())
    
    print('p1 is p2:', p1 is p2)
    print('p1 is p3:', p1 is p3)
    
    7
  • class Person:
    
        def __init__(self, name):
            self.name = name
    
        def setName(self, name):
            self.name = name
    
        def getName(self):
            return self.name
    
    p1 = Person('Tommy')
    p2 = Person('Jane')
    # Tell p3 to use memory address of p1
    p3 = p1
    
    print('Memory address of a: ', id(p1))
    print('Memory address of b: ', id(p2))
    print('Memory address of c: ', id(p3))
    
    print('p1 name:', p1.getName())
    print('p3 name:', p1.getName())
    
    print('Changed p3 name to \'Tom\'')
    p3.setName('Tom')
    print('p1 name:', p1.getName())
    print('p3 name:', p3.getName())
    
    print('p1 is p2:', p1 is p2)
    print('p1 is p3:', p1 is p3)
    
    8
  • ค่าศูนย์ของข้อมูลประเภทตัวเลขใดๆ เช่น
    class Person:
    
        def __init__(self, name):
            self.name = name
    
        def setName(self, name):
            self.name = name
    
        def getName(self):
            return self.name
    
    p1 = Person('Tommy')
    p2 = Person('Jane')
    # Tell p3 to use memory address of p1
    p3 = p1
    
    print('Memory address of a: ', id(p1))
    print('Memory address of b: ', id(p2))
    print('Memory address of c: ', id(p3))
    
    print('p1 name:', p1.getName())
    print('p3 name:', p1.getName())
    
    print('Changed p3 name to \'Tom\'')
    p3.setName('Tom')
    print('p1 name:', p1.getName())
    print('p3 name:', p3.getName())
    
    print('p1 is p2:', p1 is p2)
    print('p1 is p3:', p1 is p3)
    
    9,
    p3 = p1
    
    0,
    p3 = p1
    
    1,
    p3 = p1
    
    2
  • ข้อมูลแบบลำดับที่ว่างปล่าว เช่น
    p3 = p1
    
    3,
    p3 = p1
    
    4,
    p3 = p1
    
    5
  • ข้อมูลแบบ map ที่่ว่างปล่าว
    p3 = p1
    
    6
  • ตัวแปรจากคลาสที่ผู้ใช้สร้างขึ้น และคลาสดังกล่างถูกกำหนดเมธอด
    p3 = p1
    
    7 หรือ
    p3 = p1
    
    8 และเมธอดเหล่านี้ส่งค่ากลับเป็นศูนย์หรือค่า Boolean False

ส่วนค่าอื่นๆ ที่นอกเหนือจากที่ได้กล่าวไปนั้นจะถูกประเมินเป็น True ทั้งหมด และออบเจ็คของประเภทใดๆ ก็เป็น True เช่นกัน

ในบทนี้ คุณเรียนรู้เกี่ยวกับตัวดำเนินการในภาษา Python เราได้ครอบคลุมการใช้งานตัวดำเนินการประเภทต่างๆ และตัวอย่างในประยุกต์ใช้งานตัวดำเนินการเหล่านี้ในการเขียนโปรแกรม และหลักในการประเมินค่าความจริงของตัวแปรและออบเจ็ค

ตัวดำเนินการเชิงเปรียบเทียบ != หมายถึงอะไร

ตัวดำเนินการเชิงเปรียบเทียบ (Comparison operator) หมายถึง เครื่องหมายในการเปรียบเทียบข้อมูล ผลลัพธ์ที่ได้จะมีค่าตรรกบูลลีนเป็น จริง (True) และ เท็จ (False) ได้แก่ == หมายถึง เครื่องหมายเท่ากับ != หมายถึง เครื่องหมายไม่เท่ากับ > หมายถึง เครื่องหมายมากกว่า

เครื่องหมาย != มีความหมายตรงกับข้อใด

ความหมาย และตัวอย่างการใช้งาน ซึ่งจะให้ค่าผลลัพธ์เป็นจริงหรือเท็จ != ไม่เท่ากับ ตัวอย่าง a != b เป็นการเปรียบเทียบการไม่เท่ากับระหว่างตัวแปร a และ b ซึ่งจะให้ค่าผลลัพธ์เป็นจริงหรือเท็จ

ตัวดำเนินการ > , < และ == เป็นตัวดำเนินการประเภทใด

ตัวดำเนินการเท่ากับ (Equality Operator) ตัวดำเนินการเท่ากับ ใช้ในการเปรียบเทียบค่า 2 ค่า ว่ามีค่าเท่า หรือไม่เท่ากัน ตัวอย่าง การใช้งาน เช่น c == 'A'

ตัวดำเนินการข้อใดหมายถึง มากกว่า

* (เครื่องหมายดอกจัน) การคูณ = 3 * 3. / (เครื่องหมายทับ) ... การใช้ตัวดำเนินการการคำนวณในสูตร Excel..

ตัวดำเนินการ > , < และ == เป็นตัวดำเนินการประเภทใด

ตัวดำเนินการเท่ากับ (Equality Operator) ตัวดำเนินการเท่ากับ ใช้ในการเปรียบเทียบค่า 2 ค่า ว่ามีค่าเท่า หรือไม่เท่ากัน ตัวอย่าง การใช้งาน เช่น c == 'A'

ตัวดำเนินการ หมายถึงข้อใด

ตัวดำเนินการทางคณิตศาสตร์ คือตัวดำเนินการที่ใช้เพื่อกระทำการดำเนินการทางคณิตศาสตร์ระหว่างตัวแปรหรือค่าคงที่ เช่น การบวก การลบ การคูณ และการหาร สำหรับในการเขียนโปรแกรมในภาษา C นั้นจะมีตัวดำเนินการสำหรับการหารเอาเศษ (Modulo) เพิ่มเข้ามา

Arithmetic Operators มีอะไรบ้าง

Arithmetic Operators คือ ตัวดำเนินการทางคณิตศาสตร์ เช่น เครื่องหมายที่เราคุ้นเคยคือ + (บวก), - (ลบ), * (คูณ), / (หาร) และ % (หารเอาเศษ) โดยในบทความนี้จะแนะนำวิธีการประยุกต์ใช้ Arithmetic Operators กับตัวแปรในภาษาจาวา (Java) ครับ

ตัวดำเนินการทางตรรกศาสตร์ " || " มีความหมายอย่างไร

ตัวดำเนินการทางตรรกะ เป็นตัวดำเนินการเกี่ยวข้องกับนิพจน์ที่สามารถบอกค่าความจริงเป็นจริง(true) หรือเท็จ (false)ได้ หรือชนิดข้อมูลตรรกะ เช่น ตัวแปรประเภท boolean ผลลัพธ์ที่ได้จากการกระทำจะได้ค่าคงที่ตรรกะเป็น true หรือ false ตัวดำเนินการทางตรรกะได้แก่เครื่องหมาย !, &&, &, ||, |, ^ มีตัวอย่างการใช้งานดังนี้