Python实现3行代码解简单的一元一次方程

yipeiwu_com6年前Python基础

本文所述实例为Python用3行代码实现解一元一次方程,代码简洁高效,具体用法如下:

>>> solve("x - 2*x + 5*x - 46*(235-24) = x + 2")
3236.0

功能代码如下:

def solve(eq,var='x'):
  eq1 = eq.replace("=","-(")+")"
  c = eval(eq1,{var:1j})
  return -c.real/c.imag

下面就来解读下代码吧。

首先是第一行,它将等式进行了变形,生成了一个结果为0的算式“x - 2*x + 5*x - 46*(235-24) -( x + 2)”。
第二行用eval来执行这个算式,并将x = 1j代入算式,结果是-9708+3j。
注意x = 1j,所以这个方程就化简为“-9708+3x = 0”了,只要将-(-9708) / 3就能得到x了。
而-9708是这个复数的实部,3是这个复数的虚部,于是结果变成了“-c.real/c.imag”。
因此很显然,这个函数是不能解复数方程的。
顺带一提,Python 2.x的/运算会使用整数除法,导致小数部分丢失,所以要获得正确结果就应该使用Python 3.x

希望本文所述实例对大家学习Python能有所帮助。

相关文章

Python中使用strip()方法删除字符串中空格的教程

 strip()方法返回所有字符从开始及字符串的末尾(默认空格字符)被去除后的字符串的一个副本。 语法 以下是strip()方法的语法: str.strip([chars]...

Python搭建代理IP池实现检测IP的方法

Python搭建代理IP池实现检测IP的方法

在获取 IP 时,已经成功将各个网站的代理 IP 获取下来了,然后就需要一个检测模块来对所有的代理进行一轮轮的检测,检测可用就设置为满分,不可用分数就减 1,这样就可以实时改变每个代理的...

python操作CouchDB的方法

本文简单讲述了python操作CouchDB的方法,分享给大家供大家参考。具体方法如下: 1.安装python couchDb库: https://pypi.python.org/pyp...

python 判断矩阵中每行非零个数的方法

如下所示: # -*- coding: utf-8 -*- # @Time : 2018/5/17 15:05 # @Author : Sizer # @Site : # @F...

python画双y轴图像的示例代码

很多时候可能需要在一个图中画出多条函数图像,但是可能y轴的物理含义不一样,或是数值范围相差较大,此时就需要双y轴。 matplotlib和seaborn都可以画双y轴图像。 一个例子:...