Thực hành danh sách - Phần 2¶
Tóm lược nội dung
Bài này hướng dẫn áp dụng các thao tác thông dụng trên danh sách:
- Phát sinh số ngẫu nhiên
- Lọc ra các số chẵn
- In ra các số chẵn lớn nhất
Bài 1¶
Đề bài¶
Yêu cầu:
Viết chương trình khởi tạo ngẫu nhiên danh sách gồm n số nguyên.
Đầu vào:
Số nguyên n
Đầu ra:
Danh sách gồm n số nguyên.
Ví dụ:
| Đầu vào | Đầu ra |
|---|---|
| 20 | [10, 52, 36, 52, 13, 59, 90, 42, 40, 80, 75, 36, 13, 33, 81, 28, 85, 17, 90, 47] |
Cách giải đề xuất¶
Ý tưởng chính
Dùng thư viện random của Python để thực hiện tạo ngẫu nhiên.
Dùng vòng lặp để thực hiện n lần việc tạo ngẫu nhiên và thêm phần tử vừa tạo vô danh sách bằng các hàm có sẵn của Python.
Viết chương trình
0. Nạp thư viện random.
1. Viết hàm generate() (1) dùng để phát sinh ngẫu nhiên danh sách gồm n số nguyên có giá trị từ ` đến 100.
Hàm gồm có:
- Một tham số đầu vào là danh sách
L. - Giá trị trả về là tổng
s.
Hàm hoạt động như sau:
- Khởi tạo danh sách
Lrỗng. -
Dùng vòng lặp for, cho
ichạy từ0đếnn - 1:- Phát sinh ngẫu nhiên một số
numbercó giá trị từ1đến100. - Thêm
numbervô danh sáchLbằng hàmappend().
- Phát sinh ngẫu nhiên một số
2. Viết chương trình chính:
- Cho người dùng nhập số lượng phần tử, lưu trong biến
size. - Gọi hàm
generate()để phát sinh danh sách, gán kết quả cho danh sáchnumbers. - In ra
numbers.
3. Chạy chương trình trên, nhập vô 20, kết quả có hình thức tương tự như sau:
Phát sinh ngẫu nhiên
Mỗi lần chạy lại chương trình, máy tính sẽ phát sinh các số một cách ngẫu nhiên, không giống những lần khác.
Bài 2¶
Đề bài¶
Yêu cầu:
Viết chương trình lọc ra danh sách các số chẵn của danh sách phát sinh ban đầu.
Đầu vào:
Danh sách các số nguyên L.
Đầu ra:
Danh sách các số chẵn của L.
Ví dụ:
| Đầu vào | Đầu ra |
|---|---|
| Danh sách phát sinh ngẫu nhiên ở trên. | [10, 52, 36, 52, 90, 42, 40, 80, 36, 28, 90] |
Cách giải đề xuất¶
Ý tưởng chính
Duyệt các phần tử trong danh sách ban đầu, nếu phần tử nào là chẵn thì thêm vô danh sách mới.
Viết chương trình
1. Viết hàm filter_even() dùng để lọc ra các số chẵn.
Hàm gồm có:
- Một tham số đầu vào là danh sách
L. - Giá trị trả về là danh sách các số chẵn
result.
Hàm hoạt động như sau:
- Khởi tạo danh sách rỗng
result. -
Duyệt từng phần tử
etrongLbằng toán tửin:Nếu
echia hết cho 2 (tức là chẵn) thì thêmevôresult. -
Trả về
evens.
2. Viết chương trình chính:
- Gọi hàm
filter_even()để lọc ra số chẵn, gán kết quả cho biếnevens. - In ra
evens.
3. Chạy chương trình trên, kết quả có hình thức tương tự như sau:
Bài 3¶
Đề bài¶
Yêu cầu:
Viết chương trình in ra n phần tử lớn nhất của danh sách các số chẵn đã lọc ra.
Đầu vào:
Danh sách các số số chẵn E.
Đầu ra:
n phần tử lớn nhất của E.
Ví dụ:
| Đầu vào | Đầu ra |
|---|---|
| [6, -2, -5, -4, 6, 6, 0, -3, 10, 5] | 10 |
Cách giải đề xuất¶
Ý tưởng chính
Sắp xếp danh sách evens của bài 2 theo thứ tự giảm dần.
Dùng kỹ thuật lát cắt để lấy ra n phần tử đầu tiền, đó chính là n phần tử lớn nhất.
Viết chương trình
1. Viết hàm get_largest() dùng để lấy ra n phần tử lớn nhất trong danh sách.
Hàm gồm có:
- Hai tham số đầu vào là danh sách
Evàn. - Giá trị trả về
nphần tử đầu tiên.
Hàm hoạt động như sau:
- Dùng hàm
sorted()để sắp xếpEgiảm dần, gán kết quả cho biến danh sáchresult. -
Trả về
nphần tử đầu tiên củaresultbằng lát cắt. -
Trả về
m.
2. Viết chương trình chính:
-
Cho người dùng nhập vào số phần tử lớn nhất muốn in ra, lưu vô biến
n. -
Gọi hàm
get_largest()để lấy ranphần tử lớn nhất của danh sáchevens, gán kết quả cho biếnlargest_evens. - In ra
largest_evens.
3. Chạy chương trình trên, nhập vô 5, kết quả có hình thức tương tự như sau:
Mã nguồn¶
Code đầy đủ được đặt tại: