新聞中心
這篇文章主要介紹了python如何實(shí)現(xiàn)對(duì)逆波蘭表達(dá)式求值的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇python如何實(shí)現(xiàn)對(duì)逆波蘭表達(dá)式求值文章都會(huì)有所收獲,下面我們一起來看看吧。

創(chuàng)新互聯(lián)是一家專業(yè)提供紫云企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為紫云眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
題目:編寫一個(gè)函數(shù)實(shí)現(xiàn)對(duì)逆波蘭表達(dá)式求值,不能使用Python的內(nèi)置函數(shù)。
點(diǎn)評(píng):逆波蘭表達(dá)式也稱為“后綴表達(dá)式”,相較于平常我們使用的“中綴表達(dá)式”,逆波蘭表達(dá)式不需要括號(hào)來確定運(yùn)算的優(yōu)先級(jí),例如
5 * (2 + 3)對(duì)應(yīng)的逆波蘭表達(dá)式是5 2 3 + *。逆波蘭表達(dá)式求值需要借助棧結(jié)構(gòu),掃描表達(dá)式遇到運(yùn)算數(shù)就入棧,遇到運(yùn)算符就出棧兩個(gè)元素做運(yùn)算,將運(yùn)算結(jié)果入棧。表達(dá)式掃描結(jié)束后,棧中只有一個(gè)數(shù),這個(gè)數(shù)就是最終的運(yùn)算結(jié)果,直接出棧即可。
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):
"""逆波蘭表達(dá)式求值"""
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()關(guān)于“python如何實(shí)現(xiàn)對(duì)逆波蘭表達(dá)式求值”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“python如何實(shí)現(xiàn)對(duì)逆波蘭表達(dá)式求值”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文題目:python如何實(shí)現(xiàn)對(duì)逆波蘭表達(dá)式求值
本文URL:http://www.dlmjj.cn/article/gieedo.html


咨詢
建站咨詢
