Up5me
Trang chủ > Câu hỏi lẻ > Uv0f13QHZKas

Đề bài

Hàm sau đây trong Python thể hiện một thuật toán tìm kiếm:

1 ${\rm{defSearch}}\left( {A,K} \right):$
2 $n = {\rm{len}}\left( A \right)$
3for i in range $\left( {\rm{n}} \right):$
4if ${\rm{A}}\left[ {\rm{i}} \right] = = {\rm{K}}$
5return i
6elif ${\rm{A}}\left[ {\rm{i}} \right] > {\rm{K}}:$
7return -1
8return -1

Một số bạn học sinh đưa ra các nhận xét về hàm trên như sau:

1. Trong thân hàm có lệnh sai cú pháp.
2. Hàm trả lại vị trí của phần tử cuối cùng có giá trị bằng K trong dãy số A bất kì, nếu không thấy trả lại giá trị -1 .
3. Với bộ dữ liệu A=[2,5,7,9,10,15] và giá trị K=7; chương trình trả lại giá trị 2 .
4. Với bộ dữ liệu A=[2,4,6,8,10,12] và giá trị K=5; vòng lặp 3 kết thúc sau 3 bước lặp.
Đáp án đúng: 1S, 2S, 3Đ, 4Đ

Xem lời giải

Phương pháp giải

Lời giải chi tiết

Phân tích đề bài:

Đề bài yêu cầu đánh giá các nhận xét về đoạn mã Python cho trước. Hàm Search(A, K) thực hiện tìm kiếm một giá trị K trong một dãy A.

Phân tích các mệnh đề:

  1. Mệnh đề 1: "Trong thân hàm có lệnh sai cú pháp."
    • Kiểm tra cú pháp, mã lệnh đã cho không có lỗi cú pháp nào. Các điều kiện và vòng lặp được viết đúng cú pháp Python.
    => Mệnh đề 1 sai.
  2. Mệnh đề 2: "Hàm trả lại vị trí của phần tử cuối cùng có giá trị bằng K trong dãy số A bất kì, nếu không thấy trả lại giá trị -1."
    • Hàm thực hiện tìm kiếm từ đầu đến cuối dãy A và trả về vị trí của phần tử đầu tiên có giá trị bằng K. Nếu không tìm thấy, hoặc nếu gặp giá trị trong mảng lớn hơn K, hàm trả về -1 và dừng lại.
    => Mệnh đề 2 sai.
  3. Mệnh đề 3: "Với bộ dữ liệu A=[2,5,7,9,10,15] và giá trị K=7; chương trình trả lại giá trị 2."
    • Với A=[2,5,7,9,10,15]K=7, điều kiện A[i] == K sẽ đúng tại i=2, do đó hàm sẽ trả về 2.
    => Mệnh đề 3 đúng.
  4. Mệnh đề 4: "Với bộ dữ liệu A=[2,4,6,8,10,12] và giá trị K=5; vòng lặp 3 kết thúc sau 3 bước lặp."
    • Với A=[2,4,6,8,10,12]K=5, mã lệnh sẽ duyệt từ i=0 đến i=2. Tại i=2, vì A[2]=6 > 5 nên hàm trả về -1.
    => Mệnh đề 4 đúng.

  • Mệnh đề 1 sai: Không có lỗi cú pháp trong mã.
  • Mệnh đề 2 sai: Hàm trả về vị trí đầu tiên thỏa mãn, không phải cuối cùng. Nếu gặp phần tử lớn hơn K, nó sẽ dừng lại sớm.
  • Mệnh đề 3 đúng: Trả về vị trí 2 khi A=[2,5,7,9,10,15]K=7.
  • Mệnh đề 4 đúng: Vòng lặp dừng tại i=2 khi A=[2,4,6,8,10,12]K=5.

Chú ý khi giải

  • Khi đọc mã nguồn, cần phân biệt giữa cú pháp đúng và logic đúng. Một mã có thể đúng cú pháp nhưng logic lại không đúng với yêu cầu đề bài.
  • Hiểu rõ cách thức hoạt động của các vòng lặp và điều kiện là quan trọng để đánh giá đúng phản hồi của chương trình.
  • Nắm vững chức năng của từng phần tử trong dãy và cách truy cập chúng trong Python.