add bbc
This commit is contained in:
parent
136a7ee1de
commit
da8425942f
1 changed files with 54 additions and 0 deletions
54
worker/bbc.py
Normal file
54
worker/bbc.py
Normal file
|
@ -0,0 +1,54 @@
|
|||
from zzcore import StdAns
|
||||
|
||||
class Ans(StdAns):
|
||||
def GETMSG(self):
|
||||
if len(self.parms) < 2:
|
||||
return '不加参数是坏文明!'
|
||||
try:
|
||||
msg = str(bc(self.raw_msg['message'][5:]))
|
||||
except Exception as e:
|
||||
msg = str(e)
|
||||
return msg
|
||||
|
||||
def bc(formula):
|
||||
formula = pure(formula)
|
||||
try:
|
||||
return float(formula)
|
||||
except ValueError:
|
||||
print(subFormula(formula))
|
||||
subLift,subRight,flag = subFormula(formula)
|
||||
return cal(bc(subLift),bc(subRight),flag)
|
||||
|
||||
def pure(formula):
|
||||
while(formula[0] == '(' or (formula[0] == '-' and formula[1] == '-')):
|
||||
if formula[0] == '(':
|
||||
formula == formula[1:]
|
||||
else:
|
||||
formula = formula[2:]
|
||||
while(formula[len(formula) - 1] == ')'):
|
||||
formula = formula[:len(formula) - 1]
|
||||
|
||||
return formula
|
||||
|
||||
def subFormula(formula):
|
||||
start = 0
|
||||
if formula[0]=='-':
|
||||
start = 1
|
||||
for index in range(start,len(formula)):
|
||||
if formula[index] in ['*','/']:
|
||||
lastxx = index
|
||||
elif formula[index] == '+':
|
||||
return formula[:index],formula[index+1:],'+'
|
||||
elif formula[index] == '-' and formula[index-1] not in ['*','/']:
|
||||
return formula[:index],formula[index:],'+'
|
||||
elif formula[index] == '(':
|
||||
return formula[:index-1],formula[index:],formula[index-1]
|
||||
return formula[:lastxx],formula[lastxx+1:],formula[lastxx]
|
||||
|
||||
def cal(f1,f2,flag):
|
||||
do = {
|
||||
'+':lambda x,y: x+y,
|
||||
'*':lambda x,y: x*y,
|
||||
'/':lambda x,y: x/y
|
||||
}
|
||||
return do[flag](f1,f2)
|
Loading…
Reference in a new issue