Python 3.x 使用python中字符串中设置的运算符顺序打印所有整数的总和

Python 3.x 使用python中字符串中设置的运算符顺序打印所有整数的总和,python-3.x,Python 3.x,如何在不使用BODMAS规则的情况下查找包含运算符“1+20/15-560*21”的字符串之和。 我的代码适用于一位数字,但当涉及到多位数字时,它就失败了 我已附上我的解决方案的一位数 var = '1+2/3-4*5/5*2' sumOfNum = var[0] ch = '+-/*' num = 0 value = '' for i in range (1,len(var)): if var[i] in ch: inte = i i = i+1

如何在不使用BODMAS规则的情况下查找包含运算符“1+20/15-560*21”的字符串之和。 我的代码适用于一位数字,但当涉及到多位数字时,它就失败了 我已附上我的解决方案的一位数

var = '1+2/3-4*5/5*2'
sumOfNum = var[0]
ch = '+-/*'
num = 0
value = ''
for i in range (1,len(var)):
    if var[i] in ch:
       inte = i
       i = i+1
       if var[inte] == '+':
          sumOfNum = int(sumOfNum) + int(var[i])
       if var[inte] == '/':
           sumOfNum = int(sumOfNum) / int(var[i])
       if var[inte] == '-':
            sumOfNum = int(sumOfNum) - int(var[i])
       if var[inte] == '*':
             sumOfNum = int(sumOfNum) * int(var[i])
print(some)
    
我已经试过并得到了结果


eval
函数计算表达式。请尝试
eval(“1+20/15-560*21”)
谢谢您的帮助,但我不想使用预定义的功能
var = '1000+12/30-4*5/15000000*220+20000-15000000*220+20000+1000+12/30-4*5/15000000*220+20000-15000000*220+20000'
some = var[0]
inte = 0
ch = '+-/*'
num = 0
value = ''
lst =[]
for i in range (0,len(var)):
    if var[i] in ch:
        inte = i
        lst.append(value)
        lst.append(var[inte])
        value = ''
    else:
        value = value+var[i]
    i+=1
lst.append(value)

def sumOfAllNum(arg1, operand, arg2):
    if operand == '+':
        sumOfVal = arg1 + arg2
    if operand == '-':
        sumOfVal = arg1 - arg2
    if operand == '*':
        sumOfVal = arg1 * arg2
    if operand == '/':
        sumOfVal = arg1 / arg2
    return sumOfVal
FinalSum = 0

sumOfVal = int(lst[0])
j = 0
for j in range(1,len(lst)):
    if lst[j] in ch:
        sumOfVal = sumOfAllNum(sumOfVal, lst[j], int(lst[j+1]))
print(sumOfVal)