Câu hỏi:

26/06/2024 16

Cải tiến chương trình trong Nhiệm vụ 2 để có thể kiểm tra biểu thức có chứa ba loại dấu đóng mở ngoặc "()", "[]", "{}"

Siêu phẩm 30 đề thi thử THPT quốc gia 2024 do thầy cô VietJack biên soạn, chỉ từ 100k trên Shopee Mall.

Mua ngay

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

Để cải tiến chương trình kiểm tra biểu thức có chứa ba loại dấu đóng mở ngoặc "()", "[]", và "{}", chúng ta cần thêm hỗ trợ cho cặp ngoặc nhọn "{}". Điều này chỉ đòi hỏi một vài thay đổi nhỏ trong mã nguồn gốc để bao gồm các dấu ngoặc mới này.

Gợi ý phiên bản đã được cải tiến của chương trình kiểm tra biểu thức với ba loại dấu đóng mở ngoặc:

class Stack:

    def __init__(self):

        self.items = []

    def is_empty(self):

        return self.items == []

    def push(self, item):

        self.items.append(item)

    def pop(self):

        if not self.is_empty():

            return self.items.pop()

        else:

            return None

    def peek(self):

        if not self.is_empty():

            return self.items[-1]

        else:

            return None

def kiemtrabt(bieuthuc):

    hople = True

    ngoacmo = Stack()

    for i in range(len(bieuthuc)):

        if bieuthuc[i] in "([{":

            ngoacmo.push(bieuthuc[i])

        elif bieuthuc[i] in ")]}":

            if ngoacmo.is_empty():

                hople = False

                break

            else:

                tmp = ngoacmo.pop()

                if (bieuthuc[i] == ")" and tmp != "(") or \

                   (bieuthuc[i] == "]" and tmp != "[") or \

                   (bieuthuc[i] == "}" and tmp != "{"):

                    hople = False

                    break

    if not ngoacmo.is_empty():

        hople = False

    return hople

bieuthuc = input("Hãy nhập vào một biểu thức: \n")

hople = kiemtrabt(bieuthuc)

if hople:

    print("Biểu thức hợp lệ")

else:

    print("Biểu thức không hợp lệ")

Trong đoạn mã trên:

- Chúng ta định nghĩa một lớp Stack để mô phỏng ngăn xếp.

- Hàm kiemtrabt kiểm tra tính hợp lệ của biểu thức với các cặp ngoặc "()", "[]", và "{}".

- Chúng ta duyệt qua từng ký tự trong biểu thức và xử lý các dấu ngoặc mở bằng cách đẩy chúng vào ngăn xếp, và xử lý các dấu ngoặc đóng bằng cách kiểm tra xem chúng có khớp với dấu ngoặc mở tương ứng ở đỉnh ngăn xếp hay không.


 

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Câu 1:

Hãy sửa chương trình trong Nhiệm vụ 1 để thêm chức năng đi đến trang web kế tiếp (go forward). Sau khi người dùng chọn chức năng trở về trang web trước đó thì có thể sử dụng chức năng go forward để quay lại trang web vừa duyệt. 

Xem đáp án » 26/06/2024 22

Câu 2:

Sửa chương trình trong Nhiệm vụ 2 để in ra màn hình tổng số cặp đóng mở ngoặc của từng loại xuất hiện trong biểu thức.

Xem đáp án » 26/06/2024 15

Câu 3:

Hãy viết chương trình mô phỏng quá trình xếp và lấy sách ra khỏi một ngăn tủ. Cho trước một số quyển sách, lần lượt xếp các quyển sách này vào ngăn tủ. Khi lấy ra, sách sẽ được lấy ra theo thứ tự quyển nào đưa vào sau sẽ được lấy ra trước. Để lấy được một quyền sách, chúng ta phải lấy các quyền sách ở phía ngoài ra trước. Ví dụ các quyển sách được xếp vào tủ theo thứ tự như sau: [English, Physic, Maths, Chemistry, History, Biology] 

Nếu muốn lấy quyển sách Maths ra khỏi ngăn sách thì chúng ta cần lấy các quyển Biology, History, Chemistry ra trước. 

Cho trước tệp chứa tên các quyển sách. Hãy tạo một ngăn xếp và đưa các quyển sách trong tệp vào ngăn xếp. Sau đó cho người dùng nhập vào tên quyển sách muốn lấy ra và in ra màn hình số quyển sách cần lấy ra trước khi lấy được quyển sách muốn lấy. 

Xem đáp án » 26/06/2024 15

Câu 4:

Trong bài trước, các em đã học cách thiết lập kiểu dữ liệu ngăn xếp. Kiểu dữ liệu ngăn xếp được sử dụng khá phổ biến trong các ứng dụng thực tế. Theo em, có thể sử dụng kiểu dữ liệu này để mô phỏng chức năng quay lại trang web đã duyệt trong các trình duyệt thông dụng như Google Chrome hay Bing được không?

Xem đáp án » 26/06/2024 13

Bình luận


Bình luận