C5-07 · Thuê sân cầu lông
Xem dạng PDFĐề
Giá thuê sân cầu lông là 80 nghìn đồng/giờ; giờ cao điểm là 120 nghìn đồng/giờ (giá giả định).
Viết hàm tien_san(so_gio, cao_diem=False) trả về số tiền thuê (nghìn đồng); tham số cao_diem có giá trị mặc định False (mục 5.2.3). Chương trình chính đọc số giờ và một chữ cái, gọi hàm với đối số theo tên cao_diem=(ky_tu == "c") rồi in số tiền.
Dữ liệu vào
Một dòng chứa số giờ thuê (số nguyên dương) và một chữ cái thường, cách nhau một dấu cách:
c: thuê giờ cao điểm;k: thuê giờ thường (không cao điểm).
Kết quả
Một số nguyên: số tiền thuê sân, đơn vị nghìn đồng.
Ràng buộc
- ~1 \le \text{so\_gio} \le 1000~.
- Chữ cái là
choặck(chữ thường).
Ví dụ 1
Dữ liệu vào:
2 c
Kết quả:
240
Ví dụ 2
Dữ liệu vào:
3 k
Kết quả:
240
Giải thích ví dụ
- Ví dụ 1:
ky_tu == "c"làTrue, lời gọitien_san(2, cao_diem=True)trả về 2 × 120 = 240. - Ví dụ 2:
ky_tu == "c"làFalse, lời gọitien_san(3, cao_diem=False)(hoặc chỉtien_san(3), dùng giá trị mặc định) trả về 3 × 80 = 240.
Hai ví dụ cố ý ra cùng một số: một lời giải tính nhầm giá vẫn có thể đúng một trong hai ví dụ, nên hệ thống còn nhiều test khác.
Ghi chú
- Phải truyền
cao_diem=(ky_tu == "c"), không truyền thẳng chữ cái: chuỗi"k"khác rỗng nênif cao_diem:vẫn đúng (mục 3.2.1). - Đối số theo vị trí: số giờ đứng trước. Đảo thứ tự đối số thì không có thông báo lỗi nào nhưng kết quả sai (mục 5.2.2).
- Tham số có giá trị mặc định phải đứng sau:
def tien_san(cao_diem=False, so_gio):bịSyntaxError(Compile Error). - Hệ thống chỉ so kết quả in ra; yêu cầu "hàm có tham số mặc định, có ít nhất ba
assert" là phần giảng viên kiểm khi chấm tay. - So sánh chuỗi bằng
==, không dùngis(ky_tu is "c"):isso hai đối tượng có phải là một, không so nội dung. Với chuỗi một ký tự, CPython tình cờ dùng chung đối tượng nên kết quả vẫn đúng và máy chấm không phát hiện được; giảng viên kiểm khi chấm tay (Python 3.8+ còn in cảnh báoSyntaxWarning).
Nguồn trong sách: Bài C5-07, mục 5.10, giáo trình "Lập trình cơ sở với Python" — TS. Nguyễn Quốc Long · Mức: (**)