from random import randint #pair operations def pairPrecedence(pair): op = pair[1] #operator if op == '*' or op == '/': return 0 return 1 def computePair(pair): op = pair[1] #operator x,y = int(pair[0]),int(pair[2]) if op == '*': return x*y if op == '+': return x+y if op == '-': return x-y return int(x/y) #can only be divison operators = ('*','+','-','/') #division last for easy no zero division (x,y) = input("Please input two numbers: ").split() x,y = int(x),int(y) possNums = range(x,y+1) #range is exclusive, so y+1 numbers = tuple(possNums[randint(x,y)] for x in range(0,4)) pairs = [] for i in range(0,3): #generates three pairs for solution pair = [] opMaxIndex = 3 if numbers[i+1] == 0: opMaxIndex -= 1 #prevents division by zero pair = [numbers[i],operators[randint(0,opMaxIndex)],numbers[i+1]] pairs.append(pair) expression = str(pairs[0][0])+' '+str(pairs[0][1])+' '+str(pairs[1][0])+' '+str(pairs[1][1]) expression = expression+' '+str(pairs[2][0])+' '+str(pairs[2][1])+' '+str(pairs[2][2]) print(expression) prec = [pairPrecedence(pair) for pair in pairs] print(prec) #get solution solution = -1 if prec == [1,1,1] or prec == [0,0,0]: solution = computePair([computePair(pairs[0]),pairs[1][1],computePair(pairs[2])]) if prec == [1,0,1]: solution = computePair([pairs[0][0],pairs[0][1],computePair(pairs[1])]) solution += computePair([computePair(pairs[1]),pairs[2][1],pairs[2][2]]) if prec == [0,1,0]: solution = computePair([computePair(pairs[0]),pairs[1][1],computePair(pairs[2])]) if prec == [1,0,0]: solution = computePair([pairs[1][0],pairs[1][1],computePair(pairs[2])]) solution = computePair([pairs[0][0],pairs[0][1],solution]) if prec == [0,0,1]: solution = computePair([pairs[0],pairs[1][1],pairs[1][2]]) solution = computePair(solution,pairs[2][1],pairs[2][2]) print(solution) print(eval(expression))