求解字符串时 Eval 函数不起作用

Eval function not working when solving for a string

提问人:Nekomane 提问时间:9/13/2023 最后编辑:Nekomane 更新时间:9/13/2023 访问量:20

问:

我正在创建一个数学计算器,它使用字符串拼接将变量替换为各自的值。一旦我用变量代替了等式的两边,每当尝试计算表达式时,我都会收到一个错误。(给定代码中的值,它应该打印 26。( 35 - 3(3) = 26 )

def apply_x(x, LHS):
    for i in range(len(LHS.strip())):
        if LHS[i] == 'x':
            output = LHS[0:i] + '(' + x + ')' + LHS[i+1:len(LHS)]
            for i in range(len(output.strip())):
                if output[i] == 'x':
                    output = output[0:i] + '(' + x + ')' + output[i+1:len(output)]  
    return str(output)


equation = '35 - 3x = -8x - 5(5 - 5x)'
index = equation.find('=')
LHS = equation[0:index] # Left Hand Side
RHS = equation[index + 1:len(equation)] # Right Hand Side
x = 3
LHS_int = apply_x(str(x), LHS)
RHS_int = apply_x(str(x), RHS)
print('Original: '+equation)
print('Subbed: ' + LHS_int + '=' + RHS_int)
print('\nLHS Original: ' + str(LHS.strip()))
print('LHS Subbed : ' + LHS_int.strip())
print('RHS Original: ' + str(RHS.strip()))
print('RHS Subbed: ' + RHS_int.strip())

'''
I want the code to solve each side and check to see if 
The Equation is true/false .
'''

python-3.x 字符串 数学 代数

评论

1赞 Beulah Evanjalin 9/13/2023
LHS_int应为“35 - 3*(3)”。 在 Python 中不是有效的参数3(3)
0赞 Nekomane 9/13/2023
我用星号替换了括号,它起作用了,谢谢!
0赞 Laideen 9/13/2023
我没有尝试过您的代码,但乍一看,我看到您在 apply_x 的两个 for 循环中使用了相同的索引。这往往是一个坏主意。
0赞 Nekomane 9/13/2023
@Laideen我修复了它,我没有正确编写方程式,因为 python 不会自动乘以括号,我缺少星号。但是谢谢!我一定要注意,如果我再有问题

答: 暂无答案