PHP
Python

Trang chủ

Toán tử số học 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
20/01/2025
22 phút đọc
Theo dõi Vietnix trên

Toán tử số học trong Python

Để thành thạo lập trình Python, việc hiểu rõ về các toán tử số học là vô cùng quan trọng. Bài viết này mình sẽ đi sâu vào từng toán tử, với từng định nghĩa rõ ràng, ví dụ cụ thể, giúp bạn xây dựng kiến thức vững chắc để có thể sử dụng các toán tử này trong các dự án của mình.

Toán tử số học trong Python là gì?

Các toán tử số học trong Python là những ký hiệu đặc biệt dùng để thực hiện các phép toán quen thuộc trên số như cộng, trừ, nhân, chia, và các phép toán khác. Toán tử số học thuộc loại toán tử hai ngôi, nghĩa là chúng cần hai toán hạng để hoạt động. Python hỗ trợ đầy đủ các phép toán số học hỗn hợp. Điều này có nghĩa là hai toán hạng có thể thuộc hai kiểu số khác nhau. Trong trường hợp như vậy, Python sẽ tự động thực hiện chuyển đổi kiểu dữ liệu trước khi thực hiện phép toán.

Toán tử số học trong Python là các ký hiệu dùng thể thực hiện các phép toán như cộng, trừ, nhân, chia
Toán tử số học trong Python là các ký hiệu dùng thể thực hiện các phép toán như cộng, trừ, nhân, chia

Các loại toán tử số học trong Python

Bảng dưới đây liệt kê các toán tử số học có trong Python:

Toán tửMô tảVí dụ
+Cộnga + b = 30
-Trừa – b = -10
*Nhâna * b = 200
/Chiab / a = 2
%Chia lấy dưb % a = 0
**Số mũa**b =10**20
//Chia lấy nguyên9//2 = 4

Toán tử cộng trong Python

Toán tử cộng được biểu diễn bằng ký hiệu +. Đây là một toán tử số học cơ bản. Toán tử cộng thực hiện phép cộng hai toán hạng số ở hai bên của ký hiệu và trả về kết quả của phép cộng.

Ví dụ 1: Phép cộng giữa 2 số nguyên

Trong ví dụ sau, hai biến số nguyên đóng vai trò là các toán hạng cho toán tử +.

a = 25
b = 12
print ("Phép cộng hai số nguyên")
print ("a =", a, "b =", b, "tổng =", a + b)

Khi thực thi, đoạn code này sẽ cho ra kết quả:

Phép cộng hai số nguyên

a = 25 b = 12 tổng = 37

Ví dụ 2: Phép cộng giữa số nguyên và số thực

Phép cộng giữa số nguyên và số thực cho kết quả là số thực.

a = 30
b = 7.5
print ("Phép cộng số nguyên và số thực")
print ("a =", a, "b =", b, "tổng =", a + b)

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

Phép cộng số nguyên và số thực

a = 30 b = 7.5 tổng = 37.5

Ví dụ 3: Phép cộng giữa số phức và số thực

Kết quả của phép cộng giữa số thực và số phức sẽ là một số phức.

a = 15 + 8j
b = 6.2
print ("Phép cộng số phức và số thực")
print ("a =", a, "b =", b, "tổng =", a + b)

Kết quả đầu ra của đoạn code này:

Phép cộng số phức và số thực

a= (15+8j) b= 6.2 tổng= (21.2+8j)

Toán tử trừ trong Python

Toán tử trừ được biểu diễn bằng ký hiệu -. Toán tử này thực hiện phép trừ toán hạng thứ hai từ toán hạng thứ nhất. Nếu toán hạng thứ hai lớn hơn toán hạng thứ nhất, kết quả sẽ là một số âm.

Ví dụ 1: Phép trừ giữa 2 số nguyên

Chúng ta cùng xem ví dụ về phép trừ giữa hai số nguyên:

a = 25
b = 10
print("Phép trừ hai số nguyên:")
print("a =", a, "b =", b, "a - b =", a - b)
print("a =", a, "b =", b, "b - a =", b - a)

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

Phép trừ hai số nguyên:

a = 25 b = 10 a – b = 15

a = 25 b = 10 b – a = -15

Ví dụ 2: Phép trừ giữa số nguyên và số thực

Phép trừ giữa một số nguyên và một số thực (số thập phân) cũng tương tự:

a = 15
b = 25.5
print("Phép trừ giữa số nguyên và số thực:")
print("a =", a, "b =", b, "a - b =", a - b)
print("a =", a, "b =", b, "b - a =", b - a)

Đoạn code này sẽ in ra:

Phép trừ giữa số nguyên và số thực:

a = 15 b = 25.5 a – b = -10.5

a = 15 b = 25.5 b – a = 10.5

Ví dụ 3: Phép trừ giữa số phức và số thực

Trong trường hợp trừ giữa một số phức và một số thực, phần thực của số phức sẽ tham gia vào phép trừ:

a = 12 + 4j
b = 15.5
print("Phép trừ giữa số phức và số thực:")
print("a =", a, "b =", b, "a - b =", a - b)
print("a =", a, "b =", b, "b - a =", b - a)

Kết quả sẽ là:

Phép trừ giữa số phức và số thực:

a = (12+4j) b = 15.5 a – b = (-3.5+4j)

a = (12+4j) b = 15.5 b – a = (3.5-4j)

Toán tử nhân trong Python

Trong Python (cũng như nhiều ngôn ngữ khác), ký hiệu * (dấu hoa thị) được định nghĩa là toán tử nhân. Toán tử này trả về tích của hai toán hạng nằm hai bên của nó. Nếu một trong hai toán hạng là số âm, kết quả phép nhân cũng sẽ là số âm. Trường hợp cả hai toán hạng đều âm, kết quả sẽ là số dương. Việc thay đổi thứ tự của các toán hạng không làm thay đổi kết quả phép nhân.

Ví dụ 1: Phép nhân giữa 2 số nguyên

Chúng ta cùng xem ví dụ sau để hiểu rõ hơn cách toán tử nhân hoạt động trên các số nguyên:

a = 10
b = 20
print("Phép nhân hai số nguyên:")
print("a =", a, "b =", b, "a * b =", a * b)

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

Phép nhân hai số nguyên:

a = 10 b = 20 a * b = 200

Ví dụ 2: Phép nhân giữa số nguyên và số thực

Trong phép nhân, toán hạng là số thực có thể ở dạng ký hiệu thập phân thông thường hoặc ở dạng ký hiệu khoa học.

Ví dụ sau minh họa cách toán tử nhân hoạt động với số nguyên và số thực:

a = 10
b = 20.5
print("Phép nhân số nguyên và số thực:")
print("a =", a, "b =", b, "a * b =", a * b)

a = -5.55
b = 6.75E-3
print("Phép nhân hai số thực:")
print("a =", a, "b =", b, "a * b =", a * b)

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

Phép nhân số nguyên và số thực:

a = 10 b = 20.5 a * b = 205.0

Phép nhân hai số thực:

a = -5.55 b = 0.00675 a * b = -0.0374625

Ví dụ 3: Phép nhân giữa số thực và số phức

Đối với phép nhân liên quan đến một toán hạng là số phức, toán hạng còn lại sẽ được nhân với cả phần thực và phần ảo của số phức đó.

Ví dụ về cách nhân số phức với một số thực:

a = 10 + 5j
b = 20.5
print("Phép nhân số phức và số thực:")
print("a =", a, "b =", b, "a * b =", a * b)

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

Phép nhân số phức và số thực:

a = (10+5j) b = 20.5 a * b = (205+102.5j)

Toán tử chia trong Python

Ký hiệu / thường được gọi là dấu gạch chéo. Toán tử chia được sử dụng để chia số bị chia (toán hạng bên trái) cho số chia (toán hạng bên phải). Kết quả sẽ là số âm nếu một trong hai toán hạng là số âm. Vì máy tính không thể lưu trữ vô cực, nên Python sẽ thông báo lỗi ZeroDivisionError nếu số chia bằng 0.

Một điểm quan trọng cần nhớ là kết quả của phép chia trong Python luôn là số thực (float), ngay cả khi cả hai toán hạng đều là số nguyên.

Ví dụ 1: Phép chia giữa 2 số nguyên

Hãy cùng xem một vài ví dụ về cách toán tử chia hoạt động với các kiểu dữ liệu khác nhau:

a = 15
b = 3
print ("Phép chia hai số nguyên:")
print ("a =", a, ", b =", b, ", a / b =", a / b)
print ("a =", a, ", b =", b, ", b / a =", b / a)

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

Phép chia hai số nguyên:

a = 15 , b = 3 , a / b = 5.0

a = 15 , b = 3 , b / a = 0.2

Ví dụ 2: Phép chia giữa số nguyên và số thực

Trong phép chia, toán hạng là số thực có thể được viết dưới dạng số thập phân chuẩn, hoặc dưới dạng ký hiệu khoa học.

a = 10
b = -5.5
print ("Phép chia số nguyên và số thực:")
print ("a =", a, ", b =", b, ", a / b =", a / b)
a = -7.5
b = 1.5e2 #tương ứng 1.5 * 10^2 = 150
print ("Phép chia giữa hai số thực:")
print ("a =", a, ", b =", b, ", a / b =", a / b)

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

Phép chia số nguyên và số thực:

a = 10 , b = -5.5 , a / b = -1.8181818181818181

Phép chia giữa hai số thực:

a = -7.5 , b = 150.0 , a / b = -0.05

Ví dụ 3: Phép chia giữa số thực và số phức

Khi một trong các toán hạng là số phức, phép chia sẽ được thực hiện giữa toán hạng kia và cả phần thực lẫn phần ảo của số phức.

a = 3 + 6j  # Số phức
b = 1.5    # Số thực
print ("Phép chia giữa số phức và số thực:")
print ("a =", a, ", b =", b, ", a / b =", a / b)
print ("a =", a, ", b =", b, ", b / a =", b / a)

Kết quả đầu ra của đoạn code này là:

Phép chia giữa số phức và số thực:

a = (3+6j) , b = 1.5 , a / b = (2+4j)

a = (3+6j) , b = 1.5 , b / a = (0.1-0.2j)

Nếu số bị chia là 0, kết quả của phép chia sẽ luôn là 0 (trừ trường hợp số chia bằng 0). Tuy nhiên nếu số chia là 0, Python sẽ báo lỗi ZeroDivisionError với thông báo “Division by zero“.

a = 0
b = 4
print ("a =", a, ", b =", b, ", a / b =", a / b)
print ("a =", a, ", b =", b, ", b / a =", b / a) #Đây là trường hợp sẽ lỗi

Đoạn code trên khi chạy sẽ có kết quả:

a = 0 , b = 4 , a / b = 0.0

Traceback (most recent call last):

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

ZeroDivisionError: float division by zero

Toán tử chia lấy dư trong Python

Python sử dụng ký hiệu %, còn được biết đến với tên gọi là dấu phần trăm, để biểu diễn toán tử chia lấy dư (hoặc modulo). Toán tử này trả về phần dư sau khi thực hiện phép chia số bị chia (numerator) cho số chia (denominator). Kết quả của toán tử chia lấy dư là phần còn lại sau khi thực hiện phép chia nguyên. Ví dụ, khi chia 10 cho 3, ta được thương số là 3 và số dư là 1. Vì vậy, biểu thức 10 % 3 (thường đọc là “10 mod 3“) sẽ cho kết quả là 1.

Ví dụ 1: Phép chia lấy dư giữa 2 số nguyên

Nếu cả hai toán hạng đều là số nguyên, kết quả của phép chia lấy dư sẽ là một số nguyên.

  • Nếu số bị chia chia hết cho số chia, số dư sẽ là 0.
  • Nếu số bị chia nhỏ hơn số chia, số dư sẽ bằng chính số bị chia.
  • Nếu số chia bằng 0, Python sẽ báo lỗi ZeroDivisionError vì không thể thực hiện phép chia cho 0.

Xem qua ví dụ sau:

a = 10
b = 2
print ("a =", a, "b =", b, "a%b =", a % b) # 10 chia 2 dư 0
a = 10
b = 4
print ("a =", a, "b =", b, "a%b =", a % b) # 10 chia 4 dư 2
print ("a =", a, "b =", b, "b%a =", b % a) # 4 chia 10 dư 4 (số bị chia < số chia)
a = 0
b = 10
print ("a =", a, "b =", b, "a%b =", a % b) # 0 chia 10 dư 0

try:
    print ("a=", a, "b=", b, "b%a=",b%a)  # 10 chia 0 sẽ gây lỗi
except ZeroDivisionError:
    print("Lỗi: Không thể chia cho 0")

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

a = 10 b = 2 a%b = 0
a = 10 b = 4 a%b = 2
a = 10 b = 4 b%a = 4
a = 0 b = 10 a%b = 0
Lỗi: Không thể chia cho 0

Ví dụ 2: Phép chia lấy dư giữa 2 số thực

Nếu một trong hai toán hạng là số thực (float), kết quả của phép chia lấy dư sẽ luôn là một số thực.

a = 10
b = 2.5
print ("a =", a, "b =", b, "a%b =", a % b) # 10 chia 2.5 dư 0.0
a = 10
b = 1.5
print ("a =", a, "b =", b, "a%b =", a % b) # 10 chia 1.5 dư 1.0
a = 7.7
b = 2.5
print ("a =", a, "b =", b, "a%b =", a % b) # 7.7 chia 2.5 dư 0.200000...
a = 12.4
b = 3
print ("a =", a, "b =", b, "a%b =", a % b)  # 12.4 chia 3 dư 0.400000...

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

a = 10 b = 2.5 a%b = 0.0

a = 10 b = 1.5 a%b = 1.0

a = 7.7 b = 2.5 a%b = 0.20000000000000018

a = 12.4 b = 3 a%b = 0.40000000000000036

Lưu ý: Python không hỗ trợ sử dụng số phức làm toán hạng trong phép chia lấy dư. Nếu bạn cố gắng làm điều đó, chương trình sẽ báo lỗi TypeError.

Toán tử lũy thừa trong Python

Trong Python, toán tử lũy thừa được biểu diễn bằng hai dấu sao **. Ví dụ, a**b được hiểu là “a lũy thừa b“, hoặc “a mũ b“.

Đặc điểm của toán tử lũy thừa:

  • Nếu số mũ là 0, kết quả luôn là 1.
  • Nếu cả hai toán hạng (cơ số và số mũ) đều là số nguyên, kết quả cũng là một số nguyên.
  • Nếu một trong hai toán hạng là số thực, kết quả sẽ là số thực.
  • Tương tự, nếu một trong hai toán hạng là số phức, kết quả trả về cũng là một số phức.
  • Nếu cơ số là 0, kết quả sẽ là 0.

Ví dụ về toán tử lũy thừa trong Python

Thay vì dùng biến ab chung chung, chúng ta hãy xem xét một vài phép tính lũy thừa cụ thể:

co_so = 5
so_mu = 2
print (f"{co_so} mũ {so_mu} bằng: {co_so**so_mu}") # 5 mũ 2 = 25

co_so = 3
so_mu = 1.5
print (f"{co_so} mũ {so_mu} bằng: {co_so**so_mu}") # 3 mũ 1.5 ~ 5.196

co_so = 2.5
so_mu = 3
print (f"{co_so} mũ {so_mu} bằng: {co_so**so_mu}") # 2.5 mũ 3 = 15.625

co_so = 2+1j #Số phức
so_mu = 2
print (f"{co_so} mũ {so_mu} bằng: {co_so**so_mu}") # (2+1j) mũ 2 = 3+4j
co_so = 7
so_mu = 0
print (f"{co_so} mũ {so_mu} bằng: {co_so**so_mu}") # 7 mũ 0 = 1

Toán tử chia lấy phần dư trong Python

Toán tử chia lấy phần nguyên (hay còn gọi là phép chia sàn) trong Python được ký hiệu bằng hai dấu gạch chéo //. Không giống như toán tử chia lấy số dư (%), toán tử chia lấy phần nguyên sẽ trả về thương của phép chia (loại bỏ phần thập phân).

Đặc điểm của toán tử chia lấy phần nguyên:

  • Nếu một trong hai toán hạng là số âm, kết quả sẽ được làm tròn về phía số âm vô cùng. Ví dụ, -9.8 // 2 sẽ cho kết quả là -5 (vì kết quả của -9.8/2-4.9, khi chia lấy phần nguyên, ta làm tròn xuống đến số nguyên gần nhất là -5).
  • Nếu cả hai toán hạng đều là số dương, toán tử sẽ trả về một số nguyên với phần thập phân đã được loại bỏ. Ví dụ, 9.8 // 2 sẽ cho kết quả là 4 (vì kết quả của 9.8/24.9 và ta loại bỏ phần thập phân).

Ví dụ về toán tử chia lấy phần dư trong Python

Đoạn code dưới đây sẽ giúp bạn hiểu rõ hơn về chia lấy phần dư trong Python:

a = 9
b = 2
print("a =", a, "b =", b, "a//b =", a // b) # 9 chia nguyên cho 2

a = 9
b = -2
print("a =", a, "b =", b, "a//b =", a // b) # 9 chia nguyên cho -2

a = 10
b = 1.5
print("a =", a, "b =", b, "a//b =", a // b) # 10 chia nguyên cho 1.5

a = -10
b = 1.5
print("a =", a, "b =", b, "a//b =", a // b) # -10 chia nguyên cho 1.5

Khi chạy đoạn code này, kết quả in ra như sau:

a= 9 b= 2 a//b= 4

a= 9 b= -2 a//b= -5

a= 10 b= 1.5 a//b= 6.0

a= -10 b= 1.5 a//b= -7.0

Thứ tự ưu tiên của các toán tử số học

Trong Python, khi một biểu thức có nhiều toán tử số học, Python sẽ thực hiện các phép toán theo một thứ tự ưu tiên nhất định. Điều này có nghĩa là một số toán tử sẽ được thực hiện trước các toán tử khác. Bên cạnh đó, tính kết hợp (associativity) cũng đóng vai trò quan trọng trong việc xác định thứ tự thực hiện của các toán tử cùng mức ưu tiên.

Chúng ta có thể hình dung thứ tự ưu tiên này như cách chúng ta thường làm với phép toán ở trường học. Phép nhân và phép chia luôn được thực hiện trước phép cộng và phép trừ.

Dưới đây là bảng mô tả thứ tự ưu tiên và tính kết hợp của các toán tử số học trong Python:

Toán tửMô tảTính kết hợp
**Toán tử lũy thừaTính kết hợp từ phải sang trái
%, *, /, //Modulus, Nhân, Chia, và Chia lấy phần nguyênTính kết hợp từ trái sang phải
+, –Cộng và TrừTính kết hợp từ trái sang phải

Toán tử số học và số phức

Khi cả hai toán hạng đều là các đối tượng số phức, các toán tử số học có một chút khác biệt so với số thực.

Phép cộng và phép trừ số phức

Phép cộng và phép trừ số phức thực chất là phép cộng/trừ tương ứng của các thành phần thực và ảo. Để hiểu rõ hơn, hãy xem xét đoạn code Python sau:

a = 2.5 + 3.4j  # Số phức a với phần thực là 2.5 và phần ảo là 3.4
b = -3 + 1.0j   # Số phức b với phần thực là -3 và phần ảo là 1.0
print("Phép cộng số phức - a =", a, "b =", b, "a+b =", a + b)
print("Phép trừ số phức - a =", a, "b =", b, "a-b =", a - b)

Khi chạy đoạn code này, ta sẽ nhận được kết quả:

Phép cộng số phức – a = (2.5+3.4j) b = (-3+1j) a+b = (-0.5+4.4j)

Phép trừ số phức – a = (2.5+3.4j) b = (-3+1j) a-b = (5.5+2.4j)

Phép nhân số phức trong Python

Phép nhân số phức tương tự như phép nhân hai biểu thức nhị thức trong đại số. Nếu “a + bj” và “x + yj” là hai số phức, thì phép nhân của chúng được tính theo công thức sau:

(a + bj) * (x + yj) = ax + ayj + xbj + byj² = (ax - by) + (ay + xb)j

Trong đó:

  • a, b, x, y là các số thực
  • j là đơn vị ảo (j² = -1)

Xét hai số phức a = 6 + 4jb = 3 + 2j. Khi nhân hai số này, chúng ta thực hiện như sau:

a * b = (6 + 4j) * (3 + 2j)
      = 6*3 + 6*2j + 4j*3 + 4j*2j
      = 18 + 12j + 12j + 8j²
      = 18 + 24j - 8   (vì j² = -1)
      = (18 - 8) + 24j
      = 10 + 24j
Vậy, a * b = 10 + 24j.

Để kiểm tra kết quả, chúng ta có thể sử dụng Python như sau:

a = 6 + 4j
b = 3 + 2j
print ("Phép nhân số phức - a =", a, "b =", b, "a * b =", a * b)

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

Phép nhân số phức – a = (6+4j) b = (3+2j) a * b = (10+24j)

Phép chia số phức trong Python

Để chia hai số phức cho nhau, chúng ta cần nhân cả tử số và mẫu số với số phức liên hợp của mẫu số. Đây là phương pháp phổ biến để đơn giản biểu thức chia số phức.

Giả sử ta có hai số phức:

  • a = 6 + 4j
  • b = 3 + 2j

Thực hiện phép chia a/b:

c = a/b
c = (6 + 4j) / (3 + 2j)
c = (6 + 4j) * (3 - 2j) / (3 + 2j) * (3 - 2j)
c = (18 - 12j + 12j - 8j²) / (9 - 6j + 6j - 4j²)
c = (18 - 12j + 12j + 8) / (9 - 6j + 6j + 4)   (Do j² = -1)
c = (18 + 8) / (9 + 4)
c = 26/13
c = 2 + 0j

Để kiểm chứng, bạn có thể chạy đoạn code Python sau:

a = 6 + 4j
b = 3 + 2j
print("Phép chia số phức - a =", a, "b =", b, "a/b =", a / b)

Đoạn code trên sẽ in ra kết quả phép chia, giúp bạn đối chiếu với phép tính bằng tay.

Lưu ý: Lớp số phức trong Python không hỗ trợ toán tử lấy phần dư (%) và toán tử chia lấy phần nguyên (//).

Lời kết

Chúng ta vừa cùng nhau khám phá chi tiết các toán tử số học trong Python, từ cộng, trừ, nhân, chia cho đến chia lấy dư, lũy thừa và thứ tự ưu tiên của chúng. Hy vọng qua bài viết này, bạn đã nắm vững cách sử dụng các toán tử này, cũng như hiểu rõ về cách chúng hoạt động với số phức, từ đó áp dụng linh hoạt vào các dự án lập trình của mình.

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