Python 自动打印公式和中间计算步骤

Python 自动打印公式和中间计算步骤,python,Python,我想知道是否有一种相对简单的方法来打印变量,以及计算该变量值时使用的中间步骤。例如,假设我有以下代码: a=5输入 b=10输入 c=2*b d=b*c 我试图找到一种简单的方法来打印以下内容,而无需硬编码f字符串: c=2*b=2*10=20 d=b*c=10*20=200 我们的目标是以这种方式打印方程式,这样程序的输出就可以很容易地检查,我想确保输出与程序实际计算的方程式相匹配。我需要以这种方式输出许多方程,并且使用f字符串进行输出似乎不太符合Python,并且可能会引入一些错误。我已经看

我想知道是否有一种相对简单的方法来打印变量,以及计算该变量值时使用的中间步骤。例如,假设我有以下代码:

a=5输入

b=10输入

c=2*b

d=b*c

我试图找到一种简单的方法来打印以下内容,而无需硬编码f字符串:

c=2*b=2*10=20

d=b*c=10*20=200

我们的目标是以这种方式打印方程式,这样程序的输出就可以很容易地检查,我想确保输出与程序实际计算的方程式相匹配。我需要以这种方式输出许多方程,并且使用f字符串进行输出似乎不太符合Python,并且可能会引入一些错误。我已经看到有一些可用的符号数学包,但我不打算这样做,因为实现它们会使程序的其他方面变得复杂。

您可以使用它们的值替换变量名,然后求值,以便计算结果表达式:

import re

def print_and_eval(equation, variables):
    target, expr = equation.split('=')
    literal = re.sub('[a-z]', lambda m: str(variables[m.group(0)]), expr.strip())
    result = eval(literal, {'__builtins__': {}}, None)
    print(f'{equation} = {literal} = {result}')
    variables[target.strip()] = result
    return variables
用法示例:

variables = print_and_eval('a = b * c', {'b': 5, 'c': 10})

更紧凑的代码,但与@a_guest的想法类似:

def check_compute(x,y,operation):
    print(f'{x} {operation} {y} = { eval(str(x) + operation + str(y))}')
    return eval(str(x) + operation + str(y))

r = check_compute(2,3,'+')
2 + 3 = 5
r
5

我根本不遵守你的要求。a=b*c=5*10=50对什么有用?它不检查输出,只是不正确地列出输入,因为分配会搞砸。。。如果原始帖子不清楚,你会以编程的方式写下你自己。我对它进行了编辑,以便更好地说明这个问题。我指的是动机,而不是要求。计算机所采取的步骤完全由代码本身记录,100%。您要查找的输出没有,因为它没有按正确的顺序显示分配。如果您想确保计算机正确处理您的逻辑,那么您通常需要对输入值进行单元测试,并进行检查以确保它提供预期的输出。动机是为用户创建报告,而不是亲自检查代码