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) ...
随机推荐
- mybatis环境搭建(eclipse,idea)
基于java配置SSM,eclipse 新建maven,web项目 .... 项目结构: jar包 pom.xml spring和DispatcherServlet上下文 public class D ...
- c++ STD Gems07
reverse.rotate.permutation #include <iostream> #include <vector> #include <string> ...
- Django xadmin图片上传与缩略图处理
基本摘要 用python django开发时,个人选中Xadmin后台管理系统框架,因为它*内置功能丰富, 不仅提供了基本的CRUD功能,还内置了丰富的插件功能.包括数据导出.书签.图表.数据添加向导 ...
- MyBatis:一对多、多对一处理
多对一的处理 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 数据库设计 CREATE TABLE `teacher` ( `id` INT( ...
- POJ 1019:Number Sequence 二分查找
Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36013 Accepted: 10409 ...
- Java算法练习——寻找两个有序数组的中位数
题目链接 题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 $O(log(m + n))$. 你可以假设 nu ...
- Python 时间 time
import time print time.strftime("%Y-%m-%d") import datetime print datetime.datetime.now() ...
- ArrayList集合的增、删、改、获取和长度
API : code: package student; import java.util.ArrayList; public class ArrayListDemo { public static ...
- 吴裕雄--天生自然 PHP开发学习:While 循环
<html> <body> <?php $i=1; while($i<=5) { echo "The number is " . $i . &q ...
- PAT-输入输出
测试样例输入方式 while...EOF型(题目没有给定输入的结束条件) while(~scanf("%s",s)) {} //等价于while(scanf("%s&qu ...