Thứ sáu, 16/06/2017 | 00:00 GMT+7

Cách viết câu lệnh có điều kiện trong Python 3

Câu lệnh điều kiện là một phần của mọi ngôn ngữ lập trình. Với câu lệnh điều kiện, ta có thể có đoạn mã đôi khi chạy và lúc khác không chạy, tùy thuộc vào điều kiện của chương trình tại thời điểm đó.

Khi ta thực hiện đầy đủ từng câu lệnh của một chương trình, di chuyển từ trên xuống dưới với từng dòng được thực hiện theo thứ tự, ta không yêu cầu chương trình đánh giá các điều kiện cụ thể. Bằng cách sử dụng các câu lệnh điều kiện, các chương trình có thể xác định xem các điều kiện nhất định có đang được đáp ứng hay không và sau đó được cho biết phải làm gì tiếp theo.

Hãy xem một số ví dụ mà ta sẽ sử dụng câu lệnh điều kiện:

  • Nếu học sinh nhận được hơn 65% bài kiểm tra của bạn , hãy báo cáo rằng điểm của em đạt; nếu không, báo cáo rằng điểm của cô ấy không đạt
  • Nếu anh ta có tiền trong account , hãy tính lãi; nếu anh ta không, tính phí phạt
  • Nếu họ mua 10 quả cam trở lên, tính chiết khấu 5%; nếu họ mua ít hơn, thì đừng

Thông qua việc đánh giá các điều kiện và gán mã để chạy dựa trên việc các điều kiện đó có được đáp ứng hay không, ta đang viết mã có điều kiện.

Hướng dẫn này sẽ hướng dẫn bạn cách viết các câu lệnh điều kiện bằng ngôn ngữ lập trình Python.

Câu lệnh if

Ta sẽ bắt đầu với if tuyên bố, mà sẽ đánh giá liệu một tuyên bố là đúng hay sai, và mã chạy chỉ trong trường hợp báo cáo kết quả là đúng.

Trong editor thuần túy, hãy mở một file và viết mã sau:

grade = 70  if grade >= 65:     print("Passing grade") 

Với mã này, ta có grade biến và đang cho nó giá trị nguyên là 70 . Sau đó ta đang sử dụng if tuyên bố để đánh giá hay không cấp biến là lớn hơn hoặc bằng ( >= ) đến 65 . Nếu nó đáp ứng điều kiện này, ta đang yêu cầu chương trình in ra chuỗi Điểm Passing grade .

Lưu chương trình dưới dạng grade.py và chạy nó trong môi trường lập trình local từ cửa sổ terminal bằng lệnh python grade.py .

Trong trường hợp này, điểm 70 không đáp ứng điều kiện lớn hơn hoặc bằng 65, vì vậy bạn sẽ nhận được kết quả sau khi chạy chương trình:

Output
Passing grade

Bây giờ ta hãy thay đổi kết quả của chương trình này bằng cách thay đổi giá trị của biến grade thành 60 :

grade.py
grade = 60  if grade >= 65:     print("Passing grade") 

Khi ta lưu và chạy đoạn mã này , ta sẽ không nhận được kết quả nào vì điều kiện không được đáp ứng và ta đã không yêu cầu chương trình thực hiện một câu lệnh khác.

Để đưa ra một ví dụ khác, hãy để ta tính xem số dư account ngân hàng có dưới 0. Hãy tạo một file có tên account.py và viết chương trình sau:

account.py
balance = -5  if balance < 0:     print("Balance is below 0, add funds now or you will be charged a penalty.") 

Khi ta chạy chương trình với python account.py , ta sẽ nhận được kết quả sau:

Output
Balance is below 0, add funds now or you will be charged a penalty.

Trong chương trình ta khởi tạo biến balance với giá trị của -5 , đó là ít hơn 0. Kể từ khi sự cân bằng đáp ứng được các điều kiện của if statement ( balance < 0 ), khi ta tiết kiệm và chạy mã này, ta sẽ nhận được chuỗi kết quả . , nếu ta thay đổi số dư thành 0 hoặc một số dương, ta sẽ không nhận được kết quả .

Tuyên bố khác

Có khả năng là ta sẽ muốn chương trình để làm điều gì đó ngay cả khi một if đánh giá lại tuyên bố sai sự thật. Trong ví dụ về điểm của ta , ta sẽ muốn kết quả cho dù điểm đạt hay không đạt.

Để thực hiện việc này, ta sẽ thêm một câu lệnh else vào điều kiện lớp ở trên được xây dựng như sau:

grade.py
grade = 60  if grade >= 65:     print("Passing grade")  else:     print("Failing grade") 

Kể từ khi biến lớp trên có giá trị 60 thì if đánh giá lại tuyên bố như sai, vì vậy chương trình sẽ không in ra Passing grade . Câu lệnh else theo sau yêu cầu chương trình thực hiện điều gì đó.

Khi ta lưu và chạy chương trình, ta sẽ nhận được kết quả sau:

Output
Failing grade

Nếu sau đó ta viết lại chương trình để cung cấp giá trị cho điểm là 65 hoặc cao hơn, thay vào đó ta sẽ nhận được điểm Passing grade kết quả .

Để thêm một bảng sao kê else vào ví dụ account ngân hàng, ta viết lại mã như sau:

account.py
balance = 522  if balance < 0:     print("Balance is below 0, add funds now or you will be charged a penalty.")  else:     print("Your balance is 0 or above.") 
Output
Your balance is 0 or above.

Ở đây, ta đã thay đổi giá trị biến balance thành một số dương để câu lệnh else sẽ in. Để in câu lệnh if đầu tiên, ta có thể viết lại giá trị thành một số âm.

Bằng cách kết hợp một if tuyên bố với một else tuyên bố, bạn đang xây dựng một tuyên bố hai phần có điều kiện để chỉ thị cho máy tính để thực thi mã nhất định hay không if điều kiện được đáp ứng.

Câu lệnh if khác

Lúc này, ta đã trình bày một lựa chọn Boolean cho báo cáo có điều kiện, mỗi if tuyên bố đánh giá để đúng hoặc sai. Trong nhiều trường hợp, ta sẽ muốn một chương trình đánh giá nhiều hơn hai kết quả có thể có. Đối với điều này, ta sẽ sử dụng một câu lệnh else if , được viết bằng Python dưới dạng elif . Các elif hoặc else if tuyên bố vẻ thích if tuyên bố và sẽ đánh giá điều kiện khác.

Trong chương trình account ngân hàng, ta có thể cần có ba kết quả riêng biệt cho ba trường hợp khác nhau:

  • Số dư dưới 0
  • Số dư bằng 0
  • Số dư trên 0

Các elif tuyên bố sẽ được đặt giữa if tuyên bố và else tuyên bố như sau:

account.py
. . . if balance < 0:     print("Balance is below 0, add funds now or you will be charged a penalty.")  elif balance == 0:     print("Balance is equal to 0, add funds soon.")  else:     print("Your balance is 0 or above.") 

Bây giờ, có ba kết quả kết quả có thể xảy ra khi ta chạy chương trình:

  • Nếu số balance biến đổi bằng 0 ta sẽ nhận được kết quả từ câu lệnh elif ( Balance is equal to 0, add funds soon. )
  • Nếu số balance biến được đặt thành một số dương, ta sẽ nhận được kết quả từ câu lệnh else (Số Your balance is 0 or above. ).
  • Nếu biến balance được cài đặt để một số âm, sản lượng sẽ là chuỗi từ if statement ( Balance is below 0, add funds now or you will be charged a penalty ).

Tuy nhiên, điều gì sẽ xảy ra nếu ta muốn có nhiều hơn ba khả năng? Ta có thể làm điều này bằng cách viết nhiều câu lệnh elif vào mã của ta .

Trong chương trình grade.py , hãy viết lại mã sao cho có một số cấp chữ cái tương ứng với các phạm vi cấp số:

  • 90 trở lên tương đương với điểm A
  • 80-89 tương đương với điểm B
  • 70-79 tương đương với điểm C
  • 65-69 tương đương với điểm D
  • 64 trở xuống tương đương với điểm F

Để chạy mã này, ta cần một if tuyên bố, ba elif báo cáo, và một else tuyên bố rằng sẽ xử lý tất cả các trường hợp thất bại.

Hãy viết lại mã từ ví dụ trên để có các chuỗi in ra từng loại chữ cái. Ta có thể giữ nguyên tuyên bố else của ta .

grade.py
. . . if grade >= 90:     print("A grade")  elif grade >=80:     print("B grade")  elif grade >=70:     print("C grade")  elif grade >= 65:     print("D grade")  else:     print("Failing grade") 

Vì các câu lệnh elif sẽ đánh giá theo thứ tự, ta có thể giữ cho các câu lệnh của bạn khá cơ bản. Chương trình này đang hoàn thành các bước sau:

  1. Nếu điểm lớn hơn 90, chương trình sẽ in điểm A grade , nếu điểm nhỏ hơn 90, chương trình sẽ tiếp tục câu lệnh tiếp theo…

  2. Nếu điểm lớn hơn hoặc bằng 80, chương trình sẽ in điểm B grade , nếu điểm từ 79 trở xuống, chương trình sẽ tiếp tục đến câu lệnh tiếp theo…

  3. Nếu điểm lớn hơn hoặc bằng 70, chương trình sẽ in điểm C grade , nếu điểm từ 69 trở xuống, chương trình sẽ tiếp tục đến câu lệnh tiếp theo…

  4. Nếu điểm lớn hơn hoặc bằng 65, chương trình sẽ in điểm D grade , nếu từ 64 trở xuống, chương trình sẽ tiếp tục đến câu lệnh tiếp theo…

  5. Chương trình sẽ in Failing grade vì tất cả các điều kiện trên không được đáp ứng.

Câu lệnh If lồng nhau

Khi bạn thấy phù hợp với các câu lệnh if , elifelse , bạn có thể chuyển sang các câu lệnh điều kiện lồng nhau. Ta có thể sử dụng các câu lệnh if lồng nhau cho các tình huống mà ta muốn kiểm tra điều kiện phụ nếu điều kiện đầu tiên thực thi là true. Đối với điều này, ta có thể có một câu lệnh if-else bên trong một câu lệnh if-else khác. Hãy xem cú pháp của câu lệnh if lồng nhau:

if statement1:              #outer if statement     print("true")      if nested_statement:    #nested if statement         print("yes")      else:                   #nested else statement         print("no")  else:                       #outer else statement     print("false") 

Một số kết quả kết quả có thể có từ mã này:

  • Nếu statement1 đánh giá là true, thì chương trình sẽ đánh giá xem câu nested_statement cũng đánh giá là true hay không. Nếu cả hai trường hợp đều đúng, kết quả sẽ là:
Output
true yes
  • Tuy nhiên, nếu statement1 đánh giá là true, nhưng nested_statement lại đánh giá là false, thì kết quả kết quả sẽ là:
Output
true no
  • Và nếu statement1 đánh giá là false, thì câu lệnh if-else lồng nhau sẽ không chạy, vì vậy câu lệnh else sẽ chạy một mình và kết quả kết quả sẽ là:
Output
false

Ta cũng có thể có nhiều if báo cáo lồng suốt mã của ta :

if statement1:                  #outer if      print("hello world")      if nested_statement1:       #first nested if          print("yes")      elif nested_statement2:     #first nested elif         print("maybe")      else:                       #first nested else         print("no")  elif statement2:                #outer elif     print("hello galaxy")      if nested_statement3:       #second nested if         print("yes")      elif nested_statement4:     #second nested elif         print("maybe")      else:                       #second nested else         print("no")  else:                           #outer else     statement("hello universe") 

Trong đoạn mã trên, có một lồng nhau if tuyên bố bên trong mỗi if tuyên bố ngoài việc elif tuyên bố. Điều này sẽ cho phép nhiều tùy chọn hơn trong mỗi điều kiện.

Hãy xem ví dụ về các câu lệnh if lồng nhau với chương trình grade.py của ta . Ta có thể kiểm tra xem một điểm có đậu trước hay không (lớn hơn hoặc bằng 65%), sau đó đánh giá loại chữ cái mà điểm số sẽ tương đương với. Tuy nhiên, nếu điểm không đạt, ta không cần phải chạy qua các điểm chữ cái, và thay vào đó có thể báo cáo chương trình rằng điểm không đạt. Mã đã sửa đổi của ta với câu lệnh if lồng nhau sẽ trông như thế này:

grade.py
. . . if grade >= 65:     print("Passing grade of:")      if grade >= 90:         print("A")      elif grade >=80:         print("B")      elif grade >=70:         print("C")      elif grade >= 65:         print("D")  else:     print("Failing grade") 

Nếu ta chạy mã với grade biến được đặt thành giá trị số nguyên 92 , điều kiện đầu tiên được đáp ứng và chương trình sẽ in ra Passing grade of: Tiếp theo, nó sẽ kiểm tra xem liệu lớp có lớn hơn hoặc bằng 90 hay không và vì điều kiện này cũng được đáp ứng, nó sẽ in ra A

Nếu ta chạy mã với biến grade được đặt thành 60 , thì điều kiện đầu tiên không được đáp ứng, vì vậy chương trình sẽ bỏ qua các câu lệnh if lồng nhau và chuyển xuống câu lệnh else , chương trình sẽ in ra Failing grade .

Tất nhiên, ta có thể thêm nhiều tùy chọn hơn cho điều này và sử dụng lớp thứ hai của các câu lệnh if lồng nhau. Có lẽ ta sẽ muốn đánh giá điểm A +, A và A- một cách riêng biệt. Ta có thể làm như vậy trước tiên bằng cách kiểm tra xem điểm có đạt hay không, sau đó kiểm tra xem điểm đạt từ 90 trở lên, sau đó kiểm tra xem điểm có trên 96 đối với điểm A + không:

grade.py
. . . if grade >= 65:     print("Passing grade of:")      if grade >= 90:         if grade > 96:             print("A+")          elif grade > 93 and grade <= 96:             print("A")          elif grade >= 90:             print("A-") . . . 

Trong đoạn mã trên, đối với biến grade được đặt thành 96 , chương trình sẽ chạy như sau:

  1. Kiểm tra xem điểm lớn hơn hoặc bằng 65 (đúng)
  2. In ra điểm Passing grade of:
  3. Kiểm tra xem điểm lớn hơn hoặc bằng 90 (đúng)
  4. Kiểm tra xem điểm có lớn hơn 96 không (sai)
  5. Kiểm tra xem điểm có lớn hơn 93 và nhỏ hơn hoặc bằng 96 hay không (đúng)
  6. In A
  7. Để lại các câu lệnh điều kiện lồng nhau này và tiếp tục với mã còn lại

Do đó, kết quả của chương trình cho điểm 96 trông giống như sau:

Output
Passing grade of: A

Các câu lệnh if lồng nhau có thể tạo cơ hội để thêm một số mức điều kiện cụ thể vào mã của bạn.

Kết luận

Bằng cách sử dụng báo cáo có điều kiện giống như if tuyên bố, bạn sẽ phải kiểm soát tốt hơn thực thi chương trình gì của bạn. Các câu lệnh điều kiện cho chương trình đánh giá xem một điều kiện nhất định có được đáp ứng hay không. Nếu điều kiện được đáp ứng, nó sẽ thực thi mã cụ thể, nhưng nếu nó không được đáp ứng, chương trình sẽ tiếp tục chuyển xuống mã khác.

Để tiếp tục thực hành các câu lệnh điều kiện, hãy thử sử dụng các toán tử khác nhau, kết hợp các toán tử với and hoặc or và sử dụng các câu lệnh điều kiện cùng với các vòng lặp . Bạn cũng có thể xem qua hướng dẫn của ta về Cách tạo chương trình máy tính đơn giản để làm quen với các câu lệnh điều kiện.


Tags:

Các tin liên quan

Cách cài đặt pygame và tạo mẫu để phát triển trò chơi bằng Python 3
2017-06-15
Cách chuyển mã Python 2 sang Python 3
2017-05-17
Cách chuyển mã Python 2 sang Python 3
2017-05-17
Cách sử dụng tính năng ghi log trong Python 3
2017-05-02
Cách gỡ lỗi Python bằng control panel tương tác
2017-04-27
Cách sử dụng trình gỡ lỗi Python
2017-04-25
Cách cài đặt Python 3 và thiết lập môi trường lập trình cục bộ trên CentOS 7
2017-04-20
Cách cài đặt Python 3 và thiết lập môi trường lập trình cục bộ trên Debian 8
2017-04-20
Cách cài đặt Python 3 và thiết lập môi trường lập trình cục bộ trên CentOS 7
2017-04-20
Cách áp dụng tính đa hình cho các lớp trong Python 3
2017-04-13