python中四则运算符号_实现一个【伪】四则运算封闭的符号运算和求解

最后的效果:

if __name__ == '__main__':

import doctest

doctest.testmod()

x = Symbols("x")

print(x * 2 + 1 == 8.0 * x + 6).solution

打印:

{'x': -0.8333333333333334}

这里用了8.0是因为众所周知的Python2.7+,对于整数除法用的是整除,3/2=1什么的,Python3后来有用//这个操作符的,这里不是重点,不用管

昨天快下班的时候事情做完了,于是开始划水,看到sympy是个符号运算的库,我就在想要是让我实现该有多难呢。。感觉真是非常适合新手/高中生的一个题目呢~

好吧,那么我们从四则运算封闭的符号系统做起~

下班后先写了一点,然后吃饭的时候构思了一下,写完啦。今天又补了一点求解一元一次方程。。。

学到的是

数学方面,符号对四则运算封闭的话,需要额外的两个参数:1、系数,2、次数。例如系数是2,次数是3。发现这个问题之后,果断摒弃了次数。最后实现的符号运算,符号与实数对四则运算封闭,符号与符号对加减封闭(多么偷懒啊哈哈哈哈~原谅我没文化)

Python上,知道了doctest的通过单元测试要实现__repr__方法。

不然在写文档测试时:

"""

>>> Symbols("x",2) / 4.0

Symbols("x",0.5)

"""

会报如下错误

Failed example:

Symbols("x",2) / 4.0

Expected:

Symbols("x",0.5)

Got:

丢一个不知道能不能让爬虫爬到。关键词:doctest class test

还有知道了a+1重载__add__方法,而1+a并不需要重载Int,直接重载a的__radd__就行了。。

多元一次方程的话。。想了想感觉还是挺啰嗦的,就算了。。。

加上次数,感觉要涉及高数了。。。做起来好啰嗦。。

积分。。。阿西BUG,高数忘光了。如果我真的能有机会做的话

代码:https://gist.github.com/zjjott/0eb6ff1947cd213dd70a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值