Question: Python PLEASE! Computer Science HW. The arithmetic expression may include numeric values, four arithmetic operators, and extra spaces. 4.25 * 5 - 2.01 / 3
Python PLEASE!
Computer Science HW. The arithmetic expression may include numeric values, four arithmetic operators, and extra spaces. 4.25 * 5 - 2.01 / 3 * 7 + 2
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 len(expr)<=0 or not isinstance(expr,str): 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
Get step-by-step solutions from verified subject matter experts
