首页 / PYTHON / python-24:四则计算器
python-24:四则计算器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-24:四则计算器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3271字,纯文字阅读大概需要5分钟。
内容图文
![python-24:四则计算器](/upload/InfoBanner/zyjiaocheng/844/6662c3e9201849e893bb04bf6fdc716e.jpg)
import re
def input_check(): # 算式输入检测审
while True:
s=input('输入算式或退出(Q)--->>')
# 1.除去空格
s = s.replace(' ', '')
if s[0]=='Q':
exit('正常退出')
# 2.检测是否含有非法字符,除数字、括号、+-*/以外的任何符号
elif re.findall('[^\d()\-*/+\.]', s):
print('---->算式含有非法字符,重新输入或退出(Q)')
continue
# 3.检测左右括号是否匹配
elif not s.count('(') == s.count(')'):
print('---->算式括号不匹配,重新输入或退出(Q)')
continue
# 4.检测分母是否为0
elif re.findall('/[+-]?\d+\.?\d*', s):
rz=re.findall('/[+-]?\d+\.\d*', s)
flag=False
for i in rz:
if float(i[1:-1])==0:
print('---->算式分母为0,重新输入或退出(Q)')
flag=True
break
if flag:
continue
#5.运算符号格式化
s=format_symbol(s)
return s
def format_symbol(s): #符号检测,格式化
s=re.sub('\+\+|--','+',s)
s=re.sub('\+-|-\+','-',s)
s=re.sub('[+\-*/]\*','*',s)
s=re.sub('[+\-*/]/','/',s)
return s
def mul_div(s): # 计算单个乘除
if '*' in s:
a,b=s.split('*')
t=float(a)*float(b)
else:
a,b=s.split('/')
t=float(a)/float(b)
return str(t)
def add_sub(s): #计算只有加减运算的算式总和
ls=re.findall('[+\-]?\d+\.?\d*',s)
exp_sum=0
for i in ls:
exp_sum+=float(i)
return str(exp_sum)
def bracket(s): #先计算括号里算式
while True:
res=re.search('\([^()]*\)',s)
if res:
exp=res.group()
val=mix_cal(exp)
s=s.replace(exp,val)
s=format_symbol(s)
print('--->%s'%s)
else:return s
def mix_cal(s): #计算加减乘除混合运算'
while True:
res=re.search('\d+\.?\d*[*/]-?\d+\.?\d*',s)
if res:
exp=res.group()
val=mul_div(exp)
s=s.replace(exp,val)
s=format_symbol(s) #乘除之后要判断一次符号
else:
return add_sub(s)
def main():
s='带符号的四则计算器'
print(s.center(33,'*'))
s=input_check()
print('整理后的算式--->>%s'%s)
print('分步计算:')
exp=bracket(s) #除括号
res=mix_cal(exp) #混合运算,返回最终结果
if float(res)==eval(s):
print('计算结果:%s'%res)
else:
print('计算错误')
if __name__=='__main__':
main()
-------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
************带符号的四则计算器************
输入算式或退出(Q)--->>>? 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) )
整理后的算式--->>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))
分步计算:
--->1-2*((60-30-86.26666666666667*(-9-2-5-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))
--->1-2*((60-30-86.26666666666667*173520.88095238098)-(-4*3)/(16-3*2))
--->1-2*(-14969037.996825399-(-4*3)/(16-3*2))
--->1-2*(-14969037.996825399+12.0/(16-3*2))
--->1-2*(-14969037.996825399+12.0/10.0)
--->1-2*-14969036.7968254
计算结果:29938074.5936508
内容总结
以上是互联网集市为您收集整理的python-24:四则计算器全部内容,希望文章能够帮你解决python-24:四则计算器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。