X

Chuyên đề Tin 12 Cánh diều

Xây dựng ứng dụng kiểm tra lỗi cú pháp trang 24 Chuyên đề Tin học 12


Xây dựng ứng dụng kiểm tra lỗi cú pháp

Giải Chuyên đề Tin 12 Bài 4: Dự án học tập: Xây dựng chương trình sử dụng kiểu dữ liệu hàng đợi và ngăn xếp - Cánh diều

Dự án 1 trang 24 Chuyên đề Tin học 12: Xây dựng ứng dụng kiểm tra lỗi cú pháp

a) Em hãy viết chương trình nhập vào một xâu kí tự chỉ gồm các dấu mở ngoặc và đóng ngoặc sau [, ], {, }, (, ). Sau đó, kiểm tra xem xâu kí tự đó có cân bằng hay không. In ra màn hình thông báo “Cân bằng” nếu xâu đó là cân bằng, ngược lại in ra “Không cân bằng”. 

b) Mở rộng chương trình ở câu a): đọc tập có tên test.py chứa chương trình viết bằng ngôn ngữ Python, và kiểm tra xem chương trình có lỗi cú pháp về thứ tự xuất hiện của các cặp ngoặc [, ], {, }, (, ) hay không. In ra màn hình thông báo “Không có lỗi” nếu chương trình không có lỗi về các cặp ngoặc này, ngược lại in ra “Có lỗi cú pháp”.

Lời giải:

a) Em hãy viết chương trình nhập vào một xâu kí tự chỉ gồm các dấu mở ngoặc và đóng ngoặc sau [, ], {, }, (, ). Sau đó, kiểm tra xem xâu kí tự đó có cân bằng hay không. In ra màn hình thông báo “Cân bằng” nếu xâu đó là cân bằng, ngược lại in ra “Không cân bằng”. 

Chương trình như sau:

def is_balanced(s):

    stack = []

    opening = {'(', '{', '['}

    closing = {')': '(', '}': '{', ']': '['}

    for char in s:

        if char in opening:

           stack.append(char)

        elif char in closing:

            if not stack or stack[-1] != closing[char]:

                return "Không cân bằng"

           stack.pop()

    return "Cân bằng" if not stack else “Không cân bằng”

# Test the function

s = "[{()}]()"

print(is_balanced(s)) 

# Output: Cân bằng

b) Mở rộng chương trình ở câu a): đọc tập có tên test.py chứa chương trình viết bằng ngôn ngữ Python, và kiểm tra xem chương trình có lỗi cú pháp về thứ tự xuất hiện của các cặp ngoặc [, ], {, }, (, ) hay không. In ra màn hình thông báo “Không có lỗi” nếu chương trình không có lỗi về các cặp ngoặc này, ngược lại in ra “Có lỗi cú pháp”.

def check_syntax_balance(filename):

    try:

        with open(filename, 'r') as file:

            content = file.read()

    except FileNotFoundError:

        return “Không thể mở file”

    stack = []

    opening = {'(', '{', '['}

    closing = {')': '(', '}': '{', ']': '['}

    for char in content:

        if char in opening:

           stack.append(char)

        elif char in closing:

            if not stack or stack[-1] != closing[char]:

                return "Có lỗi cú pháp"

           stack.pop()

    return "Không có lỗi" if not stack else “Có lỗi cú pháp”

# Test the function with a sample file name

filename = 'test.py'

print(check_syntax_balance(filename)) 

# Output will depend on the content of test.py

Lời giải bài tập Chuyên đề Tin 12 Bài 4: Dự án học tập: Xây dựng chương trình sử dụng kiểu dữ liệu hàng đợi và ngăn xếp hay, chi tiết khác:

Xem thêm lời giải bài tập Chuyên đề học tập Tin học 12 Cánh diều hay, chi tiết khác: