(第一次修改)
我错了我错了,我可能误会题主的意思了。
题主是否是想要那种“线性输出”?也就是例如:sqrt(x ** 2 + y ** 2) == 根号(x^2+y^2)这样的形式?(根号打不出来,见谅)
这种线性输出,我认为还是可以做到的。题主可以新建一个类,里面包含了各种运算符,并内置了一些运算法则。例如最简单的分数类:
class Fraction(object):
def __init__(self, a, b):
self.a, self.b = a, b
def value(self):
return a / b
@classmethod
def add(cls, f1, f2):
return Fraction((f1.a * f2.b + f2.a * f1.b), f1.b * f2.b) # 模拟分数加法
# main function
f1 = Fraction(2, 3) #三分之二
f2 = Fraction(3, 4) #四分之三
f = Fraction.add(f1, f2) # Fraction(17, 12) 存储的是十二分之十七
类似的,题主可以实现根式类、复数类(这个实现过了)等,理论上就能表示所有式子的线性表达式。
(原答案)
我记得sympy模块可以。我家有本书上讲到了这个模块,下附示例:
import sympy
sympy.init_printing() # 初始化
x, y = sympy.symbols('x y') # 声明x和y作为要格式化的变量
z = sympy.sqrt(x ** 2 + y ** 2)
z # 请在解释器下完成操作,直接print没有用
# Output:
# --------
# / 2 2
#/ x + y
类似于上面的输出。
如果题主装了jupyter notebook,我们可以有更“数学”的输出:
我猜题主想要后者的输出吧。后者的输出我认为在控制台下是做不到的。在控制台下,我们只能操纵一个个字符——也就是说,基本显示单位是字符。而后者这种图形,本质上还是张图片,我们把它显示到屏幕上,基本显示单位是像素点。我们在控制台下,做不到后者这样显示图片,只能用之前的那个很丑的显示凑合凑合。
如果题主强烈想要在“控制台”下显示出后者的效果,参考python的各种图形库(比如说pygame,pyqt等),用这些库在那些黑色窗口里面显示图片,看起来就像控制台的输出一样。当然这很没效率。
如果题主只是想要输出这些结果的图片,请尝试搭配PIL库或cv2库输出图片到磁盘上。
——————————————
python并不接近底层,如果题主想要输出到“控制台”上,又不想用那些第三方图形库,可以尝试用c写个操作像素点的底层dll,用ctypes引用之。
——————————————
本人以前从未想过这种问题,对此涉猎不多,才疏学浅,仅作参考。以上。