亚洲AVI,黑人巨茎大战欧美白妇,初高中生洗澡自慰高清网站,欧美日韩无砖专区一中文字

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

python實(shí)現(xiàn)逆波蘭計(jì)算表達(dá)式的代碼

如下資料是關(guān)于python實(shí)現(xiàn)逆波蘭計(jì)算表達(dá)式的代碼。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括云浮網(wǎng)站建設(shè)、云浮網(wǎng)站制作、云浮網(wǎng)頁(yè)制作以及云浮網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,云浮網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到云浮省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

symbol_priority = {}
symbol_priority[0] = ['#']
symbol_priority[1] = ['(']
symbol_priority[2] = ['+', '-']
symbol_priority[4] = [')']

def comparePriority(symbol, RPN_stack, symbol_stack):
    '''Compare priority between two symbols'''

    global symbol_priority
    if len(symbol_stack) > 0:
        symbol_pop = symbol_stack.pop()
    else:
        return

    for list in symbol_priority.values():
        if (symbol in list) and (symbol_pop in list):
            '''same priority'''
            symbol_stack.append(symbol_pop)
            symbol_stack.append(symbol)
            return
        elif symbol in list:
            '''symbol is smaller'''
            RPN_stack.append(symbol_pop)
            #recusion call
            comparePriority(symbol, RPN_stack, symbol_stack)
            return
        elif symbol_pop in list:
            '''symbol is bigger'''
            symbol_stack.append(symbol_pop)
            symbol_stack.append(symbol)
            return
        else:
            continue

        symbol_stack.append(symbol_pop)
        return

def scanEveryone(input_string, RPN_stack, symbol_stack):
    for ch in input_string:
        if ch.isdigit():
            RPN_stack.append(ch)
        else:
            if len(symbol_stack) > 0:
                if ch == '(':
                    symbol_stack.append(ch)
                elif ch == ')':
                    while True:
                        symbol_pop = symbol_stack.pop()
                        if symbol_pop == '(':
                            break
                        else:
                            RPN_stack.append(symbol_pop)
                else:
                    comparePriority(ch, RPN_stack, symbol_stack)
            else:
                symbol_stack.append(ch)

def scanInput(RPN_stack, symbol_stack):
    input_string = raw_input()
    input_string += '#'
    scanEveryone(input_string, RPN_stack, symbol_stack)

def calRPN(RPN_stack):
    value_stack = []
    RPN_stack.append('#')

    for value in RPN_stack:
        if value == '#':
            return value_stack.pop()
            break
        if value.isdigit():
            value_stack.append(value)
        else:
            right_value = value_stack.pop()
            left_value = value_stack.pop()
            cal_string = left_value + value + right_value
            value_stack.append(str(eval(cal_string)))

def main():
    RPN_stack = []
    symbol_stack = []

    scanInput(RPN_stack, symbol_stack)
    print calRPN(RPN_stack)

if __name__ == '__main__':
    main()

calRPN.py

symbol_priority = {}
symbol_priority[0] = ['#']
symbol_priority[1] = ['(']
symbol_priority[2] = ['+', '-']
symbol_priority[4] = [')']

def comparePriority(symbol, RPN_stack, symbol_stack):
    '''Compare priority between two symbols'''

    global symbol_priority
    if len(symbol_stack) > 0:
        symbol_pop = symbol_stack.pop()
    else:
        return

    for list in symbol_priority.values():
        if (symbol in list) and (symbol_pop in list):
            '''same priority'''
            symbol_stack.append(symbol_pop)
            symbol_stack.append(symbol)
            return
        elif symbol in list:
            '''symbol is smaller'''
            RPN_stack.append(symbol_pop)
            #recusion call
            comparePriority(symbol, RPN_stack, symbol_stack)
            return
        elif symbol_pop in list:
            '''symbol is bigger'''
            symbol_stack.append(symbol_pop)
            symbol_stack.append(symbol)
            return
        else:
            continue

        symbol_stack.append(symbol_pop)
        return

def scanEveryone(input_string, RPN_stack, symbol_stack):
    for ch in input_string:
        if ch.isdigit():
            RPN_stack.append(ch)
        else:
            if len(symbol_stack) > 0:
                if ch == '(':
                    symbol_stack.append(ch)
                elif ch == ')':
                    while True:
                        symbol_pop = symbol_stack.pop()
                        if symbol_pop == '(':
                            break
                        else:
                            RPN_stack.append(symbol_pop)
                else:
                    comparePriority(ch, RPN_stack, symbol_stack)
            else:
                symbol_stack.append(ch)

def scanInput(RPN_stack, symbol_stack):
    input_string = raw_input()
    input_string += '#'
    scanEveryone(input_string, RPN_stack, symbol_stack)

def calRPN(RPN_stack):
    value_stack = []
    RPN_stack.append('#')

    for value in RPN_stack:
        if value == '#':
            return value_stack.pop()
            break
        if value.isdigit():
            value_stack.append(value)
        else:
            right_value = value_stack.pop()
            left_value = value_stack.pop()
            cal_string = left_value + value + right_value
            value_stack.append(str(eval(cal_string)))

def main():
    RPN_stack = []
    symbol_stack = []

    scanInput(RPN_stack, symbol_stack)
    print calRPN(RPN_stack)

if __name__ == '__main__':
    main()

網(wǎng)站題目:python實(shí)現(xiàn)逆波蘭計(jì)算表達(dá)式的代碼
網(wǎng)頁(yè)URL:http://news.spvevtbd.cn/article/ihpjpd.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP