算法题/奇怪的表达式求值

python 2.7

常规的表达式求值,我们都会根据计算的优先级来计算。比如/的优先级就高于+-。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有/,只有(+, - 和 )。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值为多少

思想:从左向右计算不考虑运算符的优先级,分别将数值和运算符放入两个list中

#coding:utf-8
def compute_express(s):
    arr1 = list(s)
    num = []
    operator = []
    for i in range(int(len(arr1)/2)):
        num.append(arr1[2*i])
        operator.append(arr1[2*i+1])
    #将最后一个数加入
    num.append(arr1[-1])

    k = num[0]
    for i in range(len(operator)):
        #eval计算字符串值
        k = eval(str(k)+str(operator[i])+str(num[i+1]))
    return k

print('the result is:',compute_express('3+5*7'))

这里写图片描述

判断是否为数字和字母

s.isalnum(),如果是数字或字母,返回True,否则返回False
这里写图片描述

python中深拷贝和潜拷贝

深拷贝:copy.deepcopy()原数组在怎么变,都不变
浅拷贝:copy.copy()原数组中的某个数组改变,拷贝元素改变,原数组增加或减少元素,拷贝数组都不变
赋值:原数组怎么变,拷贝数组怎么变

>>> a = [[1,2,3],[4,5,6]]
>>> b = a
>>> import copy
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> a.append(700)
>>> a
[[1, 2, 3], [4, 5, 6], 700]
>>> b
[[1, 2, 3], [4, 5, 6], 700]
>>> c
[[1, 2, 3], [4, 5, 6]]
>>> d
[[1, 2, 3], [4, 5, 6]]
>>> a[0].append(800)
>>> a
[[1, 2, 3, 800], [4, 5, 6], 700]
>>> b
[[1, 2, 3, 800], [4, 5, 6], 700]
>>> c
[[1, 2, 3, 800], [4, 5, 6]]
>>> d
[[1, 2, 3], [4, 5, 6]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值