求解一元一次方程的正整数解(Python版本)

eq = input()
eq1 = eq.replace("=","-(") + ")"
c = eval(eq1, {‘X‘: 1j})
print(int(-c.real/c.imag))

例如:solve("x - 2x + 5x - 46(235-24) = x + 2") 下面就来解读下代码吧。 首先是第一行(除input()),它将等式进行了变形,生成了一个结果为0的算式 “x - 2x + 5x - 46(235-24) -( x + 2)”。

第二行用eval来执行这个算式,并将x = 1j代入算式,结果是-9708+3j。

注意x = 1j,所以这个方程就化简为“-9708+3x = 0”了,只要将-(-9708) / 3就能得到x了。

而-9708是这个复数的实部,3是这个复数的虚部,于是结果变成了“-c.real/c.imag”。

因此很显然,这个函数是不能解复数方程的。

原文地址:https://www.cnblogs.com/cassielcode/p/12604650.html

时间: 2024-10-18 21:39:34

求解一元一次方程的正整数解(Python版本)的相关文章

(转)Python的“黑暗魔法”,两行解一元一次方程

无意看到一个大神写的<Linear equations solver in 3 lines (Python recipe)>,Python解一元一次方程只需要三行就完成了,确实很强悍啊. 我们来围观一下: 说到底呢,这个段代码的关键是利用了复数. 第一步: 2 * x + 233 = x * 8 + 3 变成 2 * x + 233 -(x * 8 + 3) 然后把x变成虚数1j 然后变成 2 * 1j + 233 -(1j * 8 + 3) 通过eval算出结果为230-6j 因为我们知道这

扩展欧几里德求解ax + by = c 的 最小正整数解 ( x, y)

转自: https://blog.csdn.net/qq_38177302/article/details/78449982 第一步 : 给出方程 ax + by = c . 第二步 : 算出 辗转相除法 gcd(a, b) . 第三步 : 运用 扩展欧几里德 ex_gcd(a, b)-> ax + by = gcd(a,b) 的 一组解(x, y) . 第三步: 根据 c % gcd(a, b) 判断是否 ax + by = c 有解 . 第四步 : 根据 ax + by = c 的通解公式

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

Python实现3行代码解简单的一元一次方程 class Solution(object): def exec(self, equation): vars = None eqList = list(equation) denth = 0 for i,each in enumerate(equation): if each in "abcdefghijklmnopqrstuvwxyz": vars = each if i == 0: continue if equation[i-1] i

Mac下切换Python版本

Mac下有多个版本的Python时,需要进行版本切换.我使用的是anaconda,在终端下进行包安装时,默认Python版本是MacOS自带的Python,需要进行手动的版本切换. # 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc # 更新bashrc以立即生效 source ~/.bashrc 以我主机为例,切

LInux升级Python版本2.7.11所遇问题汇总

首先请原谅我使用校园网络,基本上打不开谷歌,网络搜取得帮助均来自度娘. 对于我这个linux新手 IT 新手来说,自己升级点东西好担心,万一出错,可能都要重来.... 参照度娘内容和自己摸索,今天晚上的升级以成功结束 哈哈哈 一.我需要把升级Linux里Python版本为2.7.11,度娘一艘,都是各种直接弄好的下载链接,发现了各种复制来复制去的内容,找来找去没找到2.7.11,所以转到了官网www.python.org 首页就可以看到download里最新的2.7.11,点进去,需要的就是最上

解一元一次方程

实际问题与一元一次方程 一般步骤:1.审.审清题意,   2.设.设未知数   3.列.根据等量关系列方程   4.解.解方程   5.答.写出答案 解一元一次方程一般步骤:   1.去分母   2.去括号   3.移项   4.合并同类项   5.化系数为1 题1:有一批零件加工任务,甲单独加工需要20小时,乙单独加工需要10小时,甲加工了一部分后另有任务,剩下的任务由乙单独完成,乙比甲少加工了5小时,求甲加工了几个小时? 设 甲加工了  (x+5)小时 乙加工了 x小时 x/10 + (x

更新centos系统的python版本

因今天安装一程序需要用到python高版本,所以升级来系统自带的python. 先查询下系统的python版本是多少. #python -V 显示出来的是2.4.3,太老了,现在升级到比较稳定的版本3.3.0,大家想升级到最新版本可以参考官方网站(https://www.python.org/downloads/). 温馨提示:更新python千万不要把老版本的删除!新老版本是可以共存的,很多基本的命令.软件包都要依赖预装的老版本python的,比如yum. 现在就开始升级操作,在此之前为了防止

在centos中部署多个python版本

使用pyenv+virtualenv方式部署python多版本 pyenv vs virtualenv pyenv 是针对 python 版本的管理,通过修改环境变量的方式实现: virtualenv 是针对python的包的多版本管理,通过将python包安装到一个模块来作为python的包虚拟环境,通过切换目录来实现不同包环境间的切换. pyenv 原理 pyenv 的美好之处在于,它并没有使用将不同的 $PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 $PATH 的最

2.将python版本改为2.7的方法

1.首先查看当前python的版本 [[email protected] ~]# python -V Python 2.6.6 2.解压2.7版本的python源码包 tar xf Python-2.7.tar.bz2 cd Python-2.7 ./configure --prefix=/usr/local/python2.7 make && make install 3.检查安装结果 [[email protected] ~]# /usr/local/python2.7/bin/pyt