我正在完成代码战中的kata
给我一个类似"2 / 2 + 3 * 4 - 6"
或"2 * ( 2 * ( 2 * ( 2 * 1 ) ) )"
的字符串
我不知道如何在代码中处理()
目前我有:
class Calculator(object):
def evaluate(self, string):
# if () in s
# find most inner ()
s = string.split()
while len(s) > 1:
if ('/' in s or
'*' in s):
for i in range(len(s)):
if s[i] == '/':
s[i] = int(s[i-1]) / int(s[i+1])
s.pop(i-1)
s.pop(i)
break
elif s[i] == '*':
s[i] = int(s[i-1]) * int(s[i+1])
s.pop(i-1)
s.pop(i)
break
else:
for i in range(len(s)):
if s[i] == '-':
s[i] = int(s[i-1]) - int(s[i+1])
s.pop(i-1)
s.pop(i)
break
elif s[i] == '+':
s[i] = int(s[i-1]) + int(s[i+1])
s.pop(i-1)
s.pop(i)
break
return s[0]
除了带()
我如何处理它们,使其遵循适当的数学规则
我们非常感谢您的任何建议。 [1] :https://www.codewars.com/kata/5235c913397cbf2508000048/train/python
您可以搜索内括号,然后使用函数(称为递归)计算其内容,并重复此操作,直到没有括号为止
内括号是括号之间没有其他括号的括号
相关问题 更多 >
编程相关推荐