组合计算器
Posted 小仙女~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合计算器相关的知识,希望对你有一定的参考价值。
面向对象的组合
- 组合:一个类的对象是另一个对象的属性
# 学生类 姓名,性别,年龄,学号,班级,手机号
# 班级信息
# 班级名字 开班级时间 当前讲师
class Student:
def __init__(self,name,sex,age,number,clas,phone):
self.name=name
self.sex=sex
self.age=age
self.number=number
self.clas=clas
self.phone=phone
class Clas:
def __init__(self,cname,beging,teacher):
self.cname=cname
self.beging=beging
self.teacher=teacher
py22=Clas(\'python\',\'2019-4-26\',\'xiaoliu\')
py23=Clas(\'python\',\'2019-5-26\',\'xiaowu\')
敏敏=Student(\'敏敏\',\'male\',18,27,py23,\'13835787011\')
小童=Student(\'小童\',\'male\',18,17,py22,\'13835787022\')
# 查看敏敏所在班级的开班日期 (把班级信息当作参数传入学生类)
print(敏敏.clas.beging)
# 查看小童所在班级的开班日期
print(小童.clas.beging)
class Clas:
def __init__(self,cname,beging,teacher):
self.cname=cname
self.beging=beging
self.teacher=teacher
class Course:
def __init__(self,name,period,price):
self.name=name
self.period=period
self.price=price
python=Course(\'python22\',10,\'20000\')
Linux=Course(\'Linux57\',6,\'15000\')
py22=Clas(\'python22\',\'2019-4-26\',\'xiaoliu\')
Lin57=Clas(\'Linux57\',\'2019-5-26\',\'xiaowu\')
Lin58=Clas(\'Linux57\',\'2019-5-26\',\'xiaowu\')
# 修改linux的价格为30000
Linux.price=30000
# 要求查看 Linux57期班级所学课程的价格
Lin57.cname=Linux
print(Lin57.cname.price)
Lin58.cname=Linux
print(Lin58.cname.price)
# 要求查看 python22期班级所学课程的周期
py22.cname=python
print(py22.cname.period)
计算器
思路:
- 先算乘除
- 进行正则匹配,计算两个数的乘法或除法
- 切割*/两边的数字,然后进行计算
- 把计算得到的结果在原计算公式中进行替换,后循环继续进行计算表,知道没有乘除之后退出
- 后计算加减
- 把计算完惩处之后剩余的公式进行正则匹配,得到[\'1\', \'+2\', \'+3\', \'+4.6\']
- 使用reduce进行累加
- 把计算完惩处之后剩余的公式进行正则匹配,得到[\'1\', \'+2\', \'+3\', \'+4.6\']
import re
def mul_dic(exp):
#"3*4" "5/6"
if "*" in exp:
a,b=exp.split(\'*\')
return float(a)*float(b)
if "/" in exp:
a,b=exp.split(\'/\')
return float(a) / float(b)
from functools import reduce
suan=input(\'请输入算法:\')
def remove_muldiv(exp):
while True:
ret = re.search(\'\\d+(\\.\\d+)?[*/]-?\\d+(\\.\\d+)?\', exp) #只匹配乘法或除法
if ret:
son_exp=ret.group()
# print(son_exp)
res=mul_dic(son_exp)
exp=exp.replace(son_exp,str(res)) #将得到的结果和之前的数字进行替换
else:
break
return exp
exp=remove_muldiv(suan)
print(exp)
# 格式整理
def emp_fmt(exp):
while re.search(\'[+-]{2,}\',exp):
exp=exp.replace(\'--\',\'+\')
exp=exp.replace(\'+-\',\'-\')
exp=exp.replace(\'-+\',\'-\')
exp=exp.replace(\'++\',\'+\')
return exp
exp=emp_fmt(exp)
print(exp)
# 方式二
def remove_addsub(exp):
ret = re.findall(\'[+-]?\\d+(?:\\.\\d+)?\', exp)
print(ret)
res=reduce(lambda a,b:float(a)+float(b),ret)
return res
s=remove_addsub(exp)
print(s)
# 方式一
# def remove_addsub(exp):
# ret = re.findall(\'[+-]?\\d+(?:\\.\\d+)?\', exp)
# count=0
# for i in ret:
# count+=float(i)
# return count
# s=remove_addsub(\'1+2+3+4.6\')
# print(s)
以上是关于组合计算器的主要内容,如果未能解决你的问题,请参考以下文章