Buổi 1: Làm quen với Python
Hôm nay em sẽ học
- Viết và chạy chương trình Python đầu tiên
- Dùng lệnh
printđể máy tính "nói" - Dùng Python như một chiếc máy tính siêu mạnh
- Đọc thông báo lỗi và tự sửa lỗi
Bấm vào slide rồi dùng phím ← → để chuyển, phím F để xem toàn màn hình.
Mở toàn màn hình1. Kiến thức chính
Viết và chạy chương trình
- Mở Thonny, gõ chương trình vào ô soạn thảo.
- Bấm Ctrl + S để lưu. Tên file không dấu, không khoảng trắng, đuôi
.py(ví dụbai1.py). - Bấm F5 để chạy. Kết quả hiện ở ô Shell phía dưới.
Lệnh print – cho máy tính "nói"
print("Xin chào") # chữ phải nằm trong dấu nháy print(2026) # số thì không cần dấu nháy print("Năm nay là", 2026) # nhiều thứ cách nhau dấu phẩy print() # in một dòng trống
Xin chào 2026 Năm nay là 2026
Các phép toán
| Phép toán | Ký hiệu | Ví dụ | Kết quả |
|---|---|---|---|
| Cộng, trừ, nhân | + - * | 7 * 8 | 56 |
| Chia (luôn ra số thực) | / | 17 / 5 | 3.4 |
| Chia lấy phần nguyên | // | 17 // 5 | 3 |
| Chia lấy dư | % | 17 % 5 | 2 |
| Lũy thừa | ** | 2 ** 10 | 1024 |
Chia 17 cái kẹo cho 5 bạn: mỗi bạn được 17 // 5 = 3 cái, còn dư 17 % 5 = 2 cái.
n % 10 lấy chữ số cuối, n // 10 bỏ chữ số cuối. Hai phép // và % dùng rất nhiều trong đề thi!Python tính được số rất lớn và chính xác từng chữ số: print(2 ** 100) in ra 1267650600228229401496703205376.
Phép nhân chữ và nối chữ
print("*" * 10) # lặp lại chữ 10 lần print("ha" * 3) print("Tin" + " hoc " + "tre") # nối các chữ lại
********** hahaha Tin hoc tre
Chú thích
Dòng (hoặc phần cuối dòng) bắt đầu bằng dấu # là chú thích – Python bỏ qua, dùng để ghi chú cho người đọc.
2. Ghi nhớ và lỗi thường gặp
| Em viết | Python báo | Sửa lại |
|---|---|---|
Print("A") | NameError | print viết thường – Python phân biệt chữ hoa, chữ thường |
print("A" | SyntaxError | thiếu ngoặc đóng ) |
print(A) | NameError | chữ phải có dấu nháy: "A" |
print(3,5) | in ra 3 5 | số thập phân dùng dấu chấm: 3.5 |
Khi gặp lỗi: đọc dòng cuối của thông báo (loại lỗi) và số line (dòng bị lỗi), sửa, lưu, chạy lại.
3. Câu hỏi tự kiểm tra
- Lệnh
print(7 // 2, 7 % 2)in ra gì? - Lệnh
print("ab" * 3 + "!")in ra gì? - Python báo
NameError: name 'Print' is not defined. Lỗi ở đâu, sửa thế nào?
4. Bài tập về nhà
Bài 1 ★ – KHUNGTEN
In tên của em trong một khung bằng dấu *. Ví dụ với tên Nguyen An:
************** * Nguyen An * **************
Bài 2 ★ – GIAYNAM
Một năm (không nhuận) có 365 ngày. Viết chương trình tính và in ra số giây trong một năm.
Bài 3 ★★ – THU1000
Hôm nay là thứ Hai. Hỏi 1000 ngày nữa là thứ mấy?
Viết chương trình tính bằng phép %, rồi dùng bảng sau để trả lời:
| Số dư | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| Thứ | Hai | Ba | Tư | Năm | Sáu | Bảy | Chủ nhật |
Bài 4 ★★★ (thử thách) – TRIEUGIAY
1 000 000 giây bằng bao nhiêu ngày, giờ, phút, giây?
Chỉ dùng // và %. Chương trình in ra 4 số trên một dòng: ngày, giờ, phút, giây.
.py đặt tên theo tên bài (ví dụ KHUNGTEN.py). Chạy thử trước khi nộp!Đáp án câu hỏi tự kiểm tra
- In ra
3 1(7 chia 2 được 3, dư 1). - In ra
ababab! - Viết
Printvới chữ P hoa. Python phân biệt chữ hoa và chữ thường, phải viếtprint.
Bài 1 – KHUNGTEN
Ý tưởng
Dòng trên và dòng dưới là dấu * lặp lại nhiều lần – dùng phép nhân chữ. Dòng giữa gồm *, tên, dấu cách và *.
Đếm số ký tự của dòng giữa để biết dòng trên/dưới cần bao nhiêu dấu *: * Nguyen An * có 14 ký tự.
Lời giải
print("*" * 14) print("* Nguyen An *") print("*" * 14)
************** * Nguyen An * **************
Bài 2 – GIAYNAM
Ý tưởng
1 năm = 365 ngày, 1 ngày = 24 giờ, 1 giờ = 60 phút, 1 phút = 60 giây. Nhân tất cả lại.
Lời giải
print(365 * 24 * 60 * 60)
31536000
Bài 3 – THU1000
Ý tưởng
Cứ 7 ngày thì lại quay về thứ Hai. Vì vậy chỉ cần biết 1000 ngày là bao nhiêu tuần và dư mấy ngày: dùng 1000 % 7.
Lời giải
print(1000 % 7)
6
Số dư là 6. Tra bảng: 6 ứng với Chủ nhật. Vậy 1000 ngày nữa là Chủ nhật.
7 % 7 = 0 → thứ Hai (đúng!). 8 ngày nữa → dư 1 → thứ Ba.Bài 4 – TRIEUGIAY
Ý tưởng
Làm từ đơn vị lớn đến nhỏ:
- Số ngày =
1000000 // 86400. Phần giây còn lại =1000000 % 86400. - Từ phần còn lại: số giờ =
còn lại // 3600, rồi phần còn lại% 3600. - Tương tự cho phút (
// 60) và giây (% 60).
Lời giải
print(1000000 // 86400, 1000000 % 86400 // 3600, 1000000 % 3600 // 60, 1000000 % 60)
11 13 46 40
Vậy 1 000 000 giây = 11 ngày 13 giờ 46 phút 40 giây.
1000000 % 3600 cũng chính là phần giây lẻ sau khi đã bỏ các giờ trọn vẹn. Em có thể viết dài hơn cho dễ hiểu – buổi sau học biến sẽ viết gọn hơn nhiều.Lỗi hay gặp khi làm bài
- Quên dấu nháy khi in chữ, hoặc dùng dấu nháy "cong" khi copy từ Word.
- Dùng
/thay cho//nên ra số thực như11.574074….
Mục tiêu
- Mở Thonny, viết và chạy được chương trình đầu tiên.
- Dùng
print()in chữ và số; dùng Python như một chiếc máy tính:+ - * / // % **. - Đọc được thông báo lỗi đơn giản và tự sửa.
Chuẩn bị: Máy cài Python 3 (https://www.python.org) và Thonny (https://thonny.org).
1. Khởi động (10')
Hỏi HS: "Trong Scratch, muốn mèo nói 'Xin chào' em dùng khối nào?" → khối nói [Xin chào].
"Trong Python, ta không kéo khối nữa mà gõ lệnh":
print("Xin chào")
Cho HS mở Thonny, gõ, bấm Run (F5). Lưu file tên bai1.py (không dấu, không khoảng trắng).
2. Kiến thức mới (25')
2.1. Lệnh print
print("Xin chào các em") # in một xâu (chữ đặt trong dấu nháy) print(2026) # in một số print("Năm nay là", 2026) # in nhiều thứ, Python tự thêm dấu cách ở giữa print() # in một dòng trống
# là chú thích, Python bỏ qua – giống "ghi chú" trong Scratch.2.2. Python là máy tính
| Phép toán | Ký hiệu | Ví dụ | Kết quả |
|---|---|---|---|
| Cộng, trừ, nhân | + - * | 7 * 8 | 56 |
| Chia | / | 17 / 5 | 3.4 (luôn ra số thực) |
| Chia lấy phần nguyên | // | 17 // 5 | 3 |
| Chia lấy dư (mod trong Scratch) | % | 17 % 5 | 2 |
| Lũy thừa | ** | 2 ** 10 | 1024 |
print(17 // 5, 17 % 5) # 3 2 print((2 + 3) * 4) # 20 – dùng ngoặc như toán học print(2 ** 100) # Python tính được số rất lớn, Scratch thì không!
// và % là hai phép quan trọng nhất trong thi lập trình – nhấn mạnh ngay từ buổi đầu.
2.3. Phép nhân xâu
print("*" * 10) # ********** print("ha" * 3) # hahaha
2.4. Cố tình gây lỗi để đọc lỗi
Cho HS gõ sai từng dòng, xem Python báo gì:
Print("A") # NameError: name 'Print' is not defined → Python phân biệt chữ hoa/thường print("A" # SyntaxError: thiếu ngoặc đóng print(A) # NameError: quên dấu nháy
Thói quen cần tạo: đọc dòng cuối thông báo lỗi + số dòng (line …) trước khi hỏi thầy/cô.
3. Luyện tập (45')
Bài 1 ★ – Giới thiệu bản thân. In ra 3 dòng: họ tên, lớp, trường của em.
Bài 2 ★ – Máy tính bỏ túi. Viết chương trình in ra (mỗi kết quả một dòng):
123 × 456, 2026 chia lấy phần nguyên cho 7, 2026 chia lấy dư cho 7, 2 mũ 20.
Bài 3 ★★ – Vẽ hình bằng ký tự. In ra đúng hình sau (dùng phép nhân xâu):
* ** *** ****
Bài 4 ★★ – Đổi thời gian. 10000 giây bằng bao nhiêu giờ, phút, giây?
Chỉ dùng // và %, in ra 2 46 40.
Bài 5 ★★★ – Thứ mấy? Hôm nay là thứ Hai. Hỏi 100 ngày nữa là thứ mấy?
Gợi ý: đánh số thứ Hai = 0, thứ Ba = 1, …, Chủ nhật = 6.
4. Tổng kết & bài về nhà (10')
- HS tự nói lại:
printdùng làm gì?//khác/thế nào?%dùng làm gì? - BTVN:
- In tên của em trong một khung sao (dòng trên/dưới là dấu
*). - Tính số giây trong một năm (365 ngày).
- Tính 1000 ngày nữa (kể từ thứ Hai) là thứ mấy.
- In tên của em trong một khung sao (dòng trên/dưới là dấu
Lỗi thường gặp
- Quên dấu nháy / dùng nháy "thông minh" (“ ”) khi copy từ Word.
- Viết
Print,PRINT. - Dùng dấu phẩy thập phân
3,5thay vì dấu chấm3.5.
Đáp án (dành cho giáo viên)
# Bài 2 print(123 * 456) # 56088 print(2026 // 7) # 289 print(2026 % 7) # 3 print(2 ** 20) # 1048576 # Bài 3 print("*" * 1) print("*" * 2) print("*" * 3) print("*" * 4) # Bài 4 print(10000 // 3600, 10000 % 3600 // 60, 10000 % 60) # 2 46 40 # Bài 5: 100 % 7 = 2 → thứ Hai + 2 = thứ Tư print(100 % 7) # BTVN 2 print(365 * 24 * 60 * 60) # 31536000 # BTVN 3: 1000 % 7 = 6 → thứ Hai + 6 = Chủ nhật