Bài 30: Thiết lập thư viện cho chương trình

Chủ đề 6. Kĩ thuật lập trình – Bài 30: Thiết lập thư viện cho chương trình – sách bài tập trang 84 lớp 11 Khoa học máy tính – Kết Nối Tri Thức, mời các em tham khảo cùng Bumbii.

Chủ đề 6. Kĩ thuật lập trình – Bài 30: Thiết lập thư viện cho chương trình

Câu 30.1

Hàm lấy căn bậc hai sqrt() có trong thư viện nào của Python?

Trả lời:

Trong Python, hàm lấy căn bậc hai sqrt() có trong thư viện math.

Câu 30.2

Hàm perf_counter() được lấy từ thư viện nào của Python?

Trả lời:

Trong python, hàm perf_counter() được lấy từ viện time.

Câu 30.3

Hàm random() từ thư viện random có chức năng sinh một số thực ngẫu nhiên x nằm trong khoảng [0, 1) hay 0 ≤ x < 1. Hãy viết hàm sinh_day(n) trả lại một dãy (list) các số thực gồm n số ngẫu nhiên trong khoảng [0, 1).

Trả lời:

def sinh_day(n):
    from random import random
    A = []
    for i in range(n):
        A.append(random())
    return A

Câu 30.4

Hàm randint(a, b) từ thư viện random có chức năng sinh một số nguyên ngẫu nhiên trong đoạn [a, b]. Hãy viết hàm sinh_day_nguyen(n, a, b) sinh một dãy (list) các số nguyên ngẫu nhiên trong đoạn [a, b].

Trả lời:

Chúng ta viết chương trình theo cách khác của Câu 30.3:

def sinh_day_nguyen(n):
    from random import randint
    return [randint(a, b) for i in range(n)]

Câu 30.5

Giả sử L là đối tượng danh sách liên kết có cấu trúc giống như đã trình bày trong sách giáo khoa. Viết hàm length(L) tính số phần tử của L.

Trả lời:

def lenght(L):
    x = L.head
    stt = 0
    while x != None:
        x = x.next
        stt = stt + 1
    return stt

Câu 30.6

Giả sử L là đối tượng danh sách liên kết có cấu trúc giống như đã trình bày trong sách giáo khoa. Cho trước khoá k. Viết hàm find(L, k) có tính chất sau, tương tự hàm Search(L, k).

– Nếu L có chức node với khoá k thì hàm sẽ trả về số thứ tự của node này – trong L. Số thứ tự của node được tính từ đầu của danh sách.

– Nếu L không chứa node có khoả k thì hàm trả lại –1.

Trả lời:

def find(L, k):
    x = L.head
    stt = 1
    while x != None and x.key != k:
        x = x.next
        stt = stt + 1
    if x != None:
        return stt
    else:
        return - 1

Câu 30.7

Giả sử L là đối tượng danh sách liên kết có cấu trúc giống như đã trình bày trong sách giáo khoa. Cho trước số thứ tự k ≤ length(L). Hãy viết hàm key_find(L, k) trả về khoá của danh sách liên kết tại vị trí thứ k của danh sách. Nếu k < 1 hoặc k > length(L) thì trả về None.

Trả lời:

def key_find(L, k):
    if k < 1:
        return None
    stt = 1
    x = L.head
    while x != None and stt < k:
        stt = stt + 1
        x = x.next
    if x != None:
        return x.key
    else:
        return None

Câu 30.8

Thiết lập một danh sách liên kết với các phần tử có thông tin là họ tên các bạn lớp em. Danh sách tên học sinh được cho trong tệp văn bản HS.inp, mỗi dòng là một tên. Viết chương trình nhập dữ liệu và tạo danh sách liên kết, sau đó in tên các bạn đã có trong danh sách liên kết.

Trả lời:

Ta thiết lập riêng phần thư viện trong tệp LinkedList và tệp chương trình chính:

class Node:
    def __init__(self, name):
        self.name = name
        self.next = None

class LL:
    def __init__(self):
        self.head = None

def insert(L, ten):
    node = Node(ten)
    node.next = L.head
    L.head = node

def show(L):
    x = L.head
    while x != None:
        print(x.name)
        x = x.next
    print()

def NhapDL(fi):
    f = open(fi, encoding="UTF-8")
    A = []
    for name in f:
        A.append(name.strip())
    f.close()
    return A

Chương trình chính:

from LinkedList import *
fi = "HS.inp"
A = NhapDL(fi)
L = LL()
for ten in A:
    insert(L, ten)
show(L)

Câu 30.9

Mở rộng Câu 30.8, trong đó thông tin cần lưu là tên học sinh và điểm trung binh của học sinh đó. Tệp dữ liệu đầu vào sẽ có dạng mỗi dòng ghi họ tên của học sinh và điểm trung bình của học sinh đó. Khi in kết quả ra màn hình cần ghi rõ dưới dạng như sau:

Tên: Phạm Quỳnh Lan Điểm TB: 9,4

Trả lời:

Ta thiết lập riêng phần thư viện trong tệp LinkedList và tệp chương trình chính:

class Node:
    def __init__(self, name, diem):
        self.name = name
        self.diem = diem
        self.next = None
        
class LL:
    def __init__(self):
        self.head = None
        
def insert(L, ten, diem):
    node = Node(ten, diem)
    node.next = L.head
    L.head = node
    
def show(L):
    x = L.head
    while x != None:
        print("Tên: ", x.name, "Điểm TB: ", x.diem)
        x = x.next
    print()
    
def NhapDL(fi):
    f = open(fi, encoding = "UTF-8")
    A = []
    for line in f:
        dLine = line.split()
        dten = dLine[ : len(dLine) - 1]
        ten = " ".join(dten)
        diem = float(dLine[len(dLine) - 1])
        A.append((ten, diem))
    f.close()
    return A

Chương trình chính như sau:

from LinkedList improt *
fi = "DSHS.inp"
A = NhapDL(fi)
L = LL()
for ten, diem in A:
    insert(L, ten, diem)
show(L)

Câu 30.10*

Giả sử L là đối tượng danh sách liên kết có cấu trúc giống như đã trình bày trong sách giáo khoa. Viết hàm insert_last(L, k) có chức năng bổ sung một node với khoá k vào cuối của danh sách liên kết L.

Trả lời:

def insert_last(L, k):
    node = Node(k)
    if L.head == None:
        L.head = node
    else:
        x = L.head
        while x.next != None:
            x = x.next
        x.next = node

Xem các bài giải khác: Giải Sách Bài Tập Lớp 11 Khoa Học Máy Tính Kết Nối Tri Thức Với Cuộc Sống

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x