Đâu là thứ tự đúng cho thứ tự các thao tác trong Python?

Thứ tự của các hoạt động trong một biểu thức là rất quan trọng để hiểu. Với các biểu thức phức tạp hơn, thứ tự ưu tiên của toán tử không phải lúc nào cũng đơn giản và nếu không được sử dụng đúng cách sẽ dẫn đến các giá trị không mong muốn. Hiểu toán tử và nhóm nào có quyền ưu tiên cao nhất trong một biểu thức sẽ giúp ích rất nhiều

Là một người có nền tảng toán học, từ viết tắt "PEMDAS" được sử dụng khá thường xuyên. Trong các nghiên cứu toán học cấp cao hơn của tôi (Phương trình vi phân & Đại số tuyến tính) không nhiều như chúng tôi mong đợi đã ghi nhớ hoặc hiểu đầy đủ phép toán nào sẽ "xảy ra trước" trong các biểu thức đại số phức tạp. Hiểu toán tử nào có quyền ưu tiên cao nhất trong một biểu thức là cực kỳ quan trọng bất kể cấp độ toán học

Một số toán tử toán học cơ bản là

  • Phép cộng. +
  • phép trừ. -
  • Phép nhân. *
  • Phân công. /
  • mô đun. %

và cụ thể cho Python

  • sức mạnh của. **
  • Phân chia tầng. //

Bảng ưu tiên toán tử

Từ viết tắt PEMDAS có một thiết bị ghi nhớ phổ biến để giúp ghi nhớ từ viết tắt. Xin thứ lỗi cho dì Sally thân yêu của tôi

Khi hai toán tử dùng chung một toán hạng, toán tử có độ ưu tiên cao hơn sẽ đi trước

Thứ tự các hoạt động có thể được mô tả bằng bảng dưới đây. Trường hợp ưu tiên toán tử đi từ cao nhất (dấu ngoặc đơn) đến thấp nhất (cộng & trừ). Nếu bạn phải so sánh hai toán tử trong cùng một nhóm, thứ tự ưu tiên sẽ đi từ trái (cao nhất) sang phải (thấp nhất). Điều này được gọi là sự kết hợp từ trái sang phải. Đối với nhóm số mũ, tính kết hợp là từ phải sang trái. Tất cả các quy tắc ưu tiên có thể được ghi đè bằng cách đặt dấu ngoặc đơn rõ ràng xung quanh một phần của biểu thức

Khi hai toán tử dùng chung một toán hạng như 2 - 5 * 3, toán tử có quyền ưu tiên cao nhất sẽ chiếm vị trí đầu tiên. Do đó, 2 - 5 * 3 có thể được viết lại thành +0 trong đó dấu ngoặc đơn hiện được ưu tiên cao nhất và +1 xuất hiện trước khiến chúng ta có +2

Một cái gì đó để giữ trong tâm trí. Khi toán tử chia xuất hiện trước phép nhân, phép chia đi trước

Tên (Các) Toán tử Ghi nhớ Dấu ngoặc đơn+3Xin vui lòngSố mũ**Xin lỗiNhân & chia*, /, //, %Cộng & Trừ thân mến của tôi+, -Dì Sally

ví dụ cơ bản

Bây giờ chúng ta có bảng trên để tham khảo và tài liệu Python, hãy xem xét một vài biểu thức. Tôi sẽ bắt đầu với một số biểu thức "cơ bản" trong đó thứ tự các phép toán đơn giản, sau đó độ khó sẽ tăng lên và sẽ mất một chút thời gian để quét biểu thức và ghi chú xem phép toán nào sẽ xảy ra trước

Ghi chú. Một biểu thức có thể được biểu diễn dưới dạng -1 trong đó các toán tử là +, - và toán hạng (hoặc giá trị) là -4, -5, -4

Vì hai toán tử chia sẻ một toán hạng như -7 trong đó 4 được bao quanh bởi hai toán tử, phép cộng và phép trừ. Chúng ta có thể áp dụng dấu ngoặc đơn cho toán tử có độ ưu tiên cao nhất (thêm vào đây) và tiếp tục đánh giá biểu thức. Do đó, -8 có thể được viết là -9 bằng với *0

Điều này có thể được xác minh bằng cách kiểm tra bảng trên và thấy rằng + là toán tử ngoài cùng bên trái trong nhóm Cộng & Trừ và khi so sánh các toán tử trong cùng một nhóm, toán tử gần bên trái nhất có quyền ưu tiên cao hơn

Bây giờ cho một cái gì đó liên quan nhiều hơn một chút

b = 30 / 2 * 5 + (10 + 5) - 3
Hiển thị lời giải thích

  1. Dấu ngoặc đơn đầu tiên (10 + 5) = 15 trong đó biểu thức được viết lại thành *2
  2. Tiếp theo, chúng ta có thể thấy toán hạng -4 chia sẻ hai toán tử, phép nhân có quyền ưu tiên cao nhất nhưng vì phép chia có trước phép nhân nên phép chia có trước nên *4 có thể được viết lại thành *5. Mà đánh giá là *6. Biểu thức ban đầu bây giờ là *7
  3. Cuối cùng thực hiện phép cộng và phép trừ, vì toán hạng 15 chia sẻ hai toán tử *8 nên phép cộng thực hiện trước và có thể viết lại thành *9

biểu thức phức tạp

Ok, vậy là các ví dụ trên đã sử dụng dấu ngoặc đơn, phép nhân, phép chia, phép cộng và phép trừ. Hãy làm thêm một ví dụ sử dụng số mũ để hiểu đầy đủ thứ tự các phép toán trong các biểu thức phức tạp hơn

Có rất nhiều đi trong biểu thức trên. Hãy chia nhỏ thứ tự các hoạt động

  1. Dấu ngoặc đơn đầu tiên. /0 trong đó biểu thức được viết lại thành /1
  2. số mũ tiếp theo. Các số mũ có mức ưu tiên cao nhất tiếp theo nên /2 và biểu thức ban đầu sẽ là /3
  3. Bây giờ chúng ta xem xét toán hạng -4 chia sẻ hai toán tử /5, toán tử nhân có độ ưu tiên cao hơn nhưng nếu phép chia xảy ra trước phép nhân thì phép chia có trước (xem ở trên). Vì vậy, chúng ta có thể viết lại /6 thành /7 bằng với /8. Bây giờ biểu thức ban đầu có thể được viết là /9
  4. Toán hạng 5 chia sẻ hai toán tử %0 và toán tử modulo có mức độ ưu tiên cao hơn nên mọi thứ có thể được viết lại thành %1 bằng với %2. Cập nhật biểu thức ban đầu thành %3
  5. Cuối cùng xử lý phép cộng và phép trừ, toán hạng %4 chia sẻ hai toán tử và phép trừ xuất hiện đầu tiên trong biểu thức (mặc dù phép cộng có quyền ưu tiên cao hơn) vì vậy chúng ta có thể viết %5 bằng với %6

Ghi chú. Thông thường, trong lập trình hàng ngày, bạn sẽ không gặp phải những biểu thức như vậy nhưng đôi khi chúng có thể xuất hiện

Phần kết luận

Tôi hy vọng một số ví dụ được hiển thị trong bài viết này sẽ giúp bạn hiểu rõ hơn về thứ tự các hoạt động trong Python. Hãy tự tạo biểu thức của riêng bạn và tự kiểm tra xem bạn có tính được câu trả lời cuối cùng dự kiến ​​hay không sau khi thực hiện đúng thứ tự các phép toán. Các biểu thức có thể được xác minh bằng cách nhập chúng vào REPL, Jupyter Notebook hoặc trình soạn thảo văn bản bạn chọn

Sau khi thực hành với một vài biểu thức, bạn sẽ bắt đầu trở nên thoải mái hơn với các biểu thức phức tạp và việc xác định thứ tự các phép toán sẽ trở thành bản chất thứ hai

Thứ tự đúng của các hoạt động trong Python là gì?

Quy tắc ưu tiên toán tử Python - PEMDAS .
P – Dấu ngoặc đơn
E – Luỹ thừa
M – Phép nhân
D – Bộ phận
A – Bổ sung
S – Phép trừ

Trình tự đúng cho thứ tự hoạt động là gì?

Chúng tôi có thể nhớ đơn hàng bằng PEMDAS. Dấu ngoặc đơn, số mũ, phép nhân và phép chia (từ trái sang phải), phép cộng và phép trừ (từ trái sang phải) .

Thứ tự ưu tiên của toán tử trong Python là gì?

Cả hai toán tử nhân và chia đều có cùng mức độ ưu tiên , cao hơn phép cộng và phép trừ cũng có cùng mức độ ưu tiên. Vì vậy, 2*3-1 mang lại 5 thay vì 4 và 5-2*2 là 1, không phải 6. Các toán tử có cùng mức độ ưu tiên được đánh giá từ trái sang phải.