用函数写一个计算器(亲测完整版)

第一个函数算乘除法:

import re
def atom_cal(exp):
    if ‘*‘ in exp:
        a,b = exp.split(‘*‘)
        return str(float(a)*float(b))
    elif ‘/‘ in exp:
        a,b = exp.split(‘/‘)
        return str(float(a)/float(b))

第二个函数 删选乘除法

def mul_div(exp):
    while True:
        ret = re.search(‘\d+(\.\d+)?[*/]-\d+(\.\d+)?‘,exp)
        if ret:
            atom_exp = ret.group()
            res = atom_cal(atom_exp)
            exp = exp.replace(atom_exp,res)
        else:
            return exp

第三个函数 格式化

def format_exp(exp):
    exp = exp.replace(‘--‘,‘+‘)
    exp = exp.replace(‘++‘,‘+‘)
    exp = exp.replace(‘+-‘,‘-‘)
    exp = exp.replace(‘-+‘,‘-‘)
    return exp

第四个函数 计算加减法

def add_sub(exp):
   ret = re.findall(‘[+-]?\d+(?:\.\d+)?‘,exp)
   exp_sum = 0
   for i in ret:
       exp_sum += float(i)
   return exp_sum

第五个函数 计算函数

def cal(exp):
    exp = mul_div(exp)
    exp = format_exp(exp)
    exp_sum = add_sub(exp)
    return exp_sum

第六个函数 计算主函数

def main(exp):
    exp = exp.replace(‘ ‘,‘‘)
    while 1:
        ret = re.search(‘\([^()]+\)‘,exp)
        if ret:
            inner_bracket = res.group()
            res = str(cal(inner_bracket))
            exp = exp.replace(inner_bracket,res)
        else:break
    return cal(exp)

ret = main(s)
print(ret,type(ret))

以上代码测试过,能够正常使用,如发现异常,请留言,一起学习进步!

原文地址:https://www.cnblogs.com/apollo1616/p/9519677.html

时间: 2024-07-29 11:21:08

用函数写一个计算器(亲测完整版)的相关文章

如何写一个计算器

考虑这样一个问题,给定一个字符串,"1+1+(3+4)-2*3+8/2",如何将它转化为如下形式, "1+1=2" "3+4=7" "2+7=9" "2*3=6" "9-6=3" "8/2=4" "3+4=7" 换句话说,就是如何将字符串按照四则运算计算出来,如何写一个计算器.拿java来举例,并且为了简单,我们只考虑个位数.这个过程大概分为这几个

利用面向对象写一个计算器

本文参考了程杰的<大话设计模式>,使用C#语言利用面向对象的模式来写一个计算器. 如果是我本人来写计算器,也就加减乘除的话,估计我会全部写进控制台里面,写4个if语句出来......或者我会利用switch,但是这样的效果都不好,有更好的方法,就是如下所示的代码啦: 先定义一个Operation类,主要实现运算框架: class Operation { public double Number1 { get; set;} public double Number2 { get; set; }

用VBA写一个计算器

着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分   开始====================================================== 之所以 要有今天这样一篇博客是因为. 之前领导让找几组数据.从excel表格里面. 要求是 主号码 一致,副号码 一致,名称为 XXX 的 项目发生变化的数据 需要被找到. 这样的 项目 有 11个. 我找的真的是眼要花. 变动前

用PHP写一个计算器

本篇文章介绍了使用PHP+HTML+Javascript技术编写一个计算器的方法,希望对各位学习PHP开发的同学有帮助! 用PHP写一个计算器 <body> <?php if (!empty($_POST)) { $op=$_POST['point']; $sum1 = $_POST['sum1']; $sum2 = $_POST['sum2']; $sum = 0; if ($sum1 != '' && is_numeric($sum1) && $sum

今天学习了在一般处理程序中写一个计算器

今天看了看前面的javascript以及学习的jquery,感觉刚开始学习时间就赶得比较紧,练习是做啦,基础的知识都是知道的,但是在写一些小小的程序时间还是陌生,感觉练习的还是很不够的,其实怎么说那,想好好的学习还是把他们使用到项目中练习就会学习的更快些吧,然后我又做啦一个增删改查的一般处理程序,但是还没有总结好,现在就简单的先总结一个小小的计算器使用html和ashx来实现一下其功能,如下所示: 一.html样式 <script> //@Script; </script> <

1.自己写一个计算器demo

知识点: 1.System.Math.Pow() 实现乘方 2.实现计算器的运算优先级,依次调用的流程 问题: 还未实现“()”功能 解决方案 UI: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Text; 7 using System.Windows.Fo

用JS写一个计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

用JS写一个计算器(兼容手机端)

先看成果:1.PC端2. 首先确立html,有哪些东西我们要知道.布局大概的样子在心里有个数 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>瑞雪的计算器</t

五一放假作业4.30 用正则表达式写一个计算器!去掉括号,计算式子结果!

作业要求:去掉括号,计算式子结果. 1 - 2 * ( (60-30 +(-9-2-5-2*3-5/3-40*4/2-3/5+6*3) * (-9-2-5-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) ) #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2017/4/30 7:44# @Author : Olivia Su# @File : 作业.py# @Softw