Câu hỏi:

13/07/2024 328

Kí pháp nghịch đảo Ba Lan và phương pháp tính giá trị của biểu thức toán học

Hãy viết chương trình yêu cầu nhập vào một kí pháp nghịch đảo Ba Lan dưới dạng một xâu kí tự chỉ bao gồm: năm toán tử cộng, trừ, nhân, chia, luỹ thừa (+, -,*, /, "), các toán hạng đều chỉ là các số nguyên có một chữ số từ 0 đến 9. Sau đó, tính giá trị của kí pháp này và in kết quả ra màn hình.

Sách mới 2k7: Bộ 20 đề minh họa Toán, Lí, Hóa, Văn, Sử, Địa…. form chuẩn 2025 của Bộ giáo dục (chỉ từ 110k).

20 đề Toán 20 đề Văn Các môn khác

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

Chương trình yêu cầu nhập vào một kí pháp nghịch đảo Ba Lan (Reverse Polish Notation - RPN) chỉ bao gồm các toán tử cộng, trừ, nhân, chia, lũy thừa (+, -, *, /, ^) và các toán hạng là các số nguyên có một chữ số từ 0 đến 9. Chương trình sẽ tính giá trị của biểu thức đó và in kết quả ra màn hình:

Chương trình như sau:

def evaluate_rpn(expression):

    stack = []

    # Define operations

    operators = {

        '+': lambda b, a: a + b,

        '-': lambda b, a: a - b,

        '*': lambda b, a: a * b,

        '/': lambda b, a: a // b if b != 0 else float('inf'),  # Using integer division for single-digit integers

        '^': lambda b, a: a ** b

    }

    # Process each character in the expression

    for char in expression:

        if char.isdigit():

           stack.append(int(char))

        elif char in operators:

            b = stack.pop()

            a = stack.pop()

            result = operators[char](b, a)

           stack.append(result)

        else:

            raise ValueError(f"Invalid character in expression: {char}")

    # The final result should be the only element left in the stack

    if len(stack) != 1:

        raise ValueError("The input RPN expression is invalid.")

    return stack[0]

# Input the RPN expression

expression = input("Nhập biểu thức ký pháp nghịch đảo Ba Lan: ")

# Evaluate the expression

try:

    result = evaluate_rpn(expression)

    print(f"Kết quả: {result}")

except Exception as e:

    print(f"Lỗi: {e}")

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

Câu 1:

Đổi màu một vùng bức tranh

Em hãy viết chương trình yêu cầu nhập vào lần lượt các thông tin sau: 
- Hai giá trị M và N tương ứng với số dòng và số cột của lưới ô vuông. 
- Các giá trị màu ở mỗi ô trong lưới ô vuông kích thước M N theo thứ tự hết dòng này đến dòng khác. 
- Ba giá trị r, c, m lần lượt là toạ độ dòng, toạ độ cột và màu mới của ô muốn đổi màu. In ra màn hình lưới ô vuông sau khi đã đổi màu các ô theo đúng yêu cầu của An. 

Đổi màu một vùng bức tranh Em hãy viết chương trình yêu cầu nhập vào lần lượt các thông tin sau:  (ảnh 1)

Xem đáp án » 13/07/2024 110

Câu 2:

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”.

Xem đáp án » 13/07/2024 96

Bình luận


Bình luận