Trong phần này chúng ta sẽ tìm hiểu về câu lệnh điều kiện và vòng lặp.
Trong lập trình có những trường hợp bạn phải tùy theo dữ liệu mà có những kiểu xử lý khác nhau. Ví dụ như bài toán tìm nghiệm của phương trình bậc hai, bạn sẽ phải đưa ra 3 kết quả khác nhau khi delta khác nhau. Khi đó bạn phải dùng đến câu lệnh điều kiện. Câu lệnh điều kiện đánh giá xem một trường hợp là đúng (true) hay sai (false), để dẫn tới các quyết định khác nhau.
Mặc định trong Python thì các giá trị không phải kiểu boolean mà có giá trị khác 0 hay khác rỗng đều có thể chuyển thành boolean mang giá trị True, còn nếu bằng 0 hay rỗng thì mang giá trị False.
Câu lệnh If
if (biểu thức): các câu lệnh
Câu lệnh if kiểm tra xem biểu thức mang giá trị True hay False, nếu true thì thực thi các câu lệnh.
number = 8 if (number % 2 == 0): print (number, "is an even number")
Trong ví dụ trên, chúng ta kiểm tra xem number có phải là số chẵn hay không.
Number is an even number
Câu lệnh If..elif..else
if (biểu thức 1): các câu lệnh elif (biểu thức 2): các câu lệnh elif (biểu thức n): các câu lệnh else: các câu lệnh
Nếu bạn có nhiều trường hợp cần xử lý, chẳng hạn như tìm nghiệm phương trình bậc 2 có tới 3 trường hợp của delta, thì bạn sử dụng cú pháp if..elif..else.
time = 10 if (time < 10): print ("Good morning") elif (time < 20): print ("Good day") else: print ("Good evening")
Đoạn code trên kiểm tra nếu time < 10 thì in ra Good morning, nếu time < 20 thì in ra Good day, còn nếu không phải 2 trường hợp trên thì in ra Good evening.
Good day
Ngoài ra bạn cũng có thể lồng các câu lệnh if vào nhau. Xem ví dụ.
var1 = 100 if var1: print("1 - Got a true expression value") print (var1) else: print("1 - Got a false expression value") print(var1) var2 = 0 if var2: print("2 - Got a true expression value") print(var2) else: print("2 - Got a false expression value") print(var2)
1 - Got a true expression value 100 2 - Got a false expression value 0
Bây giờ chúng ta sẽ tìm hiểu về vòng lặp.
Khi Python dịch một chương trình thì nó sẽ dịch các câu lệnh một cách có thứ tự từ trên xuống dưới. Đôi khi bạn muốn làm một công việc có tính chất lặp đi lặp lại, chẳng hạn như in ra các số chẵn từ 0→1000. Bạn không thể ngồi gõ 1000 câu lệnh if..print được. Bạn sẽ phải dùng dến vòng lặp.
Vòng lặp while
Vòng lặp while
thường dùng khi bạn chưa biết trước số lượng vòng lặp cần dùng.
while (biểu thức): các câu lệnh
Ý nghĩa của câu lệnh này là trong khi điều kiện còn đúng thì thực hiện các câu lệnh.
x = 0 while (x < 1000): x = x + 1 print (x)
Trong đoạn code trên, trong khi x vẫn còn < 1000 thì tăng x lên 1.
1000
Bạn có thể dùng while…else trong Python, cú pháp này có tác dụng thực thi các câu lệnh sau khi rời khỏi vòng lặp.
count = 0 while count < 5: print (count, " is less than 5") count = count + 1 else: print (count, " is not less than 5")
0 is less than 5 1 is less than 5 2 is less than 5 3 is less than 5 4 is less than 5 5 is not less than 5
Vòng lặp for
Vòng lặp for thường được dùng khi bạn đã biết trước số lượng vòng lặp cần thực hiện.
for biến lặp in tập hợp: các câu lệnh
Biến lặp có thể là bất cứ biến nào. Bạn chỉ cần đưa vào một cái tên là Python sẽ tự ngầm hiểu kiểu dữ liệu. Còn tập hợp có thể là bất kỳ kiểu tập hợp nào mà chúng ta đã học trong bài trước, hoặc cũng có thể là một string.
for letter in 'Python': print('Current Letter :', letter) fruits = ['banana', 'apple', 'mango']</span> for fruit in fruits: print ('Current fruit :', fruit)
Current Letter : P Current Letter : y Current Letter : t Current Letter : h Current Letter : o Current Letter : n Current fruit : banana Current fruit : apple Current fruit : mango
Bạn cũng có thể dùng vòng lặp for theo chỉ số.
fruits = ['banana','apple', 'mango'] for index in range(len(fruits)): print ('Current fruit :', fruits[index])
Current fruit : banana Current fruit : apple Current fruit : mango
Cũng giống như vòng lặp while, bạn cũng có thể dùng else cho vòng lặp for.
for num in range(10,20): for i in range(2,num): if num%i == 0: j=num/i print('%d equals %d * %d' % (num,i,j)) break else: print (num, 'is a prime number')
Ví dụ trên tìm ước số của các số khác 1 và chính nó của từ 10 đến 20. Nếu không tìm thấy thì thông báo số đó là số nguyên tố. Và cũng giống như các câu lệnh điều kiện, bạn cũng có thể lồng các vòng lặp vào nhau.
10 equals 2 * 5 11 is a prime number 12 equals 2 * 6 13 is a prime number 14 equals 2 * 7 15 equals 3 * 5 16 equals 2 * 8 17 is a prime number 18 equals 2 * 9 19 is a prime number
Câu lệnh Break
Khi bạn muốn dừng vòng lặp giữa chừng thì dùng câu lệnh break.
for letter in 'Python': if letter == 'h': break print ('Current Letter :', letter) var = 10 while var > 0: print ('Current variable value :', var) var = var -1 if var == 5: break
Trong đoạn code trên, ở vòng lặp for chúng ta sẽ dừng vòng lặp nếu tìm thấy kí tự ‘h’ trong chuỗi “Python”, ở vòng lặp while thì sẽ dừng vòng lặp khi biến var
giảm
bằng 5.
Current Letter : P Current Letter : y Current Letter : t Current variable value : 10 Current variable value : 9 Current variable value : 8 Current variable value : 7 Current variable value : 6
Câu lệnh Continue
Câu lệnh continue
có tác dụng nhảy sang lần lặp kế tiếp. Các câu lệnh phía sau contine
sẽ không được thực thi.
for letter in 'Python': if letter == 'h': continue print ('Current Letter :', letter) var = 10 while var > 0: var = var -1 if var == 5: continue print ('Current variable value :', var)
Trong ví dụ trên, ở vòng lặp for, chúng ta cho lặp tiếp khi tìm thấy kí tự ‘h’ mà không in ký tự đó ra màn hình. Còn ở vòng lặp while thì chúng ta cho lặp tiếp khi biến var
bằng 5.
Current Letter : P Current Letter : y Current Letter : t Current Letter : o Current Letter : n Current variable value : 9 Current variable value : 8 Current variable value : 7 Current variable value : 6 Current variable value : 4 Current variable value : 3 Current variable value : 2 Current variable value : 1 Current variable value : 0