Buổi 4: Luyện tập rẽ nhánh

Hôm nay em sẽ học

  1. Bài toán năm nhuận
  2. Ba cạnh có tạo thành tam giác không?
  3. Kỹ năng quan trọng nhất của thí sinh: tự tạo test
  4. Giải phương trình, sắp xếp ba số, tìm ngày mai

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ình

1. Kiến thức chính

Năm nhuận

Năm nhuận khi: (chia hết cho 4 và không chia hết cho 100) hoặc chia hết cho 400.

y = int(input())
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
    print("YES")
else:
    print("NO")
Năm2024190020002026
Nhuận?cókhôngcókhông

Ba cạnh tạo thành tam giác

Tổng hai cạnh bất kỳ phải lớn hơn cạnh còn lại: a + b > c and a + c > b and b + c > a.

Muốn phân loại tam giác, nên sắp xếp để c là cạnh lớn nhất, rồi:

  • vuông khi a * a + b * b == c * c
  • đều khi a == b == c; cân khi có hai cạnh bằng nhau

Sắp xếp ba số bằng cách đổi chỗ

a, b, c = map(int, input().split())
if a > b: a, b = b, a      # đưa số nhỏ hơn lên trước
if b > c: b, c = c, b      # số lớn nhất về cuối
if a > b: a, b = b, a      # sửa lại hai số đầu
print(a, b, c)

Kỹ năng tự tạo test – 4 câu hỏi trước khi nộp bài

  1. Số nhỏ nhất có thể thì sao? (0, 1, số âm)
  2. Số lớn nhất có thể thì sao?
  3. Các số bằng nhau thì sao?
  4. Đúng bằng ngưỡng thì sao? (ví dụ điểm đúng bằng 8.0)

2. Ghi nhớ và lỗi thường gặp

Bẫy −0.00: phép chia 0 / -5 cho kết quả -0.0, in ra -0.00 và bị chấm sai. Cách chữa: cộng thêm 0.0 trước khi in (x = x + 0.0) hoặc kiểm tra if x == 0: x = 0.0.
LỗiVí dụ
Quên ngoặc khi trộn and, orđiều kiện năm nhuận phải có ngoặc như trên
Quên trường hợp đặc biệtphương trình ax + b = 0 với a = 0
Chỉ thử ví dụ trong đềmáy chấm có rất nhiều test khác!

3. Câu hỏi tự kiểm tra

  1. Năm 2100 có phải năm nhuận không? Vì sao?
  2. Ba số 2, 3, 6 có tạo thành ba cạnh tam giác không?
  3. Phương trình 0x + 5 = 0 có bao nhiêu nghiệm?

4. Bài tập về nhà

Bài 1 ★★ – SONGAY

Input: tháng m và năm y trên một dòng (1 ≤ m ≤ 12, 1 ≤ y ≤ 9999).

Output: số ngày của tháng đó.

InputOutput
2 202429
2 190028
4 202630

Bài 2 ★★★ – PTB2

Giải phương trình bậc hai ax² + bx + c = 0 (a ≠ 0).

Input: ba số nguyên a, b, c trên một dòng (|a|, |b|, |c| ≤ 1000, a ≠ 0).

Output: VO NGHIEM; hoặc nghiệm kép; hoặc hai nghiệm theo thứ tự tăng dần trên một dòng. Các nghiệm làm tròn 2 chữ số thập phân.

InputOutput
1 -3 21.00 2.00
1 2 1-1.00
1 0 1VO NGHIEM
Gợi ý: Δ = b² − 4ac. Δ < 0 vô nghiệm; Δ = 0 nghiệm kép x = −b / (2a); Δ > 0 hai nghiệm x = (−b ± √Δ) / (2a). Nhớ bẫy −0.00!

Bài 3 ★★★ (thử thách) – GOCKIM

Đồng hồ chỉ h giờ m phút. Tính góc nhỏ hơn tạo bởi kim giờ và kim phút.

Input: h và m trên một dòng (0 ≤ h ≤ 23, 0 ≤ m ≤ 59).

Output: số đo góc (độ), làm tròn 1 chữ số thập phân.

InputOutput
3 090.0
9 4522.5
12 30165.0
Gợi ý: mỗi phút kim phút quay 6°; kim giờ quay 30° mỗi giờ và thêm 0.5° mỗi phút. Góc nhỏ hơn thì không vượt quá 180°.
Cách nộp bài: mỗi bài một file .py đặt tên theo tên bài. Tự tạo thêm ít nhất 2 test cho mỗi bài!

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Zalo