btvn.vn
Tìm kiếm Đăng nhập

Đọc tệp số lượng và sắp tăng bằng cách chèn

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Tệp đầu vào và kết quả cần thấy

Tạo thư mục thực hành riêng; trong đó lưu tệp `so_luong_kho.txt` với bốn dòng: ```text 7 3 5 1 ``` Mỗi dòng là số lượng giả của một mặt hàng, viết bằng **số nguyên không âm**. Lưu chương trình dưới tên `kho_b22.py` và chạy trong cùng thư mục. Đầu ra phải là `[1, 3, 5, 7]`. Tệp này chỉ có số lượng, chưa có tên mặt hàng; kết quả cho biết thứ tự các **số lượng**, chưa thể nói số nào thuộc tên hàng nào.

Đọc → sắp chèn → in

```python def sap_chen_tang(a): for i in range(1, len(a)): gia_tri = a[i] j = i - 1 while j >= 0 and a[j] > gia_tri: a[j + 1] = a[j] j -= 1 a[j + 1] = gia_tri so_luong = [] with open("so_luong_kho.txt", "r", encoding="utf-8") as f: for dong in f: gia_tri = int(dong) if gia_tri < 0: raise ValueError("Số lượng phải không âm") so_luong.append(gia_tri) sap_chen_tang(so_luong) print(so_luong) ``` Kết quả là `[1, 3, 5, 7]`. Chương trình đọc từng dòng chữ, chuyển sang `int` rồi mới so sánh theo giá trị số; hàm sắp sửa trực tiếp danh sách `so_luong`. Đổi một dòng thành chữ `ba` sẽ báo lỗi chuyển số; dòng âm bị từ chối theo quy ước đầu vào. Nếu báo không thấy tệp, kiểm tên tệp và thư mục chạy. Tệp rỗng cho danh sách rỗng `[]`, không gây lỗi chỉ số.

Bài luyện

Tệp gồm các dòng 7, 3, 5, 1. Sau sắp chèn tăng, danh sách là gì?
Chọn một đáp án

Bài luyện

Vì sao phải dùng `int(dong)` trước khi sắp số lượng?
Chọn một đáp án

Bài luyện

Chỉ với tệp mỗi dòng là số lượng, chương trình có biết tên mặt hàng nào ứng với số 7 không?
Chọn một đáp án

Đang học