Question
On python please! def findNextOpr(s): #s must be a nonempty string. if len(s)
On python please!
def findNextOpr(s): #s must be a nonempty string. if len(s)<=0 or not isinstance(s,str): print("type mimatch error: findNextOpr") return "type mimatch error: findNextOpr" #In this exercise +, -, *, / are all the 4 operators #The function returns -1 if there is no operator in s, #otherwise returns the position of the leftmost operator #--- code the rest of the function ----#
#--- function code ends -----#
def isNumber(s): #s must be a non-empty string #returns True if it's convertible to float, else False if len(s)==0 or not isinstance(s, str): print("type mismatch error: isNumber") return "type mismatch error: isNumber" #--- function code starts ---#
#--- function code ends ---#
def getNextNumber(expr, pos): #expr is a given arithmetic formula in string #pos = start position in expr #1st returned value = the next number (None if N/A) #2nd returned value = the next operator (None if N/A) #3rd retruned value = the next operator position (None if N/A) if len(expr)==0 or not isinstance(expr, str) or pos<0 or pos>=len(expr) or not isinstance(pos, int): print("type mismatch error: getNextNumber") return None, None, "type mismatch error: getNextNumber" #--- function code starts ---#
#--- function code ends ---#
def exeOpr(num1, opr, num2): #This is a simple utility function skipping type check if opr=="+": return num1+num2 elif opr=="-": return num1-num2 elif opr=="*": return num1*num2 elif opr=="/": return num1/num2 else: return None
def calc(expr): #expr: nonempty string that is an arithmetic expression #the fuction returns the calculated result if not isinstance(expr,str) or len(expr)<=0: print("argument error: line A in eval_expr") #Line A return "argument error: line A in eval_expr" #Hold two modes: "addition" and "multiplication" #Initializtion: get the first number newNumber, newOpr, oprPos = getNextNumber(expr, 0) if newNumber is None: print("input formula error: line B in eval_expr") #Line B return "input formula error: line B in eval_expr" elif newOpr is None: return newNumber elif newOpr=="+" or newOpr=="-": mode="add" addResult=newNumber #value so far in the addition mode mulResult=None #value so far in the mulplication mode elif newOpr=="*" or newOpr=="/": mode="mul" addResult=0 mulResult=newNumber pos=oprPos+1 #the new current position opr=newOpr #the new current operator #start the calculation. Use the above functions effectively. while True: #--- code while loop ---#
#--- end of function ---#
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started