Python實現簡單的四則運算
阿新 • • 發佈:2019-04-06
idt class per 工作 operation als evel mea name
GitHub 項目地址
https://github.com/745421831/-/tree/master
PSP
PSP2.1 |
Personal Software Process Stages |
預估耗時(分鐘) |
實際耗時(分鐘) |
Planning |
計劃 |
10 |
20 |
· Estimate |
· 估計這個任務需要多少時間 |
10 |
10 |
Development |
開發 |
360 |
600 |
· Analysis |
· 需求分析 (包括學習新技術) |
30 |
40 |
· Design Spec |
· 生成設計文檔 |
30 |
40 |
· Design Review |
· 設計復審 (和同事審核設計文檔) |
10 |
15 |
· Coding Standard |
· 代碼規範 (為目前的開發制定合適的規範) |
5 |
5 |
· Design |
· 具體設計 |
40 |
80 |
· Coding |
· 具體編碼 |
300 |
500 |
· Code Review |
· 代碼復審 |
60 |
120 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
180 |
120 |
Reporting |
報告 |
120 |
60 |
· Test Report |
· 測試報告+博客 |
120 |
120 |
· Size Measurement |
· 計算工作量 |
10 |
10 |
· Postmortem & Process Improvement Plan |
· 事後總結, 並提出過程改進計劃 |
40 |
30 |
合計 |
|
1325 |
1770 |
項目要求
- 能自動生成小學四則運算題目
- 除了整數以外,還要支持真分數的四則運算
解題思路
- 了解四則運算的基本法則
- 利用隨機函數隨機生成數字以及運算符
- 用戶輸入答案程序需要判斷答案是否正確
- 支持真分數運算
設計實現及代碼說明
import random from fractions import Fraction operation = [‘+‘, ‘-‘, ‘*‘, ‘/‘] #四則運算的符號 global f def integer_score(): #rand = operation[random.randint(0,3)] number = random.randint(1,4) #隨機產生的表達式長度 f = ‘‘ for i in range(number): a = random.randint(1,20) #隨機產生的表達式中的數 rand = operation[random.randint(0, 3)] #隨機選擇一個四則運算中的符號 if rand == ‘/‘: b = random.randint(a, 20) #隨機產生的真分數的分母 f += str(a) + rand + str(b) #數與符號相連 rand = operation[random.randint(0, 2)] #隨機選擇一個四則運算中的符號 f += rand else: f += str(a) + rand #print(a,rand,end=‘‘) b = random.randint(1, 20) f += str(b) #得到完整的表達式 n = eval(f) #得到表達式的結果 n = Fraction(‘{}‘.format(n)).limit_denominator() #小數轉化為分數 if n > 0: print(‘題目:‘) print(f,‘=‘) print(‘請輸出答案:‘) x = Fraction(‘{}‘.format(eval(input()))).limit_denominator() if n == x: #輸入的數與表達式比較 print(True) else: print(False) print(‘正確的答案為:‘,n) else: integer_score() def integer(): # rand = operation[random.randint(0,3)] number = random.randint(1, 3) f = ‘‘ for i in range(number): a = random.randint(1, 10) rand = operation[random.randint(0, 3)] f += str(a) + rand b = random.randint(1, 10) f += str(b) n = eval(f) if isinstance(n, int) and n > 0: print(‘題目:‘) print(f, ‘=‘) print(‘請輸出答案:‘) x = eval(input()) if n == x: print(True) else: print(False) print(‘正確的答案為:‘, n) else: integer() def score(): op = [‘+‘, ‘-‘] number = random.randint(1, 3) f = ‘‘ for i in range(number): a = random.randint(1, 10) b = random.randint(a, 10) rand = op[random.randint(0, 1)] f += str(a) + ‘/‘+ str(b)+rand a = random.randint(1, 10) b = random.randint(a, 10) f += str(a) + ‘/‘+ str(b) n = eval(f) n = Fraction(‘{}‘.format(n)).limit_denominator() if n > 0: print(‘題目:‘) print(f,‘=‘) print(‘請輸出答案:‘) x = Fraction(‘{}‘.format(eval(input()))).limit_denominator() if n == x: print(True) else: print(False) print(‘正確的答案為:‘,n) else: score() if __name__ == ‘__main__‘: while True: print(‘選擇你想做的題目:‘) print(‘0(退出)1(分數題目),2(整數題目),3(綜合題目)‘) m = int(input()) if m == 1: score() elif m == 2: integer() elif m == 3: integer_score() elif m == 0: exit() else: print(‘請重新輸入你的選擇‘) #isinstance(1, int)
總結
這次利用Python實現簡單的四則運算還不夠完美,比如沒有隨機生成帶括號的由於時間原因以及個人能力有限,這些只能以後慢慢完善。
Python實現簡單的四則運算