iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python计算器
  • 493
分享到

python计算器

计算器python 2023-01-31 02:01:19 493人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

功能说明:使用python编写一个计算器,实现简单的加减乘除功能。程序的逻辑很简单,取出括号,计算里面的乘除加减,结果替换原括号内容,再循环直到最终结果。难点在于正则匹配字符和计算细节上,怎么很好协调配合并正确获得结果。逻辑图:程序目录:m

功能说明:使用python编写一个计算器,实现简单的加减乘除功能。

程序的逻辑很简单,取出括号,计算里面的乘除加减,结果替换原括号内容,再循环直到最终结果。难点在于正则匹配字符和计算细节上,怎么很好协调配合并正确获得结果。



逻辑图:

wKioL1mkIB-R23yXAAC2WsM9ebY107.jpg-wh_50


程序目录:

main.py                       ###程序入口

checkstr.py                   ###字符检测

checkbrackets.py              ###字符串检测,括号切割

division_multiplication.py    ###乘除运算

addition_subtration.py        ###加减运算


主程序main.py

#!/usr/bin/env Python
# -*- coding:utf-8 -*-
"""
模拟简易计算器,用于实现简单的加减乘除功能。
这边是主程序入口
"""
from checkstr import checkstr
from checkbrackets import calculation
# mathinput:用户输入
mathinput = input("请输入需要计算的数学式子:")
_mathinput = checkstr(mathinput)
__mathinput = calculation(_mathinput)
print('--------------------------------------------------------------')
print('最后计算结果为:',__mathinput)


输入字符串检查checkstr.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#设置合法字符,例如1.234e-02
legalsymbol=['0','1','2','3','4','5','6','7','8','9','+','-','*','/','(',')','e','.']

#检测输入字符是否有非合法字符
def checkstr(str):
    for Word in str:
        if word in legalsymbol:
            fix_str = re.sub(' ', '', str)   ###去除空格字符
            return fix_str
        else:
            print(word,"不是合法数学计算字符")
            exit()


括号检测切割checkbrackets.py 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
from division_multiplication import division_multiplication
from addition_subtration import  addition_subtration

def calculation(cal_str):
    ###将第一个括号式子取出,计算后的结果替换原字符串中的值,再循环检测括号
    while True:
        rest = re.search('(\([\d\-\+\*\/\.]+\))', cal_str)
        ###判断是否有括号,没有括号直接进行计算
        if rest == None:
            print('没有括号,式子为:',cal_str)
            cal_str1 = division_multiplication(cal_str)
            cal_str2 = addition_subtration(cal_str1)
            print('计算结果为:',cal_str2)
            break
        ###将括号取出计算
        else:
            brackets_str=rest.group()
            print('有括号,式子为:', cal_str)
            print('取到的括号式子为:',brackets_str)
            ###计算括号内的值,再返回
            cal_str1 = division_multiplication(brackets_str)
            cal_str2 = addition_subtration(cal_str1)
            ###将结果替换第一个匹配的括号里的字符串,只替换一次
            cal_str = re.sub(r'\([\-\+\*\/\d\.e]*\)',cal_str2,cal_str,1)
            print('将括号内的式子替换后为:',cal_str)
    return cal_str2


division_multiplication.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import re

def division_multiplication(input_str):
    ###判断字符是否有乘除号,没有直接返回原字符串
    if '/' not in input_str and '*' not in input_str:
        div_mul_restult=input_str
    else:
        ###将输入的字符串按['符号',‘值’]形式存放为列表
        ###([\-\+\*\/]?)取运算符号
        ###([\-\+\*\/]?)(\-?\d+\.?\d*(e\-\d*)?取数字,包括前面的负号(例:1*-1,取-1)和浮点数数学符号e,例如-6.146213e-06
        input_str = re.findall('([\-\+\*\/]?)(\-?\d+\.?\d*(e\-\d*)?)', input_str)
        div_mul_list = []
        ###循环,到所有乘除都计算完为止
        while len(input_str)!=1 :
            ###采用冒泡法,从第二个字符开始检查是否为‘/’或者‘*’,
            ### 是,进行计算,结果赋值给第一个元素,然后删乘除第二个元素
            ### 不是,将第一个列表元素移出原列表
            if input_str[1][0]=='*':
                result=float(input_str[0][1]) * float(input_str[1][1])
                input_str[0]=(input_str[0][0],str(result))
                del input_str[1]
                #print('after division_multiplication,the str is:',input_str)
            elif input_str[1][0]=='/':
                result=float(input_str[0][1]) / float(input_str[1][1])
                input_str[0]=(input_str[0][0],str(result))
                del input_str[1]
                #print('after division_multiplication,the str is:',input_str)
            else:
                ###如果第二个数字的运算符号不是乘除,将第一个数字插入到临时列表,然后在原列表中删除。
                ###注意:这里可能会有个问题,如果是1*-1,运算符可能会出错
                div_mul_list.append(input_str[0])
                del input_str[0]
                #print('Go to here,div_mul_list is:',div_mul_list)
        div_mul_list.append(input_str[0])
        ###返回一个乘除法结果字符串
        div_mul_restult = ''
        for a in range(0, len(div_mul_list)):
            div_mul_restult = '%s%s%s' % (div_mul_restult, div_mul_list[a][0], div_mul_list[a][1])
    print('乘除计算后的结果为:',div_mul_restult)
    return div_mul_restult


addition_subtration.py 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# made by try
import re
def addition_subtration(input_str):
    ###将输入的字符串按['符号',‘值’]形式存放为列表
    ###([\-\+\*\/]?)取符号
    ###([\-\+\*\/]?)(\-?\d+\.?\d*(e\-\d*)?取数字,包括前面的负号(例:1--1,取-1)和浮点数数学符号e,例如-6.146213e-06
    input_str = re.findall('([\-\+\*\/]?)(\-?\d+\.?\d*(e\-\d*)?)', input_str)
    add_sub_list = []
    ###这里只计算加减,如果有乘除,则抛出异常
    for checksign in input_str:
        if checksign[0] == '/' or checksign[0] == '*':
            print('ERROR:这边是加法计算,但是有乘除运算符,计算出错!!!',checksign)
            exit()
    ###循环,到所有加减都计算完为止
    while len(input_str)!=1 :
        ###正正相加如1+4
        if input_str[0][0]=='' and input_str[1][0]=='+':
            rest = float(input_str[1][1]) + float(input_str[0][1])
            input_str[0] = ('', str(rest))
            del input_str[1]
        ###正负相加,分两种情况,1-4,4-1
        elif input_str[0][0]!='-' and input_str[1][0]=='-':
            if input_str[0][1] < input_str[1][1]:                   ###1-4
                rest = float(input_str[1][1]) - float(input_str[0][1])
                input_str[0] = ('-', str(rest))
            else:                                                   ###4-1,4-4
                rest = float(input_str[0][1]) - float(input_str[1][1])
                input_str[0] = ('', str(rest))
            del input_str[1]
        ###负负相加,-1-4
        elif input_str[0][0]=='-' and input_str[1][0]=='-':
            rest = float(input_str[1][1]) + float(input_str[0][1])
            input_str[0] = ('-', str(rest))
            del input_str[1]
        ###负正相加,分两种情况-1+4,-4+1
        elif input_str[0][0]=='-' and input_str[1][0]=='+':
            if input_str[0][1] < input_str[1][1]:                   ###-1+4
                rest = float(input_str[1][1]) - float(input_str[0][1])
                input_str[0] = ('', str(rest))
            else:                                                   ###-4+1,-4+4
                rest = float(input_str[0][1]) - float(input_str[1][1])
                input_str[0] = ('-', str(rest))
            del input_str[1]
        else:
            ###保留功能
            print('maybe something wrong!')
            exit()
    #print(input_str)
    add_sub_str = '%s%s' % (input_str[0][0], input_str[0][1])
    print('加减计算后的结果为:',add_sub_str)
    return add_sub_str


试运行:

请输入需要计算的数学式子:7+(-4*3)/5

有括号,式子为: 7+(-4*3)/5

取到的括号式子为: (-4*3)

乘除计算后的结果为: -12.0

加减计算后的结果为: -12.0

将括号内的式子替换后为: 7+-12.0/5

没有括号,式子为: 7+-12.0/5

乘除计算后的结果为: 7+-2.4

加减计算后的结果为: 4.6

计算结果为: 4.6

--------------------------------------------------------------

最后计算结果为: 4.6


--结束END--

本文标题: python计算器

本文链接: https://www.lsjlt.com/news/185619.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python计算器
    功能说明:使用python编写一个计算器,实现简单的加减乘除功能。程序的逻辑很简单,取出括号,计算里面的乘除加减,结果替换原括号内容,再循环直到最终结果。难点在于正则匹配字符和计算细节上,怎么很好协调配合并正确获得结果。逻辑图:程序目录:m...
    99+
    2023-01-31
    计算器 python
  • Python之简易计算器
      思路:学会运用正则表达式把需要先进行计算的匹配出来,然后再一步步的去算,把先算出来的值替换原来的值,再进一步的把++,--等号变成我们正常的数学上的符号,然后再进行一步步的替换,最终把带括号的都计算出来,再调用一次加减函数进行计算 ...
    99+
    2023-01-30
    计算器 简易 Python
  • 初学Python,tkinter计算器代
    import tkinter root = tkinter.Tk() root.minsize(185,250) root.maxsize(185,250) root.title('计算器') rs = True   def ...
    99+
    2023-01-31
    计算器 Python tkinter
  • Python实现计算器功能
    #!/usr/bin/python # -*- coding:UTF-8 -*- def sum(options,x,y):     t = options     if(t == "+"):...
    99+
    2023-01-31
    计算器 功能 Python
  • Python Tkinter学习之计算器
    初学Python tkinter,利用目前所学编写一个简单的计算器练习一下。预期效果:1.能够实现加减乘除运算,2.只能输入数字3.通过按钮选择进行哪种运算。4.结果框不能修改,智能复制5.按清除按钮能够清除所有内容 from  tkint...
    99+
    2023-01-31
    计算器 Python Tkinter
  • python 计算耗时
    print (datetime.datetime.now()) import time as tm t1 = tm.time()....................... t2 = tm.time() print "=====...
    99+
    2023-01-31
    python
  • python计算CRC16等
    python计算CRC16等 智能电能表数据通信协议DL/T 645 - 2007;本部分实现了该协议的部分功能。 ''' 计算645数据域数据长度 @Source 2013-5-10 16:30 ''' def LenCal(s...
    99+
    2023-01-31
    python
  • python概率计算
    from fractions import Fraction # # from __future__ import division # def P(event, space): # "在一个等可能发生的样本空间中,事件发生...
    99+
    2023-01-31
    概率 python
  • Python 数值计算
    print "Welcome to run" print "Please input num" print "1 stand for 矩形" print "2 stand for 圆" print "...
    99+
    2023-01-31
    数值 Python
  • python云计算2
    1.故事设定主⻆是⼀个想赚钱的管理员。 他的⼿⾥有着⼤量的物理计算资源,⽆限多的服务器啊,⽆限多的电⼒什么的,⽆限多的硬盘空间,⽆限⼤的带宽啊什么的(勿吐槽,反正⼀切是脑洞⼤开,不如让他⽆限⼤,⽂章的不严谨之处,还请谅解),⽽且这位管理员在...
    99+
    2023-01-31
    python
  • python计算春节倒计时
       先来无聊,想知道今年的春节还有几天,好久没写python代码了,下面就随便写了一个,如有不对之处,还请各位看官不灵赐教,好了,我直接上代码了:#coding=utf-8 #!/usr/bin/env python import da...
    99+
    2023-01-31
    倒计时 春节 python
  • 【Python】python之π的计算
    用IPO模式分析问题如下: 1.输入:抛点的数量。 2.处理:对于每个抛洒点,计算点到圆心的距 离,通过距离盘点该点在 圆内或圆外,统计在圆内点的数量。 3.输出:π值 代码如下 from random import ra...
    99+
    2023-01-31
    Python python
  • python编写小程序(计算器)
    #coding=gbk def yunsuan(userA,userB,operate): '运算函数' try: A = int(userA) B = int(userB) opera...
    99+
    2023-01-31
    计算器 程序 python
  • python实现计算器小功能
    本文实例为大家分享了python实现计算器功能的具体代码,供大家参考,具体内容如下 1. 案例介绍 本例利用 Python 开发一个可以进行简单的四则运算的图形化计算器,会用到 Tk...
    99+
    2024-04-02
  • Python如何实现GUI计算器
    本文小编为大家详细介绍“Python如何实现GUI计算器”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python如何实现GUI计算器”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果可执行正常加减乘除相关运算...
    99+
    2023-07-04
  • Python双版本计算器详解
    有框计算器 这个计算器我们用到了Python自带的Tkinter库 # 导入tkinter库 import tkinter 我们要对窗口进行一些基本操作 # 获取一个窗口...
    99+
    2024-04-02
  • python中的GUI实现计算器
    目录一、学习目标:学会利用python的GUI做界面布局二、学习内容:手写一个简单计算器1、计算器目标图2、 计算器计算功能3、 代码实现与详细说明三、学习优化:学会优化冗于代码一、...
    99+
    2024-04-02
  • Python tkinter实现计算器功能
    本文实例为大家分享了Python tkinter实现计算器功能的具体代码,供大家参考,具体内容如下 python版本:3.5 一.计算器的功能描述 今天我们用python来实现一个计...
    99+
    2024-04-02
  • python个人所得税计算器
    任务描述 本关任务:编写一个个人所得税计算器的小程序。 相关知识 个人所得税概述 2018 年 10 月 1 日以前,个税免征额为 3500 元/月,调整后,个税免征额为 5000 元/月, 7 级超额累进个人所得税税率表如下: ...
    99+
    2023-09-27
    python 算法 Powered by 金山文档
  • 计算机语言&Python解释器
    [TOC] 1.1机器语言 由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算的机器语言机器语言属于低级语言 1.2汇编语言 汇编语言的实质和机器语言是相同的,都是直接对硬件操作...
    99+
    2023-01-31
    计算机语言 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作