python-271Đọc toàn bộ đề miễn phí

Đườ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

PythonCơ bản13 phút

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ủ đề

matplotlibline-chartaxis-limitsentry-ramp

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}.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.

Nhóm Zalo