Day.9计算器小程序

开发一个简单的python计算器
1.实现加减乘除及括号优先级解析
2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )
 等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),
   运算后得出结果,结果必须与真实的计算器所得出的结果一致

# a=eval(str( 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )))
# print(a) # 2776672.6952380957  #打死也不能用这个!!!
import re
def calculate(x):
    res=eval(x)
    return res
def myeval():#定义自己的加减乘除,不能用eval!!!(暂没思路,待补全)
    pass
def change(mystr):
    while True:
        if "--" in mystr:
            mystr=re.sub("--","+",mystr)
            continue
        elif "-+" in mystr:
            mystr=re.sub("-\+","-",mystr)
            continue
        elif "++" in mystr:
            mystr=re.sub("\+\+","+",mystr)
            continue
        elif "+-" in mystr:
            mystr=re.sub("\+-","-",mystr)
            continue
        else:
            return mystr
def mydeal(mystr):
    c = re.search("\([^()]+\)", mystr)  # 找到第一个符合条件的值并赋值给c
    # print(c.group(), type(c.group()))  # (-40/5) <class ‘str‘>
    d = re.split("[()]", c.group())
    e = "".join(d)  # 将获得的值得括号去掉
    # print(e, type(e))  # 40/5 <class ‘str‘>
    f = calculate(e)  # 获得计算结果
    # print(f)
    g = c.group().replace("(", "\(").replace(")", "\)").replace("*","\*").replace("+","\+")#将元字符进行转义
    # print(g)  # \(-40/5\)
    h = re.sub(g, str(f), mystr)  #将计算结果替换到原来的公式中
    # print(h)  # 1-2*((60-30+-8.0*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))
    return h
# print(mydeal("1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))"))
# print(mydeal("1-2*((60-30+-8.0*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))"))
while True:
    formula=input("请输入你要计算的公式: ".strip())
    a = re.split(" ", formula)
    b = "".join(a)  # 将公式中的空格全部去掉
    # formula="1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))"
    while True:
        if "(" in b:
            print("简化的公式如下:")
            b=change(b)
            b=mydeal(b)
            print(b)
        else:
            print("计算结果:")
            print(calculate(b))
            break

输出结果如下:

请输入你要计算的公式: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )
简化的公式如下:
1-2*((60-30+-8.0*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))
简化的公式如下:
1-2*((60-30-8.0*173545.88095238098)-(-4*3)/(16-3*2))
简化的公式如下:
1-2*(-1388337.0476190478-(-4*3)/(16-3*2))
简化的公式如下:
1-2*(-1388337.0476190478--12/(16-3*2))
简化的公式如下:
1-2*(-1388337.0476190478+12/10)
简化的公式如下:
1-2*-1388335.8476190479
计算结果:
2776672.6952380957
时间: 2024-11-05 06:11:09

Day.9计算器小程序的相关文章

java 学习 ——计算器小程序

简易计算器小程序代码: package jisuanqi; //声明需要插入的包 import java.awt.*; import java.lang.Object; import java.lang.String; import javax.swing.*; import java.awt.event.*; import java.awt.TextComponent; //声明一个主类jisuanqi,继续窗口类Frame public class jisuanqi extends Fram

计算器小程序

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/8/13 15:15 # @Author : Mr_zhang # @Site : # @File : 计算器程序.py # @Software: PyCharm # 1+2-(3*4-3/2+(3-2*(3+5-3*-0.2-3.3*2.2-8.5/2.4)+10)+10) """用户输入计算表达式,显示计算结果""" im

QT 计算器小程序

1 项目创建: 2 运行效果图 QT版本计算器 mainwindow.h main.cpp mainwindow.cpp mainwindow.ui 文件1   mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow {     Q_OBJECT pu

微信小程序开发—项目实战之计算器开发

我参加CSDN博客之星评选啦,感谢大家前往投票支持! 投票地址:http://blog.csdn.net/vote/list.html?keyword=anda0109#search 就像学习一门开发语言首先会写出"Hello World"一样,学习开发一个应用首先得写出一个"计算器",这也是开发者的入门必经之路.想当年我学习C/C++也是从一个计算器入门而后一往无前的. 小程序的第一个应用,我也选择了开发计算器,入门神器嘛.首先,它的界面相对简单,适合入门:其次,

微信小程序-整理各种小程序源码和资料免费下载

微信小程序整理下载 [小程序源码]微信小程序-车源宝微信版 [小程序源码]小程序-微赞社区(论坛demo) [小程序源码]微信小程序-收支账单 [小程序工具]微信小程序-日历 [小程序源码]小程序-在线聊天功能 [小程序源码]微信小程序-大好商城(新增功能天气查询和2048游戏) [小程序源码]微信小程序-查询号码归属地 [小程序源码]微信小程序-备忘录2 [小程序源码]微信小程序-QQ音乐 [小程序源码]小程序-货币汇率 [小程序源码]微信小程序-大学图书馆 [小程序源码]小程序-积分商城 [

微信小程序商店 | 即速商店_二手类小程序

即速应用商店_分类最齐全的小程序商店,收录当前最新最热门小程序,汇集各行业小程序案例及评测,在这里可以轻松找到各种实用好玩的小程序,也可免费发布 自己的小程序获取巨大流量 . PS:关于微信小程序商店_即速商店?   如何免费发布微信小程序,获取流量? 微信小程序商店|即速商店_二手小程序 要求:本次安利的可是二手类福利小程序,专业回收/出售各种闲置商品!注意,想在该类目下提交的微信小程序须具备购物.二手相关属性.如小程序内发布虚假违法信息,由小程序主体承担.点击 > 即刻提交 < 本期二手小

微信小程序商店 | 即速商店_福利类小程序

即速应用商店_分类最齐全的小程序商店,收录当前最新最热门小程序,汇集各行业小程序案例及评测,在这里可以轻松找到各种实用好玩的小程序,也可免费发布 自己的小程序获取 巨大流量 . PS:关于微信小程序商店_即速商店?   如何免费发布微信小程序,获取流量? 微信小程序商店|即速商店_福利小程序 要求:本次安利的可是一堆堆福利小程序,各大电商自有平台优惠券代金券随便领!注意,想在该类目下提交的微信小程序须具备购物.福利相关属性.如小程序内发布虚假违法信息,由小程序主体承担.点击 > 即刻提交 <

微信小程序商店 | 即速商店_商城类小程序

即速应用商店-分类最齐全的小程序商店,收录当前最新最热门小程序,汇集各行业小程序案例及评测,在这里可以轻松找到各种实用好玩的小程序,也可免费发布 自己的小程序获取巨大流量 . PS:关于微信小程序商店_即速商店?   如何免费发布微信小程序,获取流量? 微信小程序商店|即速商店_商城小程序 要求:该类目下提交的微信小程序须具备购物.商城相关属性.如小程序内发布虚假违法信息,由小程序主体承担.点击 > 即刻提交 < 本期商城小程序推荐: ? 女王名品show 测评:女王名品show小程序,免费学

微信小程序商店 | 即速商店_团购类小程序

即速应用商店-分类最齐全的小程序商店,收录当前最新最热门小程序,汇集各行业小程序案例及评测,在这里可以轻松找到各种实用好玩的小程序,也可 免费发布 自己的小程序获取 巨大流量 . PS:关于微信小程序商店_即速商店?   如何免费发布微信小程序,获取流量? 微信小程序商店|即速商店_团购小程序 要求:该类目下提交的微信小程序须具备购物.团购相关属性.如小程序内发布虚假违法信息,由小程序主体承担.点击 > 即刻提交 < 本期团购小程序推荐: ? 网易一起拼lite 测评:网易一起拼小程序只做优质