Python之实现一个简易计算器
自己动手写计算器 一、功能分析 用户输入一个类似这样 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 这样的表达式,假设表达式里面除了包含空格、'+'、'-'、'*'、'/'和括号再无其他特殊符号,然后自己动手写代码解析其中的表达式,实现加减乘除 , 最后得出的结果与真实的计算机所算的结果必须一致。 二、所需的知识点 字符串的处理 正则表达式的运用 函数递归 三、程序实现流程分析 用正则表达式处理字符串,只提取其中的数字和运算符,并转换成列表 编写一个函数,处理没有括号的基本运算的基本表达式 再写一个函数递归处理带有括号的函数,先计算最内部括号中的表达式, 然后将最内部的括号替换为计算后的结果, 在递归外部一层的, 最后返回的就是所需的结果 四、具体实现过程 1.正则表达式处理用户输入字符串 这里我不会讲正则表达式具体的用法,要将的话都可以讲一本书了,我只讲本文用到的正则表达式。根据需求,我们需要提取出用户输入字符串中的数字和运算符到一个列表中,而空格将会被忽略掉,假设用户输入的表达式是 expression,我们可以写出下面的代码: 1 2 3 4 import re expression = '(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4)' l =