Python: if-else
Giải phóng thời gian, khai phóng năng lực
Điều kiện if-else dùng trong trường hợp muốn rẽ nhánh chương trình theo điều kiện. Ví dụ, nếu biến nguyên n chia hết cho 2 thì suy ra n là số chẵn, ngược lại n là số lẻ. Có nhiều dạng rẽ nhánh khác nhau, dưới đây ta sẽ tìm hiểu những dạng điều kiện if-else khác nhau để có thể áp dụng vào từng trường hợp cụ thể thực tế.
1. if không có else
Cú pháp:
Theo cú pháp trên, khối_lệnh chỉ được thực hiện khi điều_kiện là đúng, còn không thì bỏ qua khối_lệnh.
điều_kiện ở đây có thể là một điều kiện đơn hoặc cũng có thể bao gồm nhiều điều kiện sử dụng các phép toán logic. Ví dụ:
2. if - else thông thường
Cú pháp:
Theo cú pháp trên, nếu điều_kiện là đúng thì thực hiện khối_lệnh1, không đúng thì thực hiện khối_lệnh2. Ví dụ:
int m=6 if m%2 != 0: #điều kiện này sai, print(m,"là số lẻ") #nên khối lệnh này không được thực hiện. else: print(m,"là số chẵn") #vậy thì khối lệnh này sẽ được thực hiện.
Ví dụ dưới đây sẽ áp dụng if-else để xác định một số N bất kỳ nào đó có phải là số nguyên hay không. Số nguyên là số có phần thập phân bằng 0 hoặc phần nguyên của số đó bằng chính nó, ví dụ như 5.0 được coi là số nguyên vì phần thập phân bằng 0 hay phần nguyên của nó (là 5) bằng chính nó (5.0).
N = float(input("Mời nhập 1 số bất kỳ: ")) if N%1 == 0: #nếu N chia hết cho 1 (phần dư của N cho 1 bằng 0) print(N,"là số nguyên") #thì N là số nguyên else: print(N,"không phải là số nguyên")
3. Nhiều if-else
Loại điều kiện này được sử dụng trong trường hợp có nhiều điều kiện rẽ nhánh và thường có dạng như sau:
Theo cú pháp này, nếu điều_kiện_i nào đúng thì khối_lệnh_i của if tương ứng sẽ được thực hiện, tất cả các khối lệnh khác sẽ bị bỏ qua.
Trong trường hợp tất cả các điều kiện đều sai thì khối_lệnh của else nằm cuối cùng sẽ được thực hiện. Ví dụ sau sẽ xác định loại học lực dựa trên biến diemTrungBinh:
diemTrungBinh=float(input("Mời bạn nhập điểm trung bình: ")) if diemTrungBinh >= 9: print("Xuất sắc") elif diemTrungBinh >= 8: print("Giỏi") elif diemTrungBinh >= 6.5: print("Khá") elif diemTrungBinh >= 5: print("Trung bình") else: #nếu tất cả các điều kiện trên đều sai print("Học lực yếu") #thì khối lệnh này sẽ được thực hiện
4. if lồng
if lồng có nghĩa là if nằm trong if, hay trong if này lại có if khác. Dưới đây là một dạng if lồng:
Theo dạng trên thì trong if ngoài có 2 if. Vấn đề có thể nảy sinh là phải nhận diện rõ else nào đi với if nào để thiết lập đúng cho các điều kiện rẽ nhánh.
Bạn cần nhớ quy tắc sau:
"else sẽ đi với if gần nó nhất nhưng phải nằm trong cùng một khối lệnh".
Theo dạng trên thì cặp else và if có màu xanh (green) sẽ đi với nhau, cặp else và if màu đỏ (red) sẽ đi với nhau.
Ví dụ, sử dụng ngôn ngữ lập trình Python để giải phương trình bậc hai: ax2 + bx + c = 0. Để giải được phương trình bậc hai thì ta cần phải có ba dữ liệu là ba hệ số a, b và c. Sau đây là đoạn mã thực hiện chương trình:
# Bài toán giải phương trình bậc hai: ax2 + bx + c = 0 #import hàm sqrt() để tính căn bậc 2 from math import sqrt #trước tiên yêu cầu người dùng nhập vào các hệ số a a=float(input("Nhập hệ số a: ")) b=float(input("Nhập hệ số b: ")) #hệ số b c=float(input("Nhập hệ số c: ")) #và hệ số c if a == 0: #nếu a bằng 0 thì if b == 0: #nếu b bằng 0 thì if c == 0: #nếu c bằng 0 thì #in ra phương trình vô số nghiệm print("Phương trình vô số nghiệm!") else: #nếu không thì in ra phương trình vô nghiệm print("Phương trình vô nghiệm!") else: #trường hợp b khác 0 #thì phương trình có nghiệm -c/b print("Phương trình có một nghiệm, x =", -c / b) else: #trường hợp a khác 0 thì delta = b * b - 4 * a * c #trước tiên tính biệt thức delta if delta < 0: #nếu delta âm print("Phương trình vô nghiệm!") #thì phương trình vô nghiệm elif delta == 0: #nếu không thì nếu delta bằng 0 #thì phương trình có nghiệm kép bằng -b/(2*a) print("Phương trình có nghiệm kép, x1 = x2 =", -b / (2 * a)) else: #trường hợp còn lại (tức là delta dương) #thì khẳng định phương trình có hai nghiệm phân biệt print("Phương trình có hai nghiệm phân biệt:") x1 = (-b + sqrt(delta)) / (2 * a) #tính nghiệm x1 x2 = (-b - sqrt(delta)) / (2 * a) #tính nghiệm x2 print("x1 =", x1) #rồi in ra x1 print("x2 =", x2) #và x2.
Xem thêm
Giải phóng thời gian, khai phóng năng lực