Đường gấp khúc: đọc lại giới hạn trục và mức tăng
Một chuỗi giá trị được vẽ bằng ax.plot: mỗi cặp (x, y) là một điểm và các điểm liền
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-basics, python-lists.
Nội dung đề bài
Mô tả bài toán
Một chuỗi giá trị được vẽ bằng ax.plot: mỗi cặp (x, y) là một điểm và các điểm liền kề được nối với nhau. Khi kiểm thử tự động phần vẽ hình, ta phải đọc ngược lại từ hình vẽ: trục hoành đang trải từ đâu tới đâu, có bao nhiêu điểm, và bước nhảy lớn nhất giữa hai điểm liền kề là bao nhiêu. Bài này luyện đúng những lần đọc đó.
Yêu cầu
Viết hàm line_chart_summary(x, y):
- Ném ValueError nếu x và y khác độ dài, hoặc nếu có ít hơn hai điểm.
- Tạo hình vẽ bằng plt.subplots(), gọi ax.plot(x, y) kèm marker, đặt tiêu đề và
nhãn cho hai trục.
- Đặt giới hạn trục hoành đúng bằng [min(x), max(x)] rồi đọc lại bằng ax.get_xlim().
- Trả về dict {"points": số điểm, "x_min": ..., "x_max": ..., "max_rise": mức tăng
lớn nhất, "total_change": y cuối trừ y đầu}.
Quy ước nộp bài
Nộp hàm line_chart_summary trong solution.py. Hệ thống gọi hàm trực tiếp theo tên đối số, chạy ở chế độ hình vẽ không cửa sổ, so giá trị trả về với sai số 1e-6; không đọc dữ liệu từ stdin và không in ra stdout.
Input
- x: danh sách từ 2 đến 20 số, sắp xếp tăng dần.
- y: danh sách cùng độ dài với x, giá trị bất kỳ.
Output
Dict có đúng năm khoá points, x_min, x_max, max_rise, total_change; mọi giá trị là số. max_rise là hiệu lớn nhất giữa hai điểm liền kề theo y.
Ràng buộc
- Hai danh sách khác độ dài, hoặc ít hơn hai điểm, đều phải ném ValueError.
- max_rise là hiệu của hai điểm liền kề, không phải khoảng biến thiên
max(y) - min(y).
- Giới hạn trục phải lấy từ ax.get_xlim() sau khi đã đặt, không tự cộng thêm lề.
- Không trả về Line2D, Axes hay mảng NumPy; chỉ trả về dict số.
Ví dụ 1
Input
line_chart_summary(x=[1, 2, 3], y=[1, 3, 6])
Output
{"points": 3, "x_min": 1.0, "x_max": 3.0, "max_rise": 3.0, "total_change": 5.0}
Ví dụ 2
Input
line_chart_summary(x=[0, 1, 2, 3], y=[5, 1, 3, 4])
Output
{"points": 4, "x_min": 0.0, "x_max": 3.0, "max_rise": 2.0, "total_change": -1.0}
Giải thích
Với x = [1, 2, 3] và y = [1, 3, 6] hình vẽ có 3 điểm, trục hoành trải từ 1 đến 3, hai mức tăng liền kề là 3 - 1 = 2 và 6 - 3 = 3 nên max_rise = 3, còn total_change = 6 - 1 = 5. Kết quả là {"points": 3, "x_min": 1.0, "x_max": 3.0, "max_rise": 3.0, "total_change": 5.0}.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
