逐段输出多项式的计算结果

      给定一个简单的四则运算的多项式,如果把多项式看作一个字符串,试编写程序,自左向右依次输出每个子字符串所对应的多项式的计算结果。例如给定多项式为:1+23*2+3*3,程序输出结果为:1 3 24 47 50 56

key_list = [str(i) for i in range(1, 10)]

def func(str_in):
    if len(str_in) == 0:
        print 'Input Error 111!'
    result = 0
    result_f = 0
    pos = 0
    oper = 0
    num_f = 0
    num_list = []
    oper_list = []
    print str_in
    while pos < len(str_in):
        if pos == 0 and str_in[pos] in key_list:
            num = int(str_in[pos])
            num_list.append(num)
            #print num_list
            result = num_list[0]
            result_f = 0
            print result
        elif pos < len(str_in) and str_in[pos] in key_list:
            num = int(str_in[pos])
            if num_f == 0:
                num_f = num
                num_list.append(num_f)
            else:
                num_f = num_f*10 + num
                num_list[-1] = num_f
                #print num_list
                #print oper_list
            if oper_list[-1] == 1:
                result = result_f + num_list[-1]
            else:
                result = result_f + num_list[-2] * num_list[-1]
            print result
        elif pos < len(str_in) and str_in[pos] == '+':
            oper = 1
            num_f = 0
            result_f = result
            oper_list.append(oper)
        elif pos < len(str_in) and str_in[pos] == '*':
            oper = 2
            num_f = 0
            oper_list.append(oper)
        else:
            pass
        pos += 1


str_in = '1+23*2+3*3'
func(str_in)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值