Để 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 cùng ptdulieu tìm hiểu về Toán tử số học trong python (Arithmetic operators in python), 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ử số học này trong các dự án của mình.
Table of Contents
Toán tử trong Python là gì
Toán tử là các biểu tượng cụ thể mà thực hiện một số hoạt động trên một số giá trị và cho ra một kết quả. Ví dụ biểu thức 2 + 3 = 5, thì 2 và 3 được gọi là các toán hạng và dấu + được gọi là toán tử.
Bảng dưới đây liệt kê các toán tử số học có trong Python
| Toán tử | Mô tả | Cách viết | Ví dụ |
|---|---|---|---|
| + | Cộng | a + b | 2 + 3 = 5 |
| - | Trừ | a – b | 5 - 2 = 3 |
| * | Nhân | a * b | 2 * 3 = 6 |
| / | Chia | b / a | 7 / 2 = 3.5 |
| % | Chia lấy dư | b % a | 7 % 2 = 1 |
| ** | Số mũ (Lũy thừa) | a**b | 2 ** 3 = 8 |
| // | Chia lấy nguyên | a // b | 7 // 2 = 3 |
Phép cộng giữa 2 số nguyên
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.
print(5 + 12)
#cộng 2 biến chứa hai giá trị số khác nhau
x = 4
y = 6
print(x + y)
#kết quả:
17
10
a = 30
b = 7.5
print(a+b)
#kết quả: 37.5
a = 15 + 8j
b = 6.2
print(a + b)
#kết quả: (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.
print(5 - 12)
x = 15
y = 7
print(x - y)
#kết quả:
-7
8
a = 15
b = 25.5
print(a-b)
#kết quả:-10.5
Toán tử nhân trong Python (multiplication)
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.
print (5*12)
x = 7
y = 5
print(x * y)
#kết quả:
60
35
a = 15
b = 25.5
print(a*b)
#kết quả: 382.5
Toán tử chia trong Python (division)
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.
print ( 5/12)
x = 6
y = 3
print(x/y)
#kết quả:
0.4166666666666667
2.0
a = 0
b = 4
print(b/a)
#kết quả:
--------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
Cell In[21], line 3
1 a = 0
2 b = 4
----> 3 print(b/a)
ZeroDivisionError: division by zero
Toán tử chia lấy dư trong Python (modulus)
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 modulus). 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
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.
print (5%12)
x = 15
y = 6
print(x%y)
#kết quả:
5
3
Toán tử chia lấy phần dư trong Python (floor division)
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).
- 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 là -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/2 là 4.9 và ta loại bỏ phần thập phân).
print (5//12)
x = 15
y = 6
print (x // y)
#kết quả:
0
2
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“.
print(5**12)
x = 15
y =6
print(x**y)
#kết quả:
244140625
11390625
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ừa | Tính kết hợp từ phải sang trái |
| %, *, /, // | Modulus, Nhân, Chia, và Chia lấy phần nguyên | Tí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 |
Bài viết trên đây về 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