真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

python如何實現對逆波蘭表達式求值

這篇文章主要介紹了python如何實現對逆波蘭表達式求值的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇python如何實現對逆波蘭表達式求值文章都會有所收獲,下面我們一起來看看吧。

創(chuàng)新互聯是一家專業(yè)提供紫云企業(yè)網站建設,專注與網站設計制作、網站設計、H5高端網站建設、小程序制作等業(yè)務。10年已為紫云眾多企業(yè)、政府機構等服務。創(chuàng)新互聯專業(yè)網站建設公司優(yōu)惠進行中。

題目:編寫一個函數實現對逆波蘭表達式求值,不能使用Python的內置函數。

點評:逆波蘭表達式也稱為“后綴表達式”,相較于平常我們使用的“中綴表達式”,逆波蘭表達式不需要括號來確定運算的優(yōu)先級,例如5 * (2 + 3)對應的逆波蘭表達式是5 2 3 + *。逆波蘭表達式求值需要借助棧結構,掃描表達式遇到運算數就入棧,遇到運算符就出棧兩個元素做運算,將運算結果入棧。表達式掃描結束后,棧中只有一個數,這個數就是最終的運算結果,直接出棧即可。

import operator


class Stack:
    """棧(FILO)"""

    def __init__(self):
        self.elems = []
    
    def push(self, elem):
        """入棧"""
        self.elems.append(elem)
    
    def pop(self):
        """出棧"""
        return self.elems.pop()
    
    @property
    def is_empty(self):
        """檢查棧是否為空"""
        return len(self.elems) == 0


def eval(expr):
    """逆波蘭表達式求值"""
    operators = {
        '+': operator.add,
        '-': operator.sub,
        '*': operator.mul,
        '/': operator.truediv
    }
    stack = Stack()
    for item in expr.split():
        if item.isdigit():
            stack.push(float(item))
        else:              
            num2 = stack.pop()
            num1 = stack.pop()
            stack.push(operators[item](num1, num2))
    return stack.pop()

關于“python如何實現對逆波蘭表達式求值”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“python如何實現對逆波蘭表達式求值”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。


網站欄目:python如何實現對逆波蘭表達式求值
網頁鏈接:http://weahome.cn/article/gieedo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部