作业:
使用正则表达式和递归实现计算器功能。
实现:
1、实现带括号的计算
2、实现指数、加减乘除求余取整等功能
1、实现思路
1.1 先查找括号,有括号则递归计算括号内的结果。无括号则直接计算表达式
1.2 使用正则表达式匹配字符串,用计算结果替换计算的表达式。
2、流程图
3、测试效果
计算器对于测试输入做了校验。比如输入 '-2 - / 3' 、 '2 + * 3' 、 '-3 +-' 等等
4、源码实现
1 #!/usr/bin/env python3 2 # -*- coding:utf-8 -*- 3 # Version:Python3.5.0 4 import re 5 6 def check_exp(get_input): 7 ''' 8 输入一个表达式,判断是否正确,返回一个去空格的表达式 9 :param get_input: 获取的表达式 10 :return: 返回一个去空格的表达式 11 ''' 12 char_set = set(('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 13 '+', '-', '*', '/', '%', '//', '**', '.', '(', ')')) # 有效表达式的字符集合 14 # 判断输入的字符合法,输入的表达式字符属于全集char_set为真 15 if set(get_input).issubset(char_set): 16 # 输入的表达式是乘号'*'、除号'/',百分号'%' 开头的,不合法 17 if get_input.startswith('*') or get_input.startswith('/') or get_input.startswith('%'): 18 print('