Thực hành cấu trúc điều kiện if¶
Tóm lược nội dung
Bài này hướng dẫn cách giải một số bài toán có dùng câu lệnh if:
- Giải phương trình bậc hai
- Số ngày trong tháng
- Xét ba đoạn thẳng có tạo thành tam giác hay không
- Đánh giá tình trạng cơ thể dựa trên chỉ số BMI
Bài 1¶
Đề bài¶
Yêu cầu:
Viết chương trình giải phương trình bậc hai \(ax^2 + bx + c = 0 (a \neq 0)\).
Đầu vào:
Hệ số \(a, b, c\).
Đầu vào:
Nghiệm của phương trình.
Ví dụ:
| Đầu vào | Đầu ra |
|---|---|
| 1 1 1 | Vô nghiệm |
| 1 2 1 | Nghiệm kép: x1 = -1, x2 = -1 |
| 1 3 -4 | Hai nghiệm phân biệt: x1 = -4, x2 = 1 |
Cách giải đề xuất¶
Ý tưởng chính
Dùng cấu lệnh if để xét các trường hợp của delta so với 0.
Viết chương trình
1. Viết hàm solve_quadratic() để giải phương trình bậc hai.
Hàm gồm có:
- Ba tham số đầu vào là
a,bvàc. - Giá trị trả về
x1vàx2.
Hàm hoạt động như sau:
- Tính
delta. - Nếu
deltanhỏ hơn0: trả vềNone(dùng để chỉ định một biến không có giá trị) - Nếu
deltabằng0: tínhxvà trả về hai giá trịxgiống nhau. - Ngược với hai trường hợp trên, chắc chắn
deltalớn hơn0, tính và trả vềx1,x2.
2. Do có dùng hàm sqrt() để tính căn, ta cần nạp thư viện math.
3. Viết chương trình chính.
- Cho người dùng nhập ba hệ số của phương trình.
- Gọi hàm
solve_quadratic()để giải phương trình bậc hai và gán nghiệm trả về cho biếnn1vàn2. - Dùng câu lệnh
ifxétn1vàn2để in ra thông báo về nghiệm.
Bài 2¶
Đề bài¶
Yêu cầu:
Viết chương trình cho người dùng nhập vào tháng, in ra số ngày trong tháng đó.
Nếu tháng nhập vào là tháng 2 thì cần xác định năm thường hay năm nhuận.
Năm nhuận là năm chia hết cho 4.
Nếu năm đó chia hết cho 100 thì cũng phải chia hết cho 400.
Ví dụ:
năm 2024 là năm nhuận, vì chia hết cho 4.
Năm 2000 là năm nhuận, vì chia hết cho 100 và chia hết cho 400.
Năm 1900 không phải là năm nhuận, vì chia hết cho 100 nhưng không chia hết cho 400.
Đầu vào:
Tháng và năm.
Đầu ra:
Số ngày trong tháng.
Ví dụ:
| Đầu vào | Đầu ra |
|---|---|
| 11 2025 |
Tháng 11 có 30 ngày |
| 2 2024 |
Tháng 2 năm 2024 có 29 ngày |
Cách giải đề xuất¶
Ý tưởng chính
Ta cần viết hai hàm:
- Một hàm kiểm tra năm nhuận hay không.
- Một hàm cho biết số ngày trong tháng. Trong đó, nếu là tháng 2, thì gọi hàm kiểm tra năm nhuận để biết chính xác là 28 hay 29 ngày.
Viết chương trình
1. Viết hàm get_days_in_month() để cho biết số ngày trong tháng.
Hàm gồm có:
- Hai tham số là
monthvàyearứng với tháng và năm. - Giá trị trả về là số ngày.
Hàm hoạt động như sau:
-
Nếu là tháng 2 (
month == 2) thì gọi hàmis_leaf_year()để xét năm nhuận (hàm này sẽ được viết sau).Nếu hàm
is_leaf_year()trả vềTruethì hàmget_days_in_month()trả về29.Ngược lại, 'False', thì trả về
28. -
Nếu là tháng 4, 6, 9 hoặc 11 thì trả về
30. -
Với các tháng còn lại, trả về
31.
2. Viết hàm is_leaf_year() để kiểm tra năm nhuận.
Hàm gồm có một tham số là year, ứng với năm cần xét.
Giá trị trả về là True hoặc False, ứng với nhuận hoặc không nhuận.
Dưới đây là một cách viết hàm is_leaf_year().
3. Viết chương trình chính.
- Cho người dùng nhập tháng.
- Nếu người dùng nhập tháng
2thì cho nhập tiếp năm. Ngược lại, thì không cần nhập năm. - Gọi hàm
get_days_in_month()và gán số ngày trả về cho biếnresult. - In ra số ngày.
Bài 3¶
Đề bài¶
Yêu cầu:
Viết chương trình cho biết ba đoạn thẳng nhập vào có tạo thành tam giác hay không.
Đầu vào:
Ba số biểu thị cho độ dài của ba đoạn thằng.
Đầu ra:
Thông bao tạo thành tam giác hay không.
Ví dụ:
| Đầu vào | Đầu ra |
|---|---|
| 3 4 5 | Tạo thành tam giác |
| 1 1 7 | Không tạo thành tam giác |
Cách giải đề xuất¶
Ý tưởng chính
Để tạo thành tam giác, tổng của hai cạnh bất kỳ cũng phải lớn hơn cạnh còn lại.
Do đó, ta dùng câu lệnh if và toán tử and để xét ba điều kiện sau xảy ra đồng thời:
a + b > cb + c > aa + c > b
Viết chương trình
1. Viết hàm is_triangle() để xét các điều kiện.
Hàm gồm có:
- Ba tham số
a,bvàcbiểu thi cho độ dài ba đoạn thẳng. - Giá trị trả về là
TruehoặcFalseứng với tạo thành hoặc không tạo thành.
Thay vì dùng câu lệnh if, ta có thể viết như sau:
2. Viết chương trình chính.
- Cho người dùng nhập vào độ dài ba đoạn thẳng`.
- Gọi hàm
is_triangle()và dùng câu lệnhifđể xét giá trị trả về làTruehayFalseđể in ra thông báo tương ứng.
Bài 4¶
Đề bài¶
Yêu cầu:
Viết chương trình cho người dùng nhập vào cân nặng (đơn vị kg) và chiều cao (đơn vị mét), in ra chỉ số BMI và trạng thái cơ thể tương ứng.
BMI (Body Mass Index) là chỉ số khối cơ thể, đánh giá tình trạng dinh dưỡng và sức khỏe tổng thể.
| Phạm vi BMI | Tình trạng |
|---|---|
| \(BMI \lt 18.5\) | Thiếu ký |
| \(18.5 \le BMI \lt 23\) | Bình thường |
| \(23 \le BMI \lt 25\) | Dư ký |
| \(BMI \ge 25\) | Béo phì cấp độ I trở lên |
Đầu vào:
Một số nguyên là kích thước của ma trận vuông.
Đầu ra:
Ma trận theo yêu cầu.
Ví dụ:
| Đầu vào | Đầu ra |
|---|---|
| 68 1.75 |
22.20 Bình thường |
| 80 1.6 |
31.24 Béo phì |
Cách giải đề xuất¶
Ý tưởng chính
Ta cần viết hai hàm:
- Một hàm tính chỉ số BMI.
- Một hàm phân loại BMI.
Viết chương trình
1. Viết hàm calculate_bmi() để tính chỉ số BMI.
Hàm gồm có:
- Hai tham số đầu vào là
weightvàheight, ứng với cân nặng và chiều cao. - Giá trị trả về là chỉ số BMI.
2. Viết hàm categorize_bmi() để phân loại BMI.
Hàm gồm có:
- Một tham số đầu vào là
bmi. - Giá trị trả về là một trong các loại:
underweight,normal,overweightvàobesity.
3. Viết chương trình chính.
- Cho người dùng nhập vào cân nặng và chiều cao.
- Gọi hàm
calculate_bmi(). - Gọi hàm
categorize_bmi()và gán giá trị trả về cho biếncategory. - Dựa trên giá trị của biến
category, dùng câu lệnhifđể in ra thông báo tương ứng.
Mã nguồn¶
Code đầy đủ được đặt tại: