我试着自己做一个简单的方程求解器,可以解决(3*x-4=7+2*x)这样的问题。用户将输入一个方程式,程序将方程式分成两部分,在一个循环中,它将用相同的数字替换两边的x。程序将检查等式的两边是否相等,并打印答案。以下是脚本:
equation=input("Write an equation (variable is x): ")
side1 = equation[:equation.index("=")]
side2 = equation[equation.index("=")+1:]
for i in range(1000):
side1=side1.replace("x", str(i+1))
side2=side2.replace("x", str(i+1))
if eval(side1)==eval(side2):
print("x = %s"%i)
这不是我的完整计划的程序,我正要升级它,但我发现这个程序不工作这么好。当我输入一个方程式时,程序不会打印答案,也不会出现任何错误 我要知道这里有什么漏洞
在循环中,每次调用:
您正在覆盖原始的边变量。所以下次循环运行时,当它替换字符串中的“x”时,就不再有任何“x”字符了。替换将只发生一次
例如
您应该做的是,为更改后的
side1
和side2
版本使用不同的临时变量编辑
代码片段的其他问题:
最后一行应该是
print("x = %s" % (i+1))
,因为您在替换中使用了i+1
。否则,当使用x=11
为ex求解方程时,它将打印x=10
相反,如果您不想担心何时需要
i + 1
与i
,您可以将range调用改为range(1,1000)
,这样它就以i = 1
而不是i = 0
开头了相关问题 更多 >
编程相关推荐