Thứ ba, 01/11/2016 | 00:00 GMT+7

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ênsố 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 xy
x - y Sự khác biệt của xy
-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 xy
x / y Thương của x và y
x // y Thương số từ phép chia tầng của xy
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 +=*= , 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) 
Output
191

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) 
Output
8.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) 
Output
43.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) 
Output
3.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) 
Output
19

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) 
Output
1011.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) 
Output
16.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 / 25 .

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) 
Output
10

Để 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) 
Output
0.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:

Output
60

Đ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) 
Output
100

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) 
Output
6

Đầ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) 
Output
0 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 .


Tags:

Các tin liên quan

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
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