Github項目地址:https://github.com/Aiyaxc/zuoye-
題目:實現自動生成四則運算題目的命令行程序。
(1)題目要求:
a. 能自動生成小學四則運算題目(注意是給小學生用的,要是結果出現負數的話他們會迷茫的!)
b. 除了整數外,還要支持真分數的四則運算
(2)思路:
a.四則運算加減乘除,采用兩個隨機數,由於不能出現負數,所以在對兩個隨機數進行減法運算的時候,需要進行比較大小,而除法在運算中,除數不能取0。
b. 進行真分數運算應注意假分數的影響
(3)實現過程
定義函數:用def szys()實現隨機生成四則運算,用def test()通過調用syzs()實現題庫的制作.
所以代碼分為三個部分,第一部分是生成隨機四則運算,最后輸出算式並返回正確答案;第二部是用戶通過輸入一個整數來輸出所需要的算式,當輸出的算式達到目標數量后,便一一輸出答案;第三部分為主函數,需要用戶自己選擇模式,當輸入是‘1’時,是為四則運算,通過調用syzs()函數得到算式和返回值,用戶輸入答案后,便與用戶輸入值進行比較。當輸入是‘2’時,是生成題庫,並在最后輸出答案。
(4)源代碼:
import random
#四則運算
def szys():
sym = ['+', '-', '×', '÷']
f= random.randint(0, 3)
n1 = random.randint(1, 20)
n2 = random.randint(1, 20)
result = 0
if f== 0:#加法
result = n1 + n2
elif f == 1:#減法,要先比較大小,防止輸出負數
n1, n2 = max(n1, n2), min(n1, n2)
result = n1 - n2
elif f== 2:#乘法
result = n1 * n2
elif f == 3:#除法,要比較大小,並循環取整除
n1, n2 = max(n1, n2), min(n1, n2)
while n1 % n2 != 0:
n1 = random.randint(1, 10)
n2 = random.randint(1, 10)
n1, n2 = max(n1, n2), min(n1, n2)
result = int(n1 / n2)
print(n1, sym[f], n2, '= ', end='')
return result
#制作題庫
def test():
sym = ['+', '-', '×', '÷']
print('輸入所需要的題目數量')
n=int(input())
result =[]
m=0
while m<=(n-1):
print(m+1,end='、')
result .append(szys())
print(' ')
m=m+1
m=0
print('對應的答案:')
while m<=(n-1):
print(m+1,'、',result [m])
m=m+1
print('選擇想要的模式')
print('1、進行四則運算')
print('2、制作題庫')
n=int(input())
#當輸入1時,進行四則運算,調用函數syzs()
if n==1:
while True:
result = szys()
j= input()
s= int(j)
if s== result :
print('right')
else:
print('error.,the answer is', result )
#當輸入2時,進行制作題庫
if n==2:
test()
(5)測試運行:
- 先運行第一個模式----進行四則運算,結果:

2.運行第二個模式----制作題庫,先生成15道題:
生成30道題:


(5)分析
這次作業我是用python實現的,但由於我python學得還不是很精,所以我參考了網上的代碼,基本上實現了四則運算,也方便了教師及時提取題庫,但由於時間不充分,所以在實現真分數上,沒有達到預期,這點還需要在后續中進行改進。
(6)PSP表格
|
|
|
預計耗時(分鍾) |
是實際耗時(分鍾) |
| Planning |
計划 |
20 |
15 |
| Estimate |
估計這個任務需要多少時間 |
/ |
/ |
| Development |
開發 |
120 |
200 |
| Analysis |
需求分析 |
5 |
7 |
| Design Spec |
生成設計文檔 |
/ |
/ |
| Design Review |
設計復審(和同事審核設計文檔) |
/ |
/ |
| Coding Standerd |
代碼規范(為目前的開發制定合適的規范) |
5 |
8 |
| Design |
具體設計 |
8 |
12 |
| Coding |
具體編碼 |
35 |
70 |
| Code Review |
代碼復審 |
20 |
30 |
| Text |
測試(自測,修改代碼,提交修改) |
20 |
30 |
| Reporting |
報告 |
25 |
20 |
| Text Report |
測試報告 |
10 |
15 |
| Size Measurement |
計算工作量 |
6 |
5 |
| Postmortem & Process Improvement Plan |
事后總結,並提出過程改進計划 |
5 |
5 |
| Sum |
合計 |
279 |
407 |
