import random import re def create_number(i): get_number = random.randint(0,int(i)) # print(get_number) return get_number def create_sign(): sign = ['+','-','*','÷'] get_sign = random.choice(sign) # print(get_sign) return get_sign def create_formula(flag_num): total = [3,5,7] flag = random.choice(total) # 生成算式 result数组 result = [] for i in range(flag): # print(i) if i % 2 == 0: number = create_number(flag_num) result.append(number) else: sign = create_sign() if (i+1) != flag: result.append(sign) # print(result) # print("加入括号") length = len(result) brackets = [0, 1] bracket = random.choice(brackets) if length > 3: # 随机加入括号 if bracket == 1: for i in range(length): if result[i] == '+' or result[i] == '-': result.insert(i-1,'(') result.insert(i+3,')') break print(result) formula = str(str(result).replace("'","").replace(',','')).replace('[','').replace(']','') # 计算 while len(result) != 1: if '(' in result: number_sign = result.index('(')+2 if result[number_sign] == '+': number_num = result[number_sign - 1] + result[number_sign + 1] result[number_sign -2] = number_num result.remove(result[number_sign - 1]) result.remove(result[number_sign - 1]) result.remove(result[number_sign - 1]) result.remove(result[number_sign - 1]) elif result[number_sign] == '-': number_num = result[number_sign - 1] - result[number_sign + 1] result[number_sign - 2] = number_num result.remove(result[number_sign - 1]) result.remove(result[number_sign - 1]) result.remove(result[number_sign - 1]) result.remove(result[number_sign - 1]) else: if '*' in result: number_sign = result.index('*') print(result) number_num = float(result[number_sign - 1]) * float(result[number_sign + 1]) result[number_sign] = number_num result.remove(result[number_sign - 1]) result.remove(result[number_sign]) print('*'+str(result)) elif '÷' in result: number_sign = result.index('÷') if result[number_sign + 1] == 0 or result[number_sign + 1] == '0': create_formula(flag_num) else: number_num = float(result[number_sign - 1]) / float(result[number_sign + 1]) result[number_sign] = number_num result.remove(result[number_sign - 1]) result.remove(result[number_sign]) print('÷'+str(result)) elif '+' in result: number_sign = result.index('+') number_num = float(result[number_sign - 1]) + float(result[number_sign + 1]) result[number_sign - 1] = number_num result.remove(result[number_sign]) result.remove(result[number_sign]) print('+'+str(result)) elif '-' in result: number_sign = result.index('-') number_num = float(result[number_sign - 1]) - float(result[number_sign + 1]) result[number_sign - 1] = number_num result.remove(result[number_sign]) result.remove(result[number_sign]) print('-'+str(result)) result = str(result).replace('[','').replace(']','')[0:5] # print(result) # print(formula) return result,formula