算法题/奇怪的表达式求值
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,否则返回Falsepython中深拷贝和潜拷贝
深拷贝: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]]
相关文章推荐
- 一个新算法的表达式求值的函数
- 网易2017春招编程题:奇怪的表达式求值 [python]
- 后缀表达式的求值的算法
- 表达式求值及转换算法
- 后缀表达式的求值的算法
- Dijkstra 的双栈算数表达式求值算法的学习
- 后缀表达式的求值的算法
- 算法笔记_044:表达式计算求值(Java)
- 算法-表达式求值(Dijkstra双栈)
- 双栈算数表达式求值算法
- 严蔚敏《数据结构》C语言版 第三章 算法3.4 表达式求值
- 经典算法-算术表达式求值
- 算法表达式求值
- 经典算法-算术表达式求值
- 经典算法-算术表达式求值
- [原创]表达式求值:经典算法 <Java版本>
- Dijkstra双栈算数表达式求值算法的过程与分析
- 表达式求值算法总结
- [编程题] 奇怪的表达式求值
- 【网易2017实习生编程题】 工作安排 集合 奇怪的表达式求值 涂棋盘 小易记单词