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:
OutputPassing 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 = 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:
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:
OutputBalance 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 = 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:
OutputFailing 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:
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.")
OutputYour 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:
. . . 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ằng0
ta sẽ nhận được kết quả từ câu lệnhelif
(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ệnhelse
(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 .
. . . 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:
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…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…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…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…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
, elif
và else
, 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âunested_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à:
Outputtrue yes
- Tuy nhiên, nếu
statement1
đánh giá là true, nhưngnested_statement
lại đánh giá là false, thì kết quả kết quả sẽ là:
Outputtrue 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ệnhelse
sẽ chạy một mình và kết quả kết quả sẽ là:
Outputfalse
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:
. . . 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:
. . . 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:
- Kiểm tra xem điểm lớn hơn hoặc bằng 65 (đúng)
- In ra điểm
Passing grade of:
- Kiểm tra xem điểm lớn hơn hoặc bằng 90 (đúng)
- Kiểm tra xem điểm có lớn hơn 96 không (sai)
- 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)
- In
A
- Để 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:
OutputPassing 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.
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 32017-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