Cách làm Toán bằng Python 3 với Toán tử
Các con số cực kỳ phổ biến trong lập trình. Chúng được sử dụng để thể hiện những thứ như kích thước màn hình, vị trí địa lý, tiền và điểm, lượng thời gian trôi qua trong video, vị trí của hình đại diện trò chơi và màu sắc thông qua việc gán mã số.Có thể thực hiện hiệu quả các phép toán trong lập trình là một kỹ năng quan trọng cần phát triển vì tần suất bạn sẽ làm việc với các con số. Mặc dù hiểu biết cao về toán học chắc chắn có thể giúp bạn trở thành một lập trình viên giỏi hơn, nhưng đó không phải là yêu cầu . Nếu bạn không có kiến thức nền tảng về toán học, hãy cố gắng coi toán học như một công cụ để hoàn thành những gì bạn muốn đạt được và là một cách để cải thiện tư duy logic của bạn.
Ta sẽ làm việc với hai trong số các kiểu dữ liệu số, số nguyên và số float được sử dụng nhiều nhất của Python:
- Số nguyên là các số nguyên có thể là số dương, số âm hoặc 0 (…,
-1
,0
,1
,…). - Floats là số thực, chúng chứa một điểm thập phân (như trong
9.0
hoặc-2.25
).
Hướng dẫn này sẽ trình bày về các toán tử được dùng với các kiểu dữ liệu số trong Python.
Người điều hành
Toán tử là một ký hiệu hoặc hàm biểu thị một phép toán. Ví dụ, trong toán học, dấu cộng hoặc + là toán tử biểu thị phép cộng.
Trong Python, ta sẽ thấy một số toán tử quen thuộc được chuyển sang từ toán học, nhưng các toán tử khác mà ta sẽ sử dụng dành riêng cho lập trình máy tính.
Đây là bảng tham chiếu nhanh về các toán tử liên quan đến toán học trong Python. Ta sẽ trình bày tất cả các thao tác sau trong hướng dẫn này.
Hoạt động | Những gì nó trả lại |
---|---|
x + y | Tổng của x và y |
x - y | Sự khác biệt của x và y |
-x | Đã thay đổi dấu hiệu của x |
+ x | Nhận dạng của x |
x * y | Sản phẩm của x và y |
x / y | Thương của x và y |
x // y | Thương số từ phép chia tầng của x và y |
x% y | Phần còn lại của x / y |
x ** y | x y sức mạnh y |
Ta cũng sẽ đề cập đến các toán tử gán ghép , bao gồm +=
và *=
, kết hợp toán tử số học với toán tử =
.
Cộng và trừ
Trong Python, các toán tử cộng và trừ thực hiện giống như trong toán học. Trên thực tế, bạn có thể sử dụng ngôn ngữ lập trình Python như một máy tính.
Hãy xem một số ví dụ, bắt đầu với số nguyên:
print(1 + 5)
Output 6
Thay vì truyền trực tiếp các số nguyên vào câu lệnh print
, ta có thể khởi tạo các biến để dùng cho các giá trị số nguyên:
a = 88 b = 103 print(a + b)
Output191
Vì số nguyên có thể là cả số dương và số âm (và cả số 0), ta có thể thêm một số âm với một số dương:
c = -36 d = 25 print(c + d)
Output-11
Phép cộng sẽ hoạt động tương tự với float:
e = 5.5 f = 2.5 print(e + f)
Output8.0
Bởi vì ta đã thêm hai float với nhau, Python trả về một giá trị float với một vị trí thập phân.
Cú pháp của phép trừ giống như đối với phép cộng, ngoại trừ bạn sẽ thay đổi toán tử của bạn từ dấu cộng ( +
) thành dấu trừ ( -
):
g = 75.67 h = 32 print(g - h)
Output43.67
Ở đây, ta đã trừ một số nguyên khỏi một số thực. Python sẽ trả về một float nếu ít nhất một trong các số liên quan đến một phương trình là một float.
Phép toán số học bậc nhất
Một biểu thức toán học một ngôi chỉ bao gồm một thành phần hoặc phần tử và trong Python, các dấu cộng và trừ được dùng như một phần tử duy nhất được ghép nối với một giá trị để trả về nhận dạng của giá trị ( +
) hoặc thay đổi dấu của giá trị ( -
) .
Mặc dù không được sử dụng phổ biến, nhưng dấu cộng cho biết nhận dạng của giá trị. Ta có thể sử dụng dấu cộng với các giá trị dương:
i = 3.3 print(+i)
Output3.3
Khi ta sử dụng dấu cộng với một giá trị âm, nó cũng sẽ trả về nhận dạng của giá trị đó và trong trường hợp này, nó sẽ là một giá trị âm:
j = -19 print(+j)
Output-19
Với một giá trị âm, dấu cộng trả về cùng một giá trị âm.
Ngoài ra, dấu trừ thay đổi dấu của một giá trị. Vì vậy, khi ta chuyển một giá trị dương, ta sẽ thấy rằng dấu trừ trước giá trị sẽ trả về giá trị âm:
i = 3.3 print(-i)
Output-3.3
Ngoài ra, khi ta sử dụng toán tử một dấu trừ với giá trị âm, giá trị dương sẽ được trả về:
j = -19 print(-j)
Output19
Các phép toán số học một bậc được biểu thị bằng dấu cộng và dấu trừ sẽ trả về nhận dạng của giá trị trong trường hợp +i
hoặc dấu đối diện của giá trị dưới dạng -i
.
Phép nhân và phép chia
Giống như phép cộng và phép trừ, phép nhân và phép chia sẽ trông rất giống với cách chúng làm trong toán học. Dấu hiệu ta sẽ sử dụng trong Python cho phép nhân là *
và dấu hiệu ta sẽ sử dụng cho phép chia là /
.
Dưới đây là một ví dụ về thực hiện phép nhân trong Python với hai giá trị float:
k = 100.1 l = 10.1 print(k * l)
Output1011.0099999999999
Khi bạn chia trong Python 3, thương của bạn sẽ luôn được trả về dưới dạng số thực, ngay cả khi bạn sử dụng hai số nguyên:
m = 80 n = 5 print(m / n)
Output16.0
Đây là một trong những thay đổi lớn giữa Python 2 và Python 3 . Cách tiếp cận của Python 3 cung cấp câu trả lời dạng phân số để khi bạn sử dụng /
để chia 11
cho 2
, thương số của 5.5
sẽ được trả về. Trong Python 2, thương số được trả về cho biểu thức 11 / 2
là 5
.
Toán tử /
của Python 2 thực hiện phép chia tầng , trong đó đối với thương số x
, số được trả về là số nguyên lớn nhất nhỏ hơn hoặc bằng x
. Nếu bạn chạy ví dụ ở trên về print(80 / 5)
bằng Python 2 thay vì Python 3, bạn sẽ nhận được 16
dưới dạng kết quả mà không có vị trí thập phân.
Trong Python 3, bạn có thể sử dụng //
để thực hiện phân chia tầng. Biểu thức 100 // 40
sẽ trả về giá trị là 2
. Phép chia tầng rất hữu ích khi bạn cần thương số ở dạng số nguyên.
Modulo
Toán tử %
là modulo, trả về phần còn lại chứ không phải thương số sau khi chia. Điều này rất hữu ích để tìm các số là bội số của cùng một số chẳng hạn.
Hãy xem modulo đang hoạt động:
o = 85 p = 15 print(o % p)
Output10
Để chia nhỏ điều này, 85 chia cho 15 trả về thương của 5 với phần dư là 10. Giá trị 10
là giá trị được trả về ở đây vì toán tử modulo trả về phần còn lại của biểu thức chia.
Nếu ta sử dụng hai float với modulo, một giá trị float sẽ được trả về cho phần còn lại:
q = 36.0 r = 6.0 print(o % p)
Output0.0
Trong trường hợp 36,0 chia cho 6,0 thì không có dư nên trả về giá trị 0.0
.
Quyền
Toán tử **
trong Python được sử dụng để nâng số bên trái lên lũy thừa của số mũ bên phải. Nghĩa là, trong biểu thức 5 ** 3
, 5 đang được nâng lên lũy thừa thứ 3. Trong toán học, ta thường thấy biểu thức này được hiển thị là 5³, và những gì thực sự đang diễn ra là 5 đang được nhân với chính nó 3 lần. Trong Python, ta sẽ nhận được kết quả tương tự là 125
bằng cách chạy 5 ** 3
hoặc 5 * 5 * 5
.
Hãy xem một ví dụ với các biến:
s = 52.25 t = 7 print(s ** t)
1063173305051.292
Nâng số float 52.25
lên 52.25
thừa của 7
thông qua toán tử **
trả về giá trị float lớn.
ưu tiên điều hành
Trong Python, cũng như trong toán học, ta cần lưu ý các toán tử sẽ được đánh giá theo thứ tự ưu tiên, không phải từ trái sang phải hoặc từ phải sang trái.
Nếu ta nhìn vào biểu thức sau:
u = 10 + 10 * 5
Ta có thể đọc nó từ trái sang phải, nhưng hãy nhớ rằng phép nhân sẽ được thực hiện trước, vì vậy nếu ta gọi print(u)
, ta sẽ nhận được giá trị sau:
Output60
Điều này là do 10 * 5
cho kết quả là 50
, và sau đó ta thêm 10
để trả về 60
làm kết quả cuối cùng.
Thay vào đó, nếu ta muốn thêm giá trị 10
vào 10
, sau đó nhân tổng đó với 5
, ta có thể sử dụng dấu ngoặc đơn giống như ta làm trong toán học:
u = (10 + 10) * 5 print(u)
Output100
Một cách để nhớ thứ tự hoạt động là thông qua từ viết tắt PEMDAS :
Đặt hàng | Lá thư | Viết tắt của |
---|---|---|
1 | P | P arentheses |
2 | E | E xponent |
3 | M | M ultiplication |
4 | D | D ivision |
5 | A | Một ddition |
6 | S | S ubtraction |
Bạn có thể quen thuộc với một từ viết tắt khác cho thứ tự hoạt động, chẳng hạn như BEDMAS hoặc BODMAS . Dù từ viết tắt nào phù hợp nhất với bạn, hãy cố gắng ghi nhớ nó khi thực hiện các phép toán bằng Python để trả về kết quả mà bạn mong đợi.
Người điều hành nhiệm vụ
Toán tử gán phổ biến nhất là một toán tử bạn đã sử dụng: dấu bằng =
. Toán tử gán =
gán giá trị ở bên phải cho một biến ở bên trái. Ví dụ, v = 23
gán giá trị của số nguyên 23
cho biến v
.
Khi lập trình, người ta thường sử dụng các toán tử gán ghép thực hiện một phép toán trên giá trị của một biến và sau đó gán giá trị mới kết quả cho biến đó. Các toán tử ghép này kết hợp một toán tử số học với toán tử =
, vì vậy để thêm vào ta sẽ kết hợp +
với =
để có được toán tử ghép +=
. Hãy xem nó trông như thế nào:
w = 5 w += 1 print(w)
Output6
Đầu tiên, ta đặt biến w
bằng giá trị của 5
, sau đó ta sử dụng toán tử gán ghép +=
để cộng số bên phải với giá trị của biến bên trái rồi gán kết quả cho w
.
Các toán tử gán ghép được sử dụng thường xuyên trong trường hợp vòng lặp for , mà bạn sẽ sử dụng khi muốn lặp lại một quy trình nhiều lần:
for x in range (0, 7): x *= 2 print(x)
Output0 2 4 6 8 10 12
Với vòng lặp for, ta có thể tự động hóa quy trình của toán tử *=
nhân biến w
với số 2
và sau đó gán kết quả trong biến w
cho lần lặp tiếp theo của vòng lặp for.
Python có một toán tử gán ghép cho mỗi toán tử số học được thảo luận trong hướng dẫn này:
y += 1 # add then assign value y -= 1 # subtract then assign value y *= 2 # multiply then assign value y /= 3 # divide then assign value y // = 5 # floor divide then assign value y **= 2 # increase to the power of then assign value y %= 3 # return remainder then assign value
Các toán tử gán ghép có thể hữu ích khi mọi thứ cần được tăng hoặc giảm dần dần hoặc khi bạn cần tự động hóa các quy trình nhất định trong chương trình của bạn .
Kết luận
Hướng dẫn này bao gồm nhiều toán tử mà bạn sẽ sử dụng với các kiểu dữ liệu số nguyên và số thực. Nếu bạn muốn tiếp tục đọc về các con số bằng Python, bạn có thể tiếp tục về Các hàm tích hợp sẵn trong Python 3 để làm việc với các con số .
Để tìm hiểu thêm về các kiểu dữ liệu khác, hãy xem phần Hiểu kiểu dữ liệu trong Python 3 và tìm hiểu về cách chuyển đổi kiểu dữ liệu bằng cách đọc Cách chuyển đổi kiểu dữ liệu trong Python 3 .
Các tin liên quan
Giới thiệu về các hàm chuỗi trong Python 32016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Cách sử dụng bộ định dạng chuỗi trong Python 3
2016-10-14
Cách xử lý tệp văn bản thuần túy trong Python 3
2016-10-13
Cách sử dụng các biến trong Python 3
2016-10-12
Cách lập chỉ mục và cắt chuỗi trong Python 3
2016-09-28
Cách định dạng văn bản trong Python 3
2016-09-15
Giới thiệu về cách làm việc với chuỗi trong Python 3
2016-09-15
Hiểu các kiểu dữ liệu trong Python 3
2016-09-14