diff --git a/create.py b/create.py index ecf232f..bacccf3 100644 --- a/create.py +++ b/create.py @@ -1,12 +1,104 @@ import random +import re + def create_number(): - get_number = random.randint(0,100) - print(get_number) + get_number = random.randint(0,20) + # print(get_number) return get_number def create_sign(): - sign = ['+','-','*','/'] + sign = ['+','-','*','÷'] get_sign = random.choice(sign) - print(get_sign) - return get_sign \ No newline at end of file + # print(get_sign) + return get_sign + +def create_formula(): + total = [3,5,7] + flag = random.choice(total) + # 生成算式 result数组 + result = [] + for i in range(flag): + # print(i) + if i % 2 == 0: + number = create_number() + 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('*') + 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(result) + elif '÷' in result: + number_sign = result.index('÷') + if result[number_sign + 1] == 0 or result[number_sign + 1] == '0': + create_formula() + else: + 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(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(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(result) + + result = str(result).replace('[','').replace(']','')[0:5] + print(result) + # print(formula) + return result,formula + +create_formula() \ No newline at end of file