开发一个简单的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等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致

  1 import re
  2
  3 def main():
  4
  5     a = ‘‘.join(input(‘请输入需要计算的算式‘).split())
  6
  7     while True:
  8         if ‘(‘ in a:
  9             ct = re.search(r‘\(([^()]+)\)‘, a)
 10             if ct is not None:
 11                 b = ct.groups()[0]
 12                 c = count(b)
 13                 a = re.sub(r‘\(([^()]+)\)‘, str(c), a, 1)
 14         else:
 15             c = count(a)
 16             print(c)
 17             break
 18
 19 def add_min(a):
 20     ‘‘‘
 21     计算加减法
 22     :param:
 23     :return:
 24     ‘‘‘
 25
 26     if ‘--‘ in a:
 27         a = a.replace(‘--‘, ‘+‘)
 28
 29     c = re.findall(r‘-?\d+\.?\d*‘, a)
 30     ls = []
 31     for i in c:
 32         ls.append(float(i))
 33     rest = sum(ls)
 34     return rest
 35
 36
 37 def mul(a):
 38     ‘‘‘
 39     计算剩数
 40     :param ct:
 41     :return:
 42     ‘‘‘
 43
 44
 45     b = re.search(r‘\d+\.?\d*(\*-?\d+\.?\d*)+‘, a)
 46     if b is not None:
 47         b = b.group()
 48         rest = 1
 49         c = re.findall(r‘-?\d+\.?\d*‘, b)
 50         ls =[]
 51         for item in c:
 52             ls.append(float(item))
 53         for i1 in range(len(ls)):
 54             rest = rest * ls[i1]
 55         a = re.sub(r‘\d+\.?\d*(\*-?\d+\.?\d*)+‘, str(rest), a, 1)
 56         return a
 57
 58
 59
 60 def div(a):
 61     ‘‘‘
 62     计算出发
 63     :param a:
 64     :return:
 65     ‘‘‘
 66
 67     b = re.search(r‘\d+\.?\d*(\/-?\d+\.?\d*)+‘, a)
 68     if b is not None:
 69         b = b.group()
 70         c = re.findall(r‘-?\d+\.?\d*‘, b)
 71         ls =[]
 72         for i in c:
 73             ls.append(float(i))
 74         rest = ls[0]
 75         for i1 in range(1,len(ls)):
 76             rest = rest / ls[i1]
 77         a = re.sub(r‘\d+\.?\d*(\/-?\d+\.?\d*)+‘, str(rest), a, 1)
 78         return a
 79
 80
 81 def count(b):
 82     ‘‘‘
 83     计算结果
 84     :return:
 85     ‘‘‘
 86     while True:
 87         if ‘*‘ in b:
 88             c = b.split(‘*‘)
 89             if ‘/‘ in c[0]:
 90                 b = div(b)
 91             else:
 92                 b = mul(b)
 93         elif ‘/‘ in b:
 94             b = div(b)
 95
 96         elif ‘+‘ or ‘-‘ in b:
 97             b = add_min(b)
 98             return b
 99         else:
100             return b
101
102
103
104
105 main()
时间: 2024-10-09 17:51:06

开发一个简单的python计算器的相关文章

作业1开发一个简单的python计算器

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

简单的python计算器

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

完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能

#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input("please input a number:"))except ValueError: print("第一个运算数字输入非数字") try: b=int(raw_input("please input another number:"))except Val

Python开发一个简单的BBS论坛

项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可被置顶 可进行多级评论 就先这些吧... 知识必备: Django HTML\CSS\JS BootStrap Jquery 设计表结构 1 # -*- coding:utf-8 -*- 2 from django.db import models 3 from django.contrib.aut

【Nginx】开发一个简单的HTTP模块

首先来分析一下HTTP模块是如何介入Nginx的. 当master进程fork出若干个workr子进程后,每个worker子进程都会在自己的for死循环中不断调用事件模块: for ( ;; ) { .... ngx_process_events_and_timers(cycle); /* 调用事件模块 */ .... } 事件模块检测是否有TCP连接请求,当收到一个SYN包后,由事件模块建立一条TCP连接.连接建立成功后,交由HTTP框架处理,HTTP框架负责接收HTTP头部,并根据头部信息将

开发一个简单实用的android紧急求助软件

之前女朋友一个人住,不怎么放心,想找一个紧急求助的软件,万一有什么突发情况,可以立即知道.用金山手机卫士的手机定位功能可以知道对方的位置状态,但不能主动发送求助信息,在网上了很多的APK,都是鸡肋功能,都需要解锁.并打开软件,真正的紧急情况可能没有时间来完成这一系列操作. 于是我自己做了一个这样的软件,在紧急情况下,连续按电源键5次即可发送求救短信和位置信息给事先指定的用户,这个操作在裤兜里就能完成.原理很简单,就是设置监听器捕获屏幕的开关,在较短的时间内屏幕开关达到一定次数后,触发手机定位,定

类实现一个简单的日期计算器

作为一个程序员,对于时间的概念已经退化到了三岁小孩水平,常常会醉心于写一个程序忘记了时间,一个下午,一天,甚至一个星期就过去了.对于一个刚入程序员大门的我来说,时光真的是匆匆溜走,所以经常会百度一个日期计数器,算今天到那些特别的日子还有多少天.用多了后就觉得现在储备的编程知识可以去实现一个简单的日期计算器了.所以就写了这篇博客给大家分享一下. 首先,得设计这个日期类,一个日期类应该具有私有数据成员应该有年Year,月month,日day.在这我们就不精确到时分秒了. #pragma once #

【转】一个简单的python socket编程

原文链接:转载:一个简单的python socket编程 python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参数代表地址家族,可为AF_INET或AF_UNIX.AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信.      type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRA

一个简单的python MVC框架(1)

因为买了本机器学习的书是python的,所以学习了一下python,就用python做了一个简单的web开发的mvc小框架.整个框架分为实体层,数据访问层,业务基类层,Web请求转发层,控制层和视图层.当然也包括一些辅助性工具类.下面一一介绍,希望对跟我一样初学python的有点帮助:1)实体层      由实体基类和用户实体类组成.实体类可以由数据库自动生成,提供了一个DbTools,可以自动生成规则的实体.下面是实体基类: import threading #用户错误类,用于抛出自定义的异常