Ngôn ngữ lập trình Python cho phép chúng ta sử dụng một vòng lặp bên trong một vòng lặp khác hay còn gọi là vòng lặp lòng nhau trong python.
Chúng ta sẽ tiếp tục sử dụng IDE Online để thực hành các ví dụ
"Vòng lặp bên trong" sẽ được thực thi một lần cho mỗi lần lặp của "vòng lặp bên ngoài". Đây là một ví dụ, lưu ý cách lặp lại của vòng lặp bên ngoài và vòng lặp bên trong
adj = ["Chin", "Xanh", "Hong"]
fruits = ["Chuoi", "Tao", "Xoai"]
for x in adj:
for y in fruits:
print(x, y)
Bấm Run để chạy chương trình
Không phải "vô duyên vô cớ" mà chúng tôi dành cho vòng lặp lồng nhau hẳn một phần. Thực tế lập trình bạn sẽ rất cần sử dụng loại vòng lặp này, hay nói đúng hơn là đôi khi có những vấn đề cần giải quyết mà những người mới như chúng ta bối rối không biết phải làm như thế nào.
Hãy tưởng tượng tình huống cần giải quyết: in bảng cửu chương, ví dụ chỉ đơn giản cho 2 và 3 thôi.
Trước hết, dựa vào ví dụ "Táo Xoài" trên, chúng ta hình dung sẽ dễ hơn. Thay vì in ra từ "Chín" thì ta sẽ in ra số 2, thay vì in ra từ "Xanh" thì ta sẽ in ra số 3. Và chúng ta sẽ thay "Chuối Táo Xoài" bằng "* 1 = 2 , * 2 = 4...* 1 = 3, * 2 = 6..." Đại khái sau khi hoàn thành, "công trình" của chúng ta sẽ có hình dáng thế này:
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
2 * 10 = 20
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
3 * 10 = 30
Bây giờ chúng ta thử hình dung "thuật toán" sẽ như thế nào?
Nhìn ví dụ trên, ta thấy vòng lặp bên ngoài bao gồm hai phần tử là 2 và 3, vòng lặp bên trong bao gồm mười phần tử từ 1-10.
Khi vòng lặp bên ngoài duyệt phần tử "2" thì vòng lặp bên trong sẽ thực thi 10 lần. Tiếp tục khi vòng lặp bên ngoài duyệt phần tử "3" thì vòng lặp bên trong sẽ thực thi 10 lần nữa.
Tiếp tục phân tích:
Lần lặp đầu tiên của vòng lặp bên ngoài, chương trình sẽ chạy 10 vòng
Lần lặp thứ hai của vòng lặp bên ngoài, chương trình sẽ chạy 10 vòng nữa, tổng cộng là 20 vòng.
Nếu ta có lệnh in các phần tử của vòng lặp bên ngoài, chương trình sẽ in 10 số 2 và 10 số 3. Đây là code để thử
ngoai = [2,3]
trong = [1,2,3,4,5,6,7,8,9,10]
for x in ngoai:
for y in trong:
print(x)
Kết quả
Nếu ta in cả các phần tử vòng trong, ta sẽ sửa lại code như sau:
ngoai = [2,3]
trong = [1,2,3,4,5,6,7,8,9,10]
for x in ngoai:
for y in trong:
print(x,y)
Bây giờ "dung nhan" đã "hơi giống" với mong đợi
Ta tiếp tục "thử" với dấu nhân * ở giữa các phần tử. Đây là code
ngoai = [2,3]
trong = [1,2,3,4,5,6,7,8,9,10]
for x in ngoai:
for y in trong:
print(x,"*",y)
Và đây là kết quả
Cuối cùng ta sẽ hoàn tất bằng cách in dấu = và kết quả (chính là tích của x * y) sau mỗi vòng lặp. Đây là chương trình
ngoai = [2,3]
trong = [1,2,3,4,5,6,7,8,9,10]
for x in ngoai:
for y in trong:
print(x,"*",y, "=", x*y)
Bấm Run để chạy, mọi thứ hoàn hảo
Tuy nhiên, chúng ta có thể làm tốt hơn. Chúng ta biết rằng Python có hàm Range().
Sử dụng hàm này sẽ tốt hơn câu lệnh: trong[1,2,3,4,5,6,7,8,9,10]
Vòng lặp bên ngoài sẽ như sau:
for x in range(2, 4):
Vòng lặp bên trong sẽ như sau
for y in range(1, 11):
Chúng ta sẽ thử sửa lại code của chương trình
for x in range(2, 4):
for y in range(1, 11):
print(x, "*", y, "=", x*y)
Chạy chương trình, chương trình hoạt động tốt và rõ ràng hơn, ít lệnh hơn.
Không có nhận xét nào:
Đăng nhận xét