C8-07 · Thêm, sửa, xóa theo mã

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Sách "Lập trình cơ sở với Python"
Dạng bài
Ngôn ngữ cho phép
Python

Đề

Danh sách điểm của lớp được lưu thành danh sách các từ điển (list of dict), mỗi sinh viên là một dict có hai khóa "ma" và "diem". Đọc danh sách ban đầu rồi thực hiện lần lượt m lệnh:

Lệnh Việc làm Khi không làm được
THEM ma diem thêm sinh viên mới vào cuối danh sách mã đã có: in ma TRUNG (giữ nguyên điểm cũ)
SUA ma diem đổi điểm của sinh viên có mã đó (giữ nguyên vị trí) mã không có: in ma KHONG CO
XOA ma xóa sinh viên có mã đó khỏi danh sách mã không có: in ma KHONG CO

Sau khi làm hết các lệnh, in danh sách còn lại theo thứ tự trong list.

Yêu cầu cách viết (giảng viên kiểm khi chấm tay; máy chấm chỉ so kết quả): viết ba hàm them(ds_sv, ma, diem), sua(ds_sv, ma, diem), xoa(ds_sv, ma) làm việc trên list of dict, trả về True nếu làm được, False nếu không; ba hàm này không nhập, không in.

Dữ liệu vào

  • Dòng đầu chứa n; n dòng tiếp theo mỗi dòng ma diem (danh sách ban đầu, theo thứ tự trong list).
  • Dòng tiếp theo chứa m; m dòng tiếp theo mỗi dòng một lệnh như bảng trên.

Kết quả

  • Trong khi làm các lệnh: mỗi lệnh không làm được in một dòng ma TRUNG hoặc ma KHONG CO (lệnh làm được thì không in gì).
  • Sau cùng: mỗi sinh viên còn lại một dòng ma diem, điểm in 1 chữ số thập phân (:.1f); danh sách rỗng thì in một dòng RONG.

Ràng buộc

  • ~0 \le n \le 1000~, ~0 \le m \le 1000~.
  • Mã gồm đúng 8 chữ số (có thể bắt đầu bằng 0, ví dụ 00000000); các mã trong danh sách ban đầu đôi một khác nhau.
  • Điểm là số trong đoạn ~[0;\ 10]~, có tối đa một chữ số thập phân, có thể viết dạng số nguyên (7, 10).

Ví dụ

Dữ liệu vào:

1
23010001 7.8
4
THEM 23010002 6.5
THEM 23010001 9.0
SUA 23010009 7.0
XOA 23010001

Kết quả:

23010001 TRUNG
23010009 KHONG CO
23010002 6.5

Giải thích ví dụ

Lệnh Danh sách sau lệnh In
(ban đầu) 23010001 7.8
THEM 23010002 6.5 23010001 7.8, 23010002 6.5
THEM 23010001 9.0 không đổi (mã đã có, không ghi đè điểm 7.8) 23010001 TRUNG
SUA 23010009 7.0 không đổi 23010009 KHONG CO
XOA 23010001 23010002 6.5

Cuối cùng còn một sinh viên: 23010002 6.5.

Lưu ý

  • Mỗi sinh viên phải là một dict riêng, tạo mới trong vòng lặp đọc (bảng 8.7, "Một dict cho mọi phần tử").
  • SUA giữ nguyên vị trí; THEM luôn thêm vào cuối, kể cả mã vừa bị xóa trước đó.
  • Lệnh XOA chỉ có 2 phần, THEM/SUA có 3 phần: đọc bằng lenh = input().split() rồi xét lenh[0] (mục 8.4.2).
  • Điểm in :.1f: nhập 7 thì in 7.0.

Nguồn: Bài C8-07, mục 8.9, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long.

Nguồn trong sách: bài tập C8-07 (mục 8.9) · Mức: (***)


Đang tải...