python 设计简易计算器_python小项目——实现简易的计算器
1 #!usr/bin/evn python
2 #coding:cp936
3 #Author:Siwen
4
5
6 print ("Hello world!")7
8
9 importre10
11 defhandle_special_occactions(plus_minus,multiply_and_dividend):12 #有时会出现这种情况 , ['-', '-'] ['1 ', ' 2 * ', '14969036.7968254'],2*...后面这段实际是 2*-14969036.7968254,需要特别处理下,太恶心了'''
13 for index,i inenumerate(multiply_and_dividend):14 i =i.strip()15 if i.endswith("*") or i.endswith("/"):16 multiply_and_dividend[index] = multiply_and_dividend[index] + plus_minus[index] + multiply_and_dividend[index+1]17 del multiply_and_dividend[index+1]18 delplus_minus[index]19 returnplus_minus,multiply_and_dividend20
21 defremove_jia(formula):22 formula = formula.replace("++","+")23 formula = formula.replace("+-","-")24 formula = formula.replace("-+","-")25 formula = formula.replace("--","+")26 formula = formula.replace("- -","+")27 returnformula28
29
30 defcompute_mutiply_and_dividend(formula):31 operators = re.findall("[*/]", formula )32 calc_list = re.split("[*/]", formula )33 t_res =None34 for index,item inenumerate(calc_list):35 item=item.strip()36 if t_res: #代表不是第一次循环
37 if operators[index-1] == '/':38 t_res /=float(item)39 if operators[index-1] == '*':40 t_res *=float(item)41 else:42 t_res =float(item)43 print("乘除结果为:",t_res)44 return(t_res)45
46 defcompute(formula):47 #计算不带括号的算式
48 formula=formula.strip('()')49 formula=remove_jia(formula)50 plus_minus=re.findall(r'[+-]',formula)51 multiply_and_dividend = re.split("[+-]", formula)#去除乘除的公式
52 if len(multiply_and_dividend[0].strip()) == 0:#代表这肯定是个负号
53 multiply_and_dividend[1] = plus_minus[0] + multiply_and_dividend[1]54 delmultiply_and_dividend[0]55 delplus_minus[0]56
57 plus_minus,multiply_and_dividend=handle_special_occactions(plus_minus,multiply_and_dividend)58
59 for index,i inenumerate(multiply_and_dividend):60 if re.search("[*/]",i):61 sub_res =compute_mutiply_and_dividend(i)62 multiply_and_dividend[index] =sub_res63
64 print(multiply_and_dividend, plus_minus)65 total_res =None66 for index,item inenumerate(multiply_and_dividend):67
68 if total_res: #代表不是第一次循环
69
70 if plus_minus[index-1] == '+':71 total_res +=float(item)72 if plus_minus[index-1] == '-':73 total_res -=float(item)74
75 else:76 total_res =float(item)77 print('算式%s计算结果为:'%formula,total_res)78 return(total_res)79
80
81
82 defcale(formula):83 #主要逻辑,先算括号里的值,再算乘除,再算加减
84 parenthesise_flag=True85 sub=None86 sub_res=087 whileparenthesise_flag:88 m=re.search('\([^()]*\)',formula)89
90 ifm:91 m=m.group()92 print(m)93 #print('先算括号里',m)
94 sub_res=compute(m)95 print(sub_res)96 formula=formula.replace(m,str(sub_res))97 else:98 print('没有括号了')99 #formula=formula.replace(m.group(),str(sub_res))
100 print(formula)101 sub=compute(formula)102 #print '计算结果为:',sub
103 parenthesise_flag=False#算式中的括号都已经被剥除了
104 res="1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))"
105 #res='1+2*(3+4)'
106 res=cale(res)107
108
python 设计简易计算器_python小项目——实现简易的计算器相关推荐
- python计算银行余额_Python 小案例实战 —— 简易银行存取款查询系统
Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...
- python编程工时计算_Python小项目——工时计算
项目二:工作量计算器 要求 要求 分析过程 已知信息:标准的项目,需要1个人用80工时完成(1个人做10天) 计算方式1:工时计算 输入:项目大小(浮点型,代表标准大小的倍数).人数(整数) 输出:工 ...
- python商品会员打折_Python微项目分享之双十一优惠计算器
作者:JiawuZhang 出品:JiawuLab(ID:jiawulab)微项目系列是JiawuLab原创栏目,每期选取一个自创项目或发现有趣的项目,进行代码.逻辑分析,达到python学习目的. ...
- android计算器开源小项目代码(附安装包.apk)
最近在学习安卓开发,做了个小计算器作为实践.发现网上的计算器教程代码的健壮性不够好,只能够容忍正确的输入.于是我花了几天时间写了个完整的程序.可能是我水平有限,其中条件控制逻辑设计的比较复杂,但我受开 ...
- django不修改数据库创外键_python小项目使用django的数据库模型
有时开发一个小项目并不想启动服务,只是在本地运行,但是又有一些数据存储的需求,打算使用数据库.如果直接采用数据库sql语句接口进行操作显得非常麻烦,而且容易出错.现在比较主流的web框架django的 ...
- python switch_从邮箱验证小项目说python字符串判断与if判断那些事儿
好了,接下来依旧是我不务正业的蹭课做的小项目.string.find这个函数真的好用啊!另外python没有switch结构真的难受.... IPO分析 代码 ad 首先要注意的是string.fin ...
- python数据获取及预处理_Python小练习——电影数据集TMDB预处理
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: IvanFX 复兴计算机社团 转载地址 https://blog. ...
- 用python设计一个简单的计算器_Python之实现一个简易计算器 用re
1 #-*- coding:utf-8 -*- 2 importre3 4 ###############################################清洗,格式化字符串###### ...
- python tkinter计算器实例_python小实例——tkinter实战(计算器)
1 importtkinter2 importmath3 importtkinter.messagebox4 5 classcalculator:6 #界面布局方法 7 def __init__(se ...
最新文章
- 导入Flex/Flash项目后的一个简单错误:无法创建 HTML 包装器
- 使用CInternetSession获取utf-8页面中文乱码问题解决方法
- arm linux gnueabi编译,交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
- C/C++中退出线程的四种解决方法
- python中如何定义颜色_Python图像处理之颜色的定义与使用分析
- linux 杀死脚本,linux – 如何在Bash脚本被杀死时杀死当前命令
- UIWindow的windowLevel详解
- Spring MVC异常处理 - @ ControllerAdvice,@ ExceptionHandler,HandlerExceptionResolver
- 【C语言】创建一个函数,将输入的2个数排序
- 算法工程师面试备战笔记12_决策树
- Bailian3703 寻找平面上的极大点【最值】
- wince6.0升级7.0系统_一个WINCC项目升级的案例分享
- php 小写数字转大写,php 小写数字怎么转大写
- 华为CE交换机下载文件FTP步骤
- bochs运行xp_bochs安卓最新版下载
- vue中pdf预览组件_基于vue的pdf预览组件
- win7系统使用高版本node.js
- elasticsearch 从 _source 与 stored_fields 获取数据不一致?
- Moles(笛卡尔树 Z Algorithm)
- 【经典面试题】小程序与H5、APP、公众号的区别到底是什么?
热门文章
- R语言数据挖掘实战系列(4)
- 如何不显示地图就获取位置数据?
- JavaScript权威指南 - 数组
- 基于Jenkins 快速搭建持续集成环境
- 使用Axis,在webservice的服务器端如何取到客户端的IP地址
- extern “C“那些事
- stm32 工业按键检测_STM32单片机按键消抖和FPGA按键消抖大全
- mysql 库名大小写_MySQL 库名、表名、字段名区分大小写吗???
- java 关闭中断_Raspberry pi使用中断方法关闭(关闭时出现垃圾代码)
- winsock编程:关于因为头文件而报错的问题