您的位置:首页 > 编程语言 > Python开发

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

2017-08-15 09:40 134 查看

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]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 表达式求值