【发布时间】:2014-09-27 16:53:58
【问题描述】:
我正在尝试制作一个接受用户方程的 python 程序,例如:“168/24+8=11*3-16”,并尝试通过从用户输入中删除任意 2 个字符来使方程的两边彼此相等.这是我目前所拥有的:
def compute(side):
val = int(side[0])
x= val
y=0
z=None
for i in range(1, len(side)-1):
if side[i].isdigit():
x= (x*10)+ int(side[i])
if x == side[i].isdigit():
x= int(side[i])
else:
op = side[i]
if op=="+":
val += x
elif op == "-":
val -= x
elif op == "*":
val *= x
else:
val /= x
return print(val)
我已经编辑了我的计算函数。
def evaluate(e):
side1 = ""
side2 = ""
equalsign = e.index("=")
side1= e[:equalsign - 1]
side2= e[:equalsign + 1]
if compute (side1) == compute(side2):
return True
else:
return False
def solve():
# use a for loop with in a for loop to compare all possible pairs
pass
def main():
e= input("Enter an equation: ")
evaluate(e)
main()
对于实际的solve 函数,我想测试等式每一侧的所有可能对,并在删除每一对后检查等式是否等于另一侧。我正在考虑使用for 循环,它说:
for i in side1:
j= [:x]+[x+1:y]+[y+1:]
if compute(j)==compute(side2):
val= compute(j)
return val
我该怎么做呢?我对如何真正处理这个程序有点困惑。
【问题讨论】:
-
我可以为此提供一些输入和预期输出吗?
-
假设用户输入方程 168/24+8=11*3-16 程序检查一侧是否等于另一侧,15=17,因为它认为程序从用户输入使两边相等,18/2+8=11*3-16,因为 6 和 4 已被删除,所以等式现在等于 17=17
-
呸!没有我想象的那么简单!
标签: python string-parsing python-3.4