python解一元一次方程
- 将未知数看成是虚数
- 将常数看成是实数
- 最终求解。
import re class Item:
def __init__(self,imag=0,real=0):
self.imag = imag
self.real = real
def __str__(self):
return format("(%.6f : %.6fX)")%(self.real,self .imag)
def __repr__(self):
return self.__str__()
def _calc(a,b,op):
if op == '+':
a.imag += b.imag
a.real += b.real
return a
elif op == '-':
a.imag -= b.imag
a.real -= b.real
elif op == '*':
if b.imag == 0:
a.imag *= b.real
a.real *= b.real
else:
a.imag,a.real,b.imag,b.real= b.imag,b.real,a.imag,a.real
a.imag *= b.real
a.real *= b.real
elif op == '/':
if b.real== 0:
raise Exception
a.imag /= b.real
a.real /= b.real
return a
def calculate(list):
def _ca(oplist,nulist,i,stop,opers):
op = oplist[-1]
while op in opers:
first,second = nulist[-2:]
_calc(first,second,op)
del nulist[-1]
del oplist[-1]
if len(oplist):
op = oplist[-1]
else:
op = stop
else:
oplist.append(i) oplist = []
nulist = []
for i in list:
if isinstance(i,str):
if i == '(':
oplist.append(i)
elif i in '+-':
if len(oplist):
_ca(oplist,nulist,i,"(","+-*/")
else:
oplist.append(i)
elif i in "*/":
if len(oplist):
_ca(oplist,nulist,i,"(","*/")
else:
oplist.append(i)
else:
if len(oplist):
_ca(oplist,nulist,i,"stop","+-*/")
del oplist[-1]
del oplist[-1]
else:
nulist.append(i)
_ca(oplist,nulist,i,"stop","+-*/")
return nulist[0]
if __name__ == "__main__":
# data = "((-3x))=9-9+2*x"
# data = "((-1+2x)/3)-(7+(8-9))*(1/2) = 5x + (3x-2)"
# data = "2x=10"
data = "(((4x)))=5+1x"
data = " "+re.subn("\\s+|=(.*)",lambda obj:"-(%s)"%obj.groups(1) if '=' in obj.group() else "",data)[0] regex = re.compile("(?<=[-+*/( ])-?\\d+x|(?<=[-+*/( ])-?\\d+|[-+*/()x]")
data = re.findall(regex,data)
calclist = []
for i in data:
if re.fullmatch("-?\\d+",i):
calclist.append(Item(real=int(i)))
elif re.fullmatch("-?\\d+x",i):
calclist.append(Item(imag=int(i[:-1])))
elif i == "x":
calclist.append(Item(imag=1))
else:
calclist.append(i)
result = calculate(calclist)
print(-result.real/result.imag)
来源:http://www.1994july.club/seo/?p=1703
python解一元一次方程的更多相关文章
- 用Python解方程
一元一次方程 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码如下,每一句代码后面都写有解释语: ...
- C++第9周(春)项目5 - 一元一次方程类
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目5]设计一元一次方程类.求形如ax+b= ...
- python 解压 压缩包
转 http://m.blog.csdn.net/blog/wice110956/26597179# 这里讨论使用Python解压如下五种压缩文件: .gz .tar .tgz .zip .rar ...
- java练习题:解一元二次方程、判断闰年、判断标准身材、三个数取最大值
1.解一元二次方程 注:求根公式为(-b+根号德尔塔)/2a,(-b-根号德尔塔)/2a Scanner sc=new Scanner(System.in); System.out.println(& ...
- python解无忧公主的数学时间编程题001.py
python解无忧公主的数学时间编程题001.py """ python解无忧公主的数学时间编程题001.py http://mp.weixin.qq.com/s?__b ...
- python解无忧公主的数学时间097.py
python解无忧公主的数学时间097.py """ python解无忧公主的数学时间097.py codegay 2016年3月30日 00:17:26 http:// ...
- python解无忧公主数学题107.py
python解无忧公主数学题107.py """ python解无忧公主数学题107.py http://mp.weixin.qq.com/s?__biz=MzI5ODE ...
- python解无忧公主数学题108
""" python解无忧公主数学题108回文.py 题目来源: http://mp.weixin.qq.com/s?__biz=MzI5ODEwMDQyNw==& ...
- POJ 2891 Strange Way to Express Integers (解一元线性方程组)
求解一元线性同余方程组: x=ri(mod ai) i=1,2,...,k 解一元线性同余方程组的一般步骤:先求出前两个的解,即:x=r1(mod a1) 1x=r2(mod a2) ...
随机推荐
- 在开发过程中遇到的Oracle的坑及开发技巧
本人与2018年毕业,工作一年多,仍是菜鸟,自毕业以来一直从事java软件开发工作,工作中大部分数据库都是使用的Oracle,碰到的问题总结一下(随时更新). 1.sql中使用group by 分组时 ...
- 给vector对象添加元素的方法
#include<iostream> #include<vector> using namespace std; int main() { //初始化10个元素,每个值都为0 ...
- Mac OS/Windows好用软件分享
下软件全部为破解版,仅供参考学习用,如涉及商业. 请支持正版!谢谢 全部为本人亲测过 看上哪个留言发给你! 直接全分享上来会有人居心不良!
- 设置MySQL客户端连接使用的字符集
设置MySQL客户端连接使用的字符集 时间:2014-03-05 来源:服务器之家 投稿:root 考虑什么是一个"连接":它是连接服务器时所作的事情.客户端发送SQL ...
- 【每日Scrum】第三天冲刺
一.计划会议内容 登录和个人主界面开发布局实现. 二.任务看板 三.scrum讨论照片 四.产品的状态 登录与个人界面布局实现 五.任务燃尽图
- SQL server 查询常用语句 2019.3.20
SQL查询语句 select ...列名 from 表名 投影查询 select sno num,2019-sage as birthday // 给列起别名 from student: 在每个学生姓 ...
- apache安装和mysql php配置问题
apache下载和安装: 下载网址:http://httpd.apache.org/ 然后 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ...
- 基于表单的web暴力破解
暴力破解 概述 连续性尝试+字典+自动化 如果一个网站没有对登录接口实施防暴力破解的措施,或者实施了不合理的措施,则该网站存在暴力破解漏洞. 是否要求用户设置了复杂的密码 是否每次认证都是用安全的验证 ...
- idea使用eclipse风格
说明,只是代码编辑区采用eclipse风格,其他用的是idea的IntelliJ(白色风格) 1.下载文件 2.配置
- UML-GRASP总结
对象设计的核心 1).对象交互 2).职责分配