Python案例-开发之路-计算器

本文通过Python展示了如何开发一个能处理四则混合运算的计算器,以表达式8 * 12 + (6 - (5 * 6 - 2) / 77 + 2) * (3 - 7) + 8为例,介绍了实现的基本思路和可能遇到的调试问题。
摘要由CSDN通过智能技术生成

这篇来讲一讲python实现四则混合运算的计算器案例
以此表达式为例8 * 12 +(6 - ( 5 * 6 - 2) / 77 + 2 )* ( 3 - 7 )+ 8

#!/usr/bin/env python
# -- coding = 'utf-8' --
# Author Allen Lee
# Python Version 3.5.1
# OS Windows 7
"""
计算此表达式 :8 * 12 +(6 - ( 5 * 6  - 2) / 77 + 2 )* ( 3 - 7 )+ 8  的步骤分拆:

 step 1: 匹配到最里层的括号 ( 5 * 6  - 2) = 28,之后表达式变为:8 * 12 +(6 - 28 / 77 + 2 )* ( 3 - 7 )+ 8

 step 2: 匹配外层的括号 (6 - 28 / 77 + 2 )= 7.636 、 ( 3 - 7 )= -4,之后表达式变为:8 * 12 + 7.636 * -4 + 8

 step 3: 匹配 *  / ,计算乘除 8 *12 = 96 、 7.636 * -4=30.544,之后表达式变成: 96 - 30.544 + 8

 step 4: 匹配 + - , 计算加减,96 - 30.544 + 8 = 73.456

 思路:
    1、单独将加减乘除的计算做成函数;
    2、然后在递归的使用到匹配到的表达式中;
    3、单独的加减   乘除函数需要借用递归来处理表达式中的所有对应运算

关键点和难点在于精确匹配出子表达式
"""
import re


def jiajian(arg):
    '''
    处理加减算法
    :return:
    '''
    #__contains__ : 了解某序列是否包含特定的值   x in seq    seq.__contains__(x)
    #首先处理加减算法中的正负号逻辑
    while True:
        if arg[0].__contains__('--') or arg[0].__contains__('+-') or arg[0].__contains__('-+') or arg[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值