Break, Continue và Pass
1. Giới thiệu
Phần tiêu đề “1. Giới thiệu”Khi làm việc với vòng lặp (for và while), chúng ta cần các câu lệnh để kiểm soát luồng thực thi. Python cung cấp 3 từ khoá quan trọng:
break: Dừng vòng lặp ngay lập tứccontinue: Bỏ qua phần còn lại của vòng lặp hiện tại, chuyển sang vòng lặp tiếp theopass: Không làm gì cả (placeholder)
2. Câu lệnh Break
Phần tiêu đề “2. Câu lệnh Break”2.1 - Break là gì?
Phần tiêu đề “2.1 - Break là gì?”break dùng để thoát khỏi vòng lặp ngay lập tức, bất kể vòng lặp còn bao nhiêu lần nữa.
2.2 - Cú pháp
Phần tiêu đề “2.2 - Cú pháp”for item in sequence: if condition: break # code khác2.3 - Ví dụ với vòng lặp for
Phần tiêu đề “2.3 - Ví dụ với vòng lặp for”# Tìm số đầu tiên chia hết cho 7for number in range(1, 100): if number % 7 == 0: print(f"Số đầu tiên chia hết cho 7: {number}") break # Thoát khỏi vòng lặpKết quả:
Số đầu tiên chia hết cho 7: 72.4 - Ví dụ với vòng lặp while
Phần tiêu đề “2.4 - Ví dụ với vòng lặp while”# Nhập số cho đến khi nhập 0while True: number = int(input("Nhập một số (0 để thoát): ")) if number == 0: print("Thoát chương trình!") break print(f"Bạn đã nhập: {number}")2.5 - Ví dụ thực tế: Tìm kiếm
Phần tiêu đề “2.5 - Ví dụ thực tế: Tìm kiếm”students = ["Minh Sang", "Tuệ Nghi", "Phước Sâm", "Bảo Nguyên"]search_name = "Phước Sâm"
found = Falsefor student in students: if student == search_name: print(f"Đã tìm thấy: {student}") found = True break
if not found: print("Không tìm thấy")3. Câu lệnh Continue
Phần tiêu đề “3. Câu lệnh Continue”3.1 - Continue là gì?
Phần tiêu đề “3.1 - Continue là gì?”continue dùng để bỏ qua phần còn lại của vòng lặp hiện tại và chuyển sang vòng lặp tiếp theo.
3.2 - Cú pháp
Phần tiêu đề “3.2 - Cú pháp”for item in sequence: if condition: continue # Bỏ qua code phía dưới, chuyển sang vòng lặp tiếp theo # code này sẽ bị bỏ qua nếu continue được thực thi3.3 - Ví dụ: In số lẻ
Phần tiêu đề “3.3 - Ví dụ: In số lẻ”# In các số lẻ từ 1 đến 10for number in range(1, 11): if number % 2 == 0: # Nếu là số chẵn continue # Bỏ qua, không in print(number) # Chỉ in số lẻKết quả:
135793.4 - Ví dụ: Bỏ qua giá trị không hợp lệ
Phần tiêu đề “3.4 - Ví dụ: Bỏ qua giá trị không hợp lệ”numbers = [10, -5, 20, -3, 30, 0, 40]
total = 0for num in numbers: if num <= 0: # Bỏ qua số âm và số 0 continue total += num
print(f"Tổng các số dương: {total}") # 1003.5 - Ví dụ với while
Phần tiêu đề “3.5 - Ví dụ với while”count = 0while count < 10: count += 1 if count == 5: # Bỏ qua số 5 continue print(count)Kết quả: 1 2 3 4 6 7 8 9 10 (không có 5)
4. Câu lệnh Pass
Phần tiêu đề “4. Câu lệnh Pass”4.1 - Pass là gì?
Phần tiêu đề “4.1 - Pass là gì?”pass là một câu lệnh không làm gì cả. Nó được dùng như một placeholder (chỗ giữ chỗ) khi cú pháp yêu cầu phải có code nhưng bạn chưa muốn viết gì.
4.2 - Cú pháp
Phần tiêu đề “4.2 - Cú pháp”for item in sequence: if condition: pass # Tạm thời không làm gì # code khác4.3 - Tại sao cần Pass?
Phần tiêu đề “4.3 - Tại sao cần Pass?”Python yêu cầu mỗi khối code phải có ít nhất một câu lệnh. Nếu bạn để trống, sẽ bị lỗi:
# LỖI! Không thể để trốngfor i in range(5): # Lỗi SyntaxErrorDùng pass để giữ chỗ:
# OK! Dùng passfor i in range(5): pass # Sẽ viết code sau4.4 - Ví dụ: Placeholder cho hàm
Phần tiêu đề “4.4 - Ví dụ: Placeholder cho hàm”def calculate_average(numbers): pass # TODO: Sẽ viết sau
def find_max(numbers): pass # TODO: Sẽ viết sau4.5 - Ví dụ: Placeholder cho class
Phần tiêu đề “4.5 - Ví dụ: Placeholder cho class”class Student: pass # Sẽ thêm thuộc tính và phương thức sau
# Có thể tạo object ngaystudent = Student()4.6 - Ví dụ: Bỏ qua một điều kiện
Phần tiêu đề “4.6 - Ví dụ: Bỏ qua một điều kiện”for number in range(1, 11): if number % 2 == 0: pass # Tạm thời không xử lý số chẵn else: print(f"{number} là số lẻ")5. So sánh Break, Continue và Pass
Phần tiêu đề “5. So sánh Break, Continue và Pass”| Câu lệnh | Chức năng | Khi nào dùng |
|---|---|---|
| break | Thoát khỏi vòng lặp | Khi muốn dừng vòng lặp hoàn toàn |
| continue | Bỏ qua vòng lặp hiện tại | Khi muốn bỏ qua một số trường hợp |
| pass | Không làm gì | Khi cần placeholder hoặc chưa viết code |
Ví dụ so sánh
Phần tiêu đề “Ví dụ so sánh”# Break - Dừng khi gặp số 5print("Break:")for i in range(1, 11): if i == 5: break print(i, end=" ") # 1 2 3 4
print("\n\nContinue:")# Continue - Bỏ qua số 5for i in range(1, 11): if i == 5: continue print(i, end=" ") # 1 2 3 4 6 7 8 9 10
print("\n\nPass:")# Pass - Không làm gìfor i in range(1, 11): if i == 5: pass print(i, end=" ") # 1 2 3 4 5 6 7 8 9 106. Break và Continue trong vòng lặp lồng nhau
Phần tiêu đề “6. Break và Continue trong vòng lặp lồng nhau”6.1 - Break chỉ thoát vòng lặp gần nhất
Phần tiêu đề “6.1 - Break chỉ thoát vòng lặp gần nhất”# Break trong vòng lặp lồng nhaufor i in range(1, 4): print(f"\nDòng {i}:") for j in range(1, 6): if j == 3: break # Chỉ thoát vòng lặp j print(j, end=" ")Kết quả:
Dòng 1:1 2Dòng 2:1 2Dòng 3:1 26.2 - Continue trong vòng lặp lồng nhau
Phần tiêu đề “6.2 - Continue trong vòng lặp lồng nhau”# Continue trong vòng lặp lồng nhaufor i in range(1, 4): for j in range(1, 4): if i == j: continue # Bỏ qua khi i == j print(f"({i}, {j})", end=" ") print() # Xuống dòngKết quả:
(1, 2) (1, 3)(2, 1) (2, 3)(3, 1) (3, 2)7. Kết hợp với else trong vòng lặp
Phần tiêu đề “7. Kết hợp với else trong vòng lặp”Python cho phép dùng else với vòng lặp. Khối else chỉ chạy khi vòng lặp kết thúc bình thường (không bị break).
7.1 - Vòng lặp với else (không có break)
Phần tiêu đề “7.1 - Vòng lặp với else (không có break)”for number in range(1, 6): print(number)else: print("Vòng lặp kết thúc bình thường")7.2 - Vòng lặp với else (có break)
Phần tiêu đề “7.2 - Vòng lặp với else (có break)”for number in range(1, 10): if number == 5: print("Tìm thấy số 5!") breakelse: print("Không tìm thấy số 5") # Không chạy vì có break7.3 - Ví dụ thực tế: Kiểm tra số nguyên tố
Phần tiêu đề “7.3 - Ví dụ thực tế: Kiểm tra số nguyên tố”def is_prime(n): if n < 2: return False
for i in range(2, int(n ** 0.5) + 1): if n % i == 0: print(f"{n} không phải số nguyên tố (chia hết cho {i})") break else: print(f"{n} là số nguyên tố") return True return False
is_prime(17) # 17 là số nguyên tốis_prime(15) # 15 không phải số nguyên tố (chia hết cho 3)8. Các ví dụ thực tế
Phần tiêu đề “8. Các ví dụ thực tế”Ví dụ 1: Xác thực đăng nhập
Phần tiêu đề “Ví dụ 1: Xác thực đăng nhập”max_attempts = 3attempts = 0
while attempts < max_attempts: password = input("Nhập mật khẩu: ")
if password == "python123": print("Đăng nhập thành công!") break else: attempts += 1 print(f"Sai mật khẩu! Còn {max_attempts - attempts} lần thử")else: print("Hết số lần thử. Tài khoản bị khoá!")Ví dụ 2: Lọc danh sách
Phần tiêu đề “Ví dụ 2: Lọc danh sách”students = ["Alice", "Bob", "", "Charlie", None, "David", ""]
# Lọc bỏ tên rỗngvalid_students = []for student in students: if not student: # Nếu rỗng hoặc None continue valid_students.append(student)
print(valid_students) # ["Alice", "Bob", "Charlie", "David"]Ví dụ 3: Tìm phần tử trong ma trận
Phần tiêu đề “Ví dụ 3: Tìm phần tử trong ma trận”matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]
search = 5found = False
for row in matrix: for num in row: if num == search: print(f"Tìm thấy {search}!") found = True break if found: break # Thoát cả vòng lặp ngoàiVí dụ 4: Menu chương trình
Phần tiêu đề “Ví dụ 4: Menu chương trình”while True: print("\n=== MENU ===") print("1. Xem danh sách") print("2. Thêm mới") print("3. Xoá") print("0. Thoát")
choice = input("Chọn: ")
if choice == "0": print("Tạm biệt!") break elif choice == "1": print("Hiển thị danh sách...") elif choice == "2": print("Thêm mới...") elif choice == "3": print("Xoá...") else: print("Lựa chọn không hợp lệ!") continue9. Lưu ý quan trọng
Phần tiêu đề “9. Lưu ý quan trọng”- Break và Continue chỉ ảnh hưởng vòng lặp gần nhất
- Pass không ảnh hưởng đến luồng chương trình
- Else trong vòng lặp chỉ chạy khi KHÔNG có break
- Tránh lạm dụng break - có thể làm code khó đọc
- Continue có thể thay thế bằng if-else nhưng đôi khi làm code gọn hơn
Bài giảng trên YouTube
Phần tiêu đề “Bài giảng trên YouTube”Cập nhật sau
📝 Bài tập thực hành
Phần tiêu đề “📝 Bài tập thực hành”Sau khi học xong bài này, hãy thực hành với các bài tập sau: