1. 程式人生 > >四則運算小題目升級版(python)

四則運算小題目升級版(python)

radi mda rom question n) 數量 nbsp ret 使用

https://github.com/shiwangqiu/Python/blob/master/calculation_update.py

上一個版本是不能帶括號運算的,這次進行了小小的更新,支持括號運算。

import random
from fractions import Fraction
operation = [+, -, *, /]   #四則運算的符號
global f
question = []
result = []
answer = []
def result_integer(f, m):
    try:
        n = eval(f)
        n 
= Fraction({}.format(n)).limit_denominator() # 把表達式的結果轉成分數 if n > 0: # 判斷結果是否大於0,否則重新產生表達式 #print(‘題目:‘) question.append(f) result.append(n) #print(‘請輸出答案:‘) #x = Fraction(‘{}‘.format(eval(input()))).limit_denominator() else
: integer() except: integer(m) def func_integer(number): f = ‘‘ ch = [] rand = random.randint(0, 1) #選擇內嵌或外嵌括號 if number != 1: #避免一個表達式也產生括號 if rand == 0: ch.append(() op = operation[random.randint(0, 1)] ch.append(random.randint(
1, 10)) ch.append(op) ch.append(random.randint(1, 10)) ch.append()) else: op = operation[random.randint(0, 3)] if op == /: a = random.randint(1, 10) ch.append(a) ch.append(op) ch.append(random.randint(a, 10)) else: ch.append(random.randint(1, 10)) ch.append(op) ch.append(random.randint(1, 10)) else: op = operation[random.randint(0, 3)] if op == /: a = random.randint(1, 10) ch.append(a) ch.append(op) ch.append(random.randint(a, 10)) else: ch.append(random.randint(1, 10)) ch.append(op) ch.append(random.randint(1, 10)) for i in ch: #把產生表達式當成一個整體 f += str(i) return f def integer(n): ch = [] #存儲表達式 number = random.randint(1, 4) #隨機產生表達式的數量 for i in range(number): rand = random.randint(0, 1) #隨機產生0和1 判斷是否使用括號 a = func_integer(number) #調用表達式產生函數,產生表達式 if rand == 0: op = operation[random.randint(2,3)] #產生*,/來連接有括號的表達式,避免產生+,— rand = random.randint(0, 1) #隨機產生0和1 判斷是否使用內嵌括號或外嵌括號 if i != number - 1: #避免開始和結尾用無意義的括號 if rand == 0: ch.append(() ch.append(a) ch.append(op) ch.append(random.randint(1,10)) ch.append()) ch.append(operation[random.randint(0, 3)]) else: ch.append(a) ch.append(operation[random.randint(0, 3)]) else: ch.append(a) ch.append(operation[random.randint(0, 3)]) else: ch.append(a) ch.append(operation[random.randint(0, 3)]) f = ‘‘ for k,i in enumerate(ch): #把列表中的所有值用f一個個連起來 if k != len(ch)-1: f += str(i) result_integer(f, n) #調用輸出函數 if __name__ == __main__: print(輸入你想做幾道題目) n = int(input()) for i in range(n): integer(n) print(題目:) for k, i in enumerate(question): print(k + 1,:,i,=) print(請輸入你的答案:) for i in range(n): print(第{}題:.format(i + 1)) x = Fraction({}.format(eval(input()))).limit_denominator() if x == result[i]: print({}:√.format(i + 1)) else: print({}:×.format(i + 1)) print(正確的答案為:,result[i])

效能分析:

技術分享圖片

四則運算小題目升級版(python)