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:
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 TRUNGhoặcma 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òngRONG.
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ử").
SUAgiữ nguyên vị trí;THEMluôn thêm vào cuối, kể cả mã vừa bị xóa trước đó.- Lệnh
XOAchỉ có 2 phần,THEM/SUAcó 3 phần: đọc bằnglenh = input().split()rồi xétlenh[0](mục 8.4.2). - Điểm in
:.1f: nhập7thì in7.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...