Bài 8 — Rùa vẽ hoa văn nhiều màu (lồng vòng lặp)
🎯 Mục tiêu bài học
- Biết tô màu bút và độ dày nét vẽ cho chú Rùa.
- Hiểu vòng lặp lồng nhau (một for nằm trong một for khác).
- Tự tay vẽ được một hoa văn xoay tròn nhiều màu thật đẹp.
Vòng lặp lồng nhau: vòng trong vẽ một hình, vòng ngoài xoay để lặp lại hình đó.
Nhắc lại Bài 5: chú Rùa biết đi tới (forward), quẹo trái/phải (left/right). Ở bài này ta cho Rùa cầm thêm bút màu và học một mẹo cực mạnh: đặt một vòng lặp bên trong một vòng lặp để vẽ đi vẽ lại rồi xoay — thế là ra hoa văn!
1. Cho Rùa đổi màu và đổi nét bút
Trước khi vẽ, ta dặn Rùa dùng màu gì bằng rua.pencolor("red"), và nét bút dày cỡ nào bằng rua.pensize(3). Vài màu tiếng Anh hay dùng: red (đỏ), blue (xanh dương), green (xanh lá), orange (cam), purple (tím).
import turtle rua = turtle.Turtle() rua.pencolor("blue") # chon mau but rua.pensize(4) # net but day 4 rua.forward(120)
Ghi nhớ: tên màu viết bằng tiếng Anh và đặt trong dấu ngoặc kép, ví dụ "red".
2. Vẽ hình vuông bằng vòng lặp (ôn nhanh)
Muốn vẽ hình vuông, ta lặp 4 lần: đi tới rồi quẹo phải 90 độ. Đây là một vòng lặp for — ta sẽ gọi nó là vòng lặp trong.
for canh in range(4): rua.forward(100) rua.right(90)
Vì sao 90 độ? Hình vuông có 4 góc, mỗi lần quẹo 360 ÷ 4 = 90 độ thì đúng một vòng khép kín.
3. Vòng lặp LỒNG NHAU — bí quyết tạo hoa văn
Nếu ta đặt vòng lặp vẽ hình vuông vào bên trong một vòng lặp khác, rồi mỗi lần lại xoay Rùa đi một chút, thì hình vuông sẽ được vẽ nhiều lần ở nhiều hướng — tạo thành hoa văn. Vòng lặp bên ngoài lo việc xoay, vòng lặp bên trong lo việc vẽ hình.
for lan in range(6): # vong NGOAI: xoay 6 lan for canh in range(4): # vong TRONG: ve hinh vuong rua.forward(80) rua.right(90) rua.right(60) # xoay 60 do roi ve tiep
Chú ý phần thụt đầu dòng! Lệnh của vòng trong thụt vào sâu hơn. Máy nhìn khoảng thụt để biết lệnh nào thuộc vòng nào.
Chỉ cần lồng vòng lặp và đổi màu, chú Rùa vẽ được hoa văn rực rỡ thế này!
Mẹo toán học: vòng ngoài lặp 6 lần, mỗi lần xoay 60 độ → 6 × 60 = 360 độ = đúng một vòng tròn khép kín, nên hoa văn cân đối.
4. Đổi màu theo mỗi vòng cho rực rỡ
Ta có thể chuẩn bị một danh sách màu rồi mỗi vòng lấy một màu khác nhau. (Danh sách sẽ học kỹ ở Bài 9, ở đây bạn cứ dùng thử cho vui.)
mau = ["red", "orange", "green", "blue"] for i in range(4): rua.pencolor(mau[i]) # lay mau thu i rua.forward(100) rua.right(90)
5. Ghi nhớ nhanh
| Câu lệnh | Ý nghĩa |
|---|---|
| rua.pencolor("red") | Đổi màu bút sang đỏ |
| rua.pensize(4) | Nét bút dày cỡ 4 |
| for ... : trong for ... : | Vòng lặp lồng nhau |
| Thụt đầu dòng sâu hơn | Lệnh thuộc vòng lặp bên trong |
| số lần × góc xoay = 360 | Hoa văn khép kín, cân đối |
✎ Phần A — Trắc nghiệm (5 câu)
Câu 1. Muốn Rùa vẽ bằng bút màu đỏ, ta viết gì?
rua.pencolor("red") đặt màu bút. Tên màu viết tiếng Anh, trong dấu ngoặc kép.
Câu 2. Trong vòng lặp lồng nhau, vòng lặp BÊN TRONG lo việc gì (theo bài học)?
Vòng trong vẽ một hình; vòng ngoài xoay Rùa để lặp lại hình đó ở nhiều hướng.
Câu 3. Máy tính dựa vào đâu để biết lệnh nào thuộc vòng lặp nào?
Python dùng khoảng thụt đầu dòng để phân biệt lệnh nào thuộc vòng lặp nào. Thụt sâu hơn nghĩa là nằm bên trong sâu hơn.
Câu 4. Vòng ngoài lặp 6 lần, mỗi lần xoay 60 độ. Tổng góc xoay là bao nhiêu?
6 × 60 = 360 độ — đúng một vòng tròn, nên hoa văn cân đối, khép kín đẹp mắt.
Câu 5. Đoạn nào vẽ được HÌNH VUÔNG?
Hình vuông cần 4 cạnh, mỗi góc quẹo 360 ÷ 4 = 90 độ. Vậy lặp 4 lần, mỗi lần forward rồi right(90).
💻 Phần B — Cho Rùa vẽ hoa văn
Bấm Chạy để xem chú Rùa vẽ hoa văn nhiều màu! Sau đó thử đổi số vòng, góc xoay hoặc màu để tạo hoa văn của riêng bạn.
(Chú Rùa sẽ vẽ ở đây sau khi bạn bấm Chạy...)
(Thông báo sẽ hiện ở đây...)
Thử thách: Đổi range(6) ở vòng ngoài thành range(12) và rua.right(60) thành rua.right(30) (vì 12 × 30 = 360). Hoa văn sẽ dày và lộng lẫy hơn nhiều!