PHP
Python

Trang chủ

Toán tử quan hệ trong python

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
21/01/2025
13 phút đọc
Theo dõi Vietnix trên

Toán tử quan hệ trong python

Trong Python, các toán tử quan hệ đóng vai trò quan trọng trong việc điều khiển luồng thực thi của chương trình. Toán tử này cho phép bạn so sánh giá trị giữa các biến hoặc đối tượng, từ đó đưa ra những quyết định logic dựa trên kết quả so sánh. Bài viết này mình sẽ giúp bạn có một cái nhìn tổng quan về các toán tử quan hệ trong Python, từ cơ bản đến nâng cao, giúp bạn hiểu rõ và sử dụng chúng một cách thành thạo.

Toán tử quan hệ trong Python

Các toán tử quan hệ đóng vai trò rất quan trọng trong việc xây dựng các cấu trúc điều kiện (if, else, elif) và các vòng lặp (while, for) trong Python. Các toán tử này, còn được gọi là toán tử so sánh, cho phép chúng ta so sánh các giá trị và đưa ra quyết định dựa trên kết quả so sánh. Một số toán tử quan hệ thường gặp là “<” (nhỏ hơn) và “>” (lớn hơn).

Toán tử quan hệ trong Python có vai trò cho phép cúng ta so sánh các giá trị
Toán tử quan hệ trong Python có vai trò cho phép cúng ta so sánh các giá trị

Ngoài ra, Python còn có thêm hai toán tử khác, kết hợp dấu “=” với hai toán tử trên. Đó là “<=” (nhỏ hơn hoặc bằng) và “>=” (lớn hơn hoặc bằng).

Các loại toán tử quan hệ trong Python

Python còn có thêm hai toán tử quan hệ nữa là “==” (bằng nhau) và “!=” (không bằng nhau). Như vậy, trong Python có tổng cộng sáu toán tử quan hệ, được liệt kê trong bảng sau:

Toán tửMô tảVí dụ
<Nhỏ hơna<b
>Lớn hơna>b
<=Nhỏ hơn hoặc bằnga<=b
>=Lớn hơn hoặc bằnga>=b
==Bằnga==b
!=Không bằnga!=b

Lưu ý:

  • Một biểu thức có chứa toán tử quan hệ được gọi là biểu thức Boolean, và kết quả của biểu thức này luôn là True (đúng) hoặc False (sai).
  • Các toán tử quan hệ đều là các toán tử hai ngôi, tức là cần hai toán hạng để thực hiện phép so sánh.

Ví dụ 1: So sánh các biến

Bạn có thể xem qua đoạn code dưới đây:

a = 5
b = 7
print (a > b)
print (a < b)

Đoạn code trên sẽ tạo ra kết quả như sau:

False

True

Ví dụ 2: Sử dụng toán tử quan hệ với số nguyên

Tiếp theo, hãy xem một ví dụ khác, thể hiện rõ hơn việc sử dụng các toán tử quan hệ khác nhau:

print ("Cả hai toán hạng đều là số nguyên")
a = 5
b = 7
print ("a=", a, "b=", b, "a>b là", a > b)
print ("a=", a, "b=", b, "a<b là", a < b)
print ("a=", a, "b=", b, "a==b là", a == b)
print ("a=", a, "b=", b, "a!=b là", a != b)

Kết quả khi chạy đoạn code này:

Cả hai toán hạng đều là số nguyên

a= 5 b= 7 a>b là False

a= 5 b= 7 a<b là True

a= 5 b= 7 a==b là False

a= 5 b= 7 a!=b là True

So sánh số thực trong Python

Trong Python, khi so sánh một số nguyên và một số thực (float), Python sẽ tự động chuyển đổi để việc so sánh có thể thực hiện được. Bạn xem qua đoạn code sau đây:

print("So sánh số nguyên và số thực")
gia_san_pham_A = 15000 # Số nguyên (int)
gia_san_pham_B = 15000.0 # Số thực (float)

print("Giá sản phẩm A =", gia_san_pham_A, "Giá sản phẩm B =", gia_san_pham_B, "A > B là", gia_san_pham_A > gia_san_pham_B)
print("Giá sản phẩm A =", gia_san_pham_A, "Giá sản phẩm B =", gia_san_pham_B, "A < B là", gia_san_pham_A < gia_san_pham_B)
print("Giá sản phẩm A =", gia_san_pham_A, "Giá sản phẩm B =", gia_san_pham_B, "A == B là", gia_san_pham_A == gia_san_pham_B)
print("Giá sản phẩm A =", gia_san_pham_A, "Giá sản phẩm B =", gia_san_pham_B, "A != B là", gia_san_pham_A != gia_san_pham_B)

Kết quả khi chạy đoạn code trên:

So sánh số nguyên và số thực

Giá sản phẩm A = 15000 Giá sản phẩm B = 15000.0 A > B là False

Giá sản phẩm A = 15000 Giá sản phẩm B = 15000.0 A < B là False

Giá sản phẩm A = 15000 Giá sản phẩm B = 15000.0 A == B là True

Giá sản phẩm A = 15000 Giá sản phẩm B = 15000.0 A != B là False

So sánh số phức trong Python

Mặc dù số phức là một kiểu dữ liệu số trong Python, cách số phức hoạt động khác biệt so với các kiểu số khác. Python không hỗ trợ các toán tử quan hệ “nhỏ hơn” (<) và “lớn hơn” (>) đối với số phức. Tuy nhiên, Python vẫn cho phép sử dụng các toán tử quan hệ “bằng” (==) và “không bằng” (!=).

Số phức là một dạng số đặc biệt bao gồm hai phần: phần thực và phần ảo. Chúng ta thường viết số phức dưới dạng a + bi, trong đó a là phần thực, b là phần ảo và i là đơn vị ảo (thường được ký hiệu là 1j trong Python). Ví dụ, số 3 + 4j có phần thực là 3 và phần ảo là 4. Số phức rất hữu ích trong các bài toán toán học và kỹ thuật phức tạp.

Ví dụ 1: So sánh bằng và khác

Dưới đây là ví dụ so sánh số phức:

print("So sánh số phức:")
a = 10 + 1j
b = 10 - 1j
print("a =", a, "b =", b, "a == b là", a == b)
print("a =", a, "b =", b, "a != b là", a != b)

Đoạn code trên sẽ cho ra kết quả sau:

So sánh số phức:

a= (10+1j) b= (10-1j) a == b là False

a= (10+1j) b= (10-1j) a != b là True

Ví dụ 2: Thử so sánh lớn hơn hoặc nhỏ hơn (sẽ gây ra lỗi)

Bạn xem qua ví dụ sau đây:

print("So sánh số phức:")
a = 10 + 1j
b = 10 - 1j
print("a =", a, "b =", b, "a < b là", a < b)
print("a =", a, "b =", b, "a > b là", a > b)

Khi chạy đoạn code này, Python sẽ báo lỗi như sau:

So sánh số phức:

Traceback (most recent call last):

  File “your_file_path”, line 4, in <module>

    print (“a=”,a, “b=”,b,”a<b is”,a<b)

                                      ^^^

TypeError: ‘<‘ not supported between instances of ‘complex’ and ‘complex’

Giải thích: Python báo lỗi TypeError: '<' not supported between instances of 'complex' and 'complex'. Lỗi này cho thấy, như đã nói ở trên, bạn không thể dùng toán tử < hoặc > để so sánh giữa các số phức trong Python.

So sánh các giá trị Boolean trong Python

Trong Python, giá trị Boolean (TrueFalse) thực chất được biểu diễn bằng số nguyên. True tương ứng với giá trị 1, còn False tương ứng với 0. Thú vị hơn, Python còn coi bất kỳ số nào khác 0 (khác không) là True. Vì vậy, bạn có thể thực hiện so sánh các giá trị Boolean giống như so sánh số nguyên. Chẳng hạn, biểu thức False < True sẽ cho kết quả True!

Để thấy rõ hơn cách so sánh này hoạt động, chúng ta có thể xem đoạn code sau:

print ("So sánh các giá trị Boolean")
a = True
b = False
print ("a =", a, "b =", b, "a < b là", a < b)
print ("a =", a, "b =", b, "a > b là", a > b)
print ("a =", a, "b =", b, "a == b là", a == b)
print ("a =", a, "b =", b, "a != b là", a != b)

Khi chạy đoạn code trên, bạn sẽ thấy kết quả như sau:

So sánh các giá trị Boolean

a = True b = False a < b là False

a = True b = False a > b là True

a = True b = False a == b là False

a = True b = False a != b là True

So sánh các kiểu dữ liệu chuỗi trong Python

Trong Python, chỉ các đối tượng chuỗi (sequence) có kiểu dữ liệu tương đồng mới có thể so sánh được với nhau. Điều này có nghĩa là một chuỗi ký tự (string) chỉ có thể so sánh với một chuỗi ký tự khác. Tương tự, danh sách (list) chỉ có thể so sánh với một danh sách, và bộ (tuple) chỉ có thể so sánh với bộ. Bạn không thể so sánh một danh sách với một bộ, ngay cả khi chúng chứa các phần tử giống nhau.

Giả sử bạn muốn so sánh hai dãy số: một dãy được lưu trong danh sách (list) và một dãy trong bộ (tuple):

print("Ví dụ so sánh các kiểu chuỗi khác nhau:")
day_so_tuple = (1, 5, 9)
day_so_list = [1, 5, 9]

print("day_so_tuple =", day_so_tuple, "day_so_list =", day_so_list, "So sánh day_so_tuple < day_so_list là:", day_so_tuple < day_so_list)

Đoạn code trên sẽ tạo ra lỗi và cho kết quả như sau:

Ví dụ so sánh các kiểu chuỗi khác nhau:

Traceback (most recent call last):

  File “<string>”, line 5, in <module>

    print(“day_so_tuple =”, day_so_tuple, “day_so_list =”, day_so_list, “So sánh day_so_tuple < day_so_list là:”, day_so_tuple < day_so_list)

                                                                                               ^^^^^^^^^^^^^^^^^^^^

TypeError: ‘<‘ not supported between instances of ‘tuple’ and ‘list’

Giải thích: Lỗi TypeError xảy ra do chúng ta đang cố gắng so sánh một đối tượng kiểu tuple với một đối tượng kiểu list bằng toán tử <. Python không cho phép so sánh trực tiếp như vậy.

Các đối tượng chuỗi được so sánh bằng cơ chế sắp xếp theo thứ tự từ điển (lexicographical ordering). Việc so sánh bắt đầu từ phần tử tại chỉ mục (index) thứ 0. Nếu các phần tử tại cùng vị trí này bằng nhau, việc so sánh sẽ tiếp tục đến các chỉ mục tiếp theo, cho đến khi tìm thấy các phần tử không bằng nhau, hoặc một trong hai chuỗi kết thúc.

Nếu một chuỗi là một phần đầu của chuỗi kia, chuỗi ngắn hơn sẽ được coi là nhỏ hơn. Việc chuỗi nào lớn hơn sẽ phụ thuộc vào sự khác biệt về giá trị của các phần tử ở vị trí khác nhau đầu tiên. Ví dụ, 'CÁT' > 'CAN' sẽ là True, vì chữ 'T' xuất hiện sau chữ 'N' trong bảng mã Unicode. Nếu tất cả các phần tử trong hai chuỗi đều bằng nhau, hai chuỗi sẽ được coi là bằng nhau.

Ví dụ 1: So sánh chuỗi ký tự

Để so sánh các chuỗi, Python sẽ so sánh từng ký tự theo thứ tự từ trái sang phải. Python sẽ dựa trên thứ tự của từng ký tự trong bảng mã Unicode để quyết định thứ tự lớn hơn, bé hơn. Ví dụ:

print ("So sánh các chuỗi ký tự")
a = "Mèo"
b = "Meo"
print ("a=", a, "b=", b, "a < b là", a < b)
print ("a=", a, "b=", b, "a > b là", a > b)
print ("a=", a, "b=", b, "a == b là", a == b)
print ("a=", a, "b=", b, "a != b là", a != b)

Khi chạy đoạn code trên, ta nhận được kết quả như sau:

So sánh các chuỗi ký tự

a= Mèo b= Meo a < b là False

a= Mèo b= Meo a > b là True

a= Mèo b= Meo a == b là False

a= Mèo b= Meo a != b là True

Ví dụ 2: So sánh Tuple

Tuple là một kiểu dữ liệu trong Python cho phép chứa nhiều giá trị. Python cũng có thể so sánh tuple bằng cách so sánh từng phần tử theo thứ tự. Ví dụ

print ("So sánh các tuple")
a = (1, 5, 2)
b = (1, 3, 8)
print ("a=", a, "b=", b, "a < b là", a < b)
print ("a=", a, "b=", b, "a > b là", a > b)
print ("a=", a, "b=", b, "a == b là", a == b)
print ("a=", a, "b=", b, "a != b là", a != b)

Khi chạy đoạn code này, kết quả sẽ là:

So sánh các tuple
a= (1, 5, 2) b= (1, 3, 8) a < b là False
a= (1, 5, 2) b= (1, 3, 8) a > b là True
a= (1, 5, 2) b= (1, 3, 8) a == b là False
a= (1, 5, 2) b= (1, 3, 8) a != b là True

So sánh các đối tượng dictionary trong Python

Trong Python, việc sử dụng các toán tử quan hệ nhỏ hơn (<) và lớn hơn (>) để so sánh trực tiếp các dictionary không được định nghĩa. Nếu bạn cố gắng thực hiện điều này, chương trình sẽ báo lỗi TypeError: '<' not supported between instances of 'dict' and 'dict'. Điều này có nghĩa là Python không hỗ trợ việc so sánh dictionary theo kiểu “lớn hơn” hay “nhỏ hơn” như với số hay chuỗi.

Tuy nhiên, khi so sánh bằng (==) hoặc khác (!=), Python sẽ tiến hành kiểm tra xem liệu hai dictionary có cùng số lượng phần tử (key-value pairs) hay không.

Số lượng phần tử (hay độ dài) của một dictionary được xác định bằng số lượng các cặp key-value có trong dictionary đó. Trong Python, một dictionary có ít phần tử hơn sẽ được coi là “nhỏ hơn” (nếu so sánh theo số lượng phần tử) so với dictionary có nhiều phần tử hơn. Tuy nhiên điều này chỉ áp dụng khi so sánh số lượng phần tử.

Để hiểu rõ hơn cách so sánh các đối tượng dictionary, bạn hãy xem ví dụ sau:

print ("so sánh các đối tượng dictionary")
a = {1: 1, 2: 2}
b = {2: 2, 1: 1, 3: 3}
print ("a=", a, "b=", b, "a==b là", a==b)
print ("a=", a, "b=", b, "a!=b là", a!=b)

Đoạn code trên sẽ cho ra kết quả sau:

so sánh các đối tượng dictionary

a= {1: 1, 2: 2} b= {2: 2, 1: 1, 3: 3} a==b là False

a= {1: 1, 2: 2} b= {2: 2, 1: 1, 3: 3} a!=b là True

Lời kết

Vậy là chúng ta đã cùng nhau tìm hiểu chi tiết về các toán tử quan hệ trong Python, từ cách so sánh số nguyên, số thực, số phức cho đến các kiểu dữ liệu phức tạp như chuỗi, tuple và dictionary. Hy vọng những kiến thức này sẽ giúp bạn hiểu rõ hơn về cách Python đánh giá các mối quan hệ, và hỗ trợ đắc lực trong quá trình lập trình của bạn.

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn