[ATBS2nd]Chương 1 - Python cơ bản - Phần 17

Chào các bạn,
Chúng ta lại tiếp tục đến phần cuối của danh sách. Đấy là những câu hỏi và bài tập.
Câu hỏi

  1. [] là cái gì?

  2. Bạn gán giá trị ‘hello’ cho list spam ở giá trị thứ 3 của list giả sử spam bao gồm [2, 4, 6, 8, 10].

Theo 3 câu hỏi phía sau spam là một list bao gồm [‘a’, ‘b’, ‘c’, ‘d’].

  1. spam[int(int(‘3’ * 2) // 11)] có giá trị như thế nào?

  2. spam[-1] có giá trị nào?

  3. spam[:2] có giá trị nào?

Cho 3 câu hỏi phía sau biến danh sách bacon bao gồm [3.14, ‘cat’, 11, ‘cat’, True].

  1. bacon.index(‘cat’) tính giá trị nào?

  2. bacon.append(99) sẽ làm danh sách bacon trông như thế nào?

  3. bacon.remove(‘cat’) sẽ làm danh sách bacon trông như thế nào?

  4. Những toán tử nối danh sách và thay thế phần tử trong danh sách là những toán tử nào?

  5. Khác nhau giữa các phương thức append() và insert() là như thế nào?

  6. Hai cách loại bỏ phần tử trong danh sách là những cách nào?

  7. Tên một vài cách mà giá trị danh sách như giá trị trong chuỗi?

  8. Điều gì là khác nhau giữa list và tuple?

  9. Bạn khai báo tuple như thế nào nếu chỉ chứa giá trị nguyên 42?

  10. Chúng ta có thể lấy giá trị list trong tuple như thế nào và ngược lại?

  11. Nhiều biến danh sách không bao gồm giá trị danh sách trực tiếp. Vậy chúng bao gồm cái gì?

  12. Điều gì là khác nhau giữa copy.copy() và copy.deepcopy().

Bài tập
Comma Code
Giả sử bạn có một danh sách như sau
`

spam = [‘apples’, ‘bananas’, ‘tofu’, ‘cats’]

`
Viết hàm lấy giá trị danh sách làm đối số và trả về một chuỗi với tất cả các mục được phân tách bằng dấu phẩy và dấu cách, với and chèn trước mục cuối cùng Ví dụ: chuyển danh sách spam trước đó cho hàm sẽ trả về ‘apples, bananas, tofu, and cats’’. Nhưng chức năng của bạn sẽ có thể làm việc với bất kỳ giá trị danh sách nào được truyền cho nó. Hãy chắc chắn kiểm tra trường hợp danh sách trống [] được truyền cho hàm của bạn.
Coin Flip Streaks
Đối với bài tập này, chúng tôi sẽ thử làm một thí nghiệm. Nếu bạn lật một đồng xu 100 lần và viết ra một tên H cho mỗi người đứng đầu và T cho mỗi đuôi, bạn sẽ tạo ra một danh sách giống như T T T T T H H H T T. Nếu bạn yêu cầu một người tạo ra 100 lần lật đồng xu ngẫu nhiên, bạn có thể sẽ kết thúc với kết quả đầu đuôi xen kẽ như từ “H T H T H H T H T T. Một người gần như sẽ không bao giờ viết ra một vệt sáu đầu hoặc sáu đuôi liên tiếp, mặc dù nó rất có khả năng xảy ra trong các lần lật đồng xu thực sự ngẫu nhiên. Con người được dự đoán là xấu ở ngẫu nhiên.
Viết chương trình để tìm hiểu tần suất một vệt sáu đầu hoặc một vệt gồm sáu đuôi xuất hiện trong một danh sách các đầu và đuôi được tạo ngẫu nhiên. Chương trình của bạn chia thử nghiệm thành hai phần: phần đầu tiên tạo danh sách các giá trị ‘đầu’ và ‘đuôi’ được chọn ngẫu nhiên và phần thứ hai sẽ kiểm tra xem có một vệt nào trong đó không. Đặt tất cả các mã này vào một vòng lặp lặp lại thử nghiệm 10.000 lần để chúng tôi có thể tìm ra tỷ lệ phần trăm của các lần lật đồng xu chứa một chuỗi sáu đầu hoặc đuôi liên tiếp. Như một gợi ý, hàm gọi random.randint (0, 1) sẽ trả về giá trị 0 50% và 1 giá trị 50% còn lại. Bạn có thể bắt đầu với mẫu sau:

import random
numberOfStreaks = 0
for experimentNumber in range(10000):
	# Code that creates a list of 100 'heads' or 'tails' values.
	# Code that checks if there is a streak of 6 heads or tails in a row.
print('Chance of streak: %s%%' % (numberOfStreaks / 100))

Tất nhiên, đây chỉ là ước tính, nhưng 10.000 là cỡ mẫu khá. Một số kiến thức về toán học có thể cung cấp cho bạn câu trả lời chính xác và giúp bạn tránh khỏi những rắc rối khi viết chương trình, nhưng các lập trình viên nổi tiếng là kém về toán học :))))))).
Character Picture Grid
Chúng ta có một list, mỗi giá trị lại cũng là một list chứa một kí tự như mẫu sau

grid = [['.', '.', '.', '.', '.', '.'],
	['.', 'O', 'O', '.', '.', '.'],
	['O', 'O', 'O', 'O', '.', '.'],
	['O', 'O', 'O', 'O', 'O', '.'],
	['.', 'O', 'O', 'O', 'O', 'O'],
	['O', 'O', 'O', 'O', 'O', '.'],
	['O', 'O', 'O', 'O', '.', '.'],
	['.', 'O', 'O', '.', '.', '.'],
	['.', '.', '.', '.', '.', '.']]

Hãy nghĩ về lưới [x] [y] là ký tự ở tọa độ x và y của một bức tranh hình chữ nhật được vẽ bằng các ký tự văn bản. Nguồn gốc (0, 0) nằm ở góc trên, tăng tọa độ x đi bên phải và tăng tọa độ y đi xuống.
Sao chép giá trị lưới trước đó và viết mã sử dụng nó để in bức hình.

..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....

Gợi ý: Bạn sẽ cần sử dụng một vòng lặp trong một vòng lặp để in lưới [0] [0], sau đó lưới [1] [0], sau đó lưới [2] [0], v.v., lên lưới [ 8] [0]. Điều này sẽ hoàn thành hàng đầu tiên, vì vậy sau đó in một dòng mới. Sau đó, chương trình của bạn sẽ in lưới [0] [1], sau đó lưới [1] [1], sau đó lưới [2] [1], v.v. Điều cuối cùng mà chương trình của bạn sẽ in là lưới [8] [5].
Ngoài ra, hãy nhớ chuyển đối số từ khóa kết thúc để print() nếu bạn không muốn một dòng mới được in tự động sau mỗi cuộc gọi print().
Người dịch: Hungdh

3 Likes