我一直在努力制作一个简单的脚本来解决变量(例如:在x + 2 = 10中查找x)。我遇到了很多麻烦,直到我偶然发现了一个使用虚数来求解变量的函数。我玩弄了一些并学到了一些,但我希望它现在可以解决两个变量。这是我的计划的主要想法:
def solve(eq,var1='x', var2='y'):
if '+' in eq:
try:
eq1 = eq.replace("=","-(")+")"
eq2 = eq1.replace('+','-')
print eq1
print eq2
c = eval(eq2,{var1:1j},{var2:1j})
print c
c = -c.real/c.imag
eq3 = eq1.replace('x',str(int(c)))
eq4 = eq3.replace('y',str(int(c)))
eq5 = eq4.replace('-(', '=')
eq6 = eq5.replace(')','')
if eq6 == True:
print 'test1'
print eq6
else:
print 'oops1'
print eq6
程序中的其他所有内容都在补偿不同的方程式。我无法确定等式是否已解决(eq6 == True)。有什么建议?或者我犯过的错误?
答案 0 :(得分:1)
要测试表达式是否为true,您需要对其进行评估。例如:
> '1 + 1 == 2' == True
False
> eval('1 + 1 == 2') == True
True
此外,您还需要确保在评估时使用==
代替=
。如果我更改代码的结尾,如:
eq7 = eq6.replace('=', '==')
if eval(eq7) == True:
print 'test1'
print eq7
else:
print 'oops1'
print eq7
并尝试
solve('x + 2 = 10')
我得到了
x + 2 -( 10)
x - 2 -( 10)
(-12+1j)
oops1
12 + 2 == 10
虽然仍然不是你想要的,但是更多的是在正确的轨道上。