作为赋值的一部分,我创建了一个接受字符串的函数,它是一个等式。下面是一个例子:48+6x6/3=6x8-9x2。compute函数获取等号的一侧并对其求值。我不太关心方程的分裂。我相信我可以用s[:s.find("=")]来切片。在
我的主要问题是计算函数本身。我将张贴到目前为止我所处的位置。被注释掉的部分是我试图处理的两位数,但我无法找到一个合乎逻辑的方法来做到这一点。我需要一些帮助来考虑这个问题。在
因为“不容易评估”这句话,所以不应该使用。我的程序不应该遵守正常的运算符优先规则。相反,它应该纯粹从左到右进行计算。在def compute(s):
result = 0
a = 1
for a in range(len(s)):
#while s[a].isdigit():
#result = (result * 10) + int(s[a])
#a += 1
if s[a] == '/':
result = result / int(s[a + 1])
elif s[a] == '+':
result = result + int(s[a + 1])
elif s[a] == 'x' or s[a] == '*' or s[a] == 'X':
result = result * int(s[a + 1])
elif s[a] == '-':
result = result - int(s[a + 1])
else:
result += int(s[a])
a += 1
return result
print(compute("48+6x6/3") == 108)
编辑此项仅适用于个位数。也许我们可以用多个数字来处理这个问题
^{pr2}$