1.Github項目位址:
https://github.com/hi00785/-1/blob/master/%E5%9B%9B%E5%88%99%E8%BF%90%E7%AE%97.py
2.程式的各個子產品的開發上耗費的時間:
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
Planning | 計劃 | 5 | 5 |
· Estimate | · 估計這個任務需要多少時間 | ||
Development | 開發 | 305 | 305 |
· Analysis | · 需求分析 (包括學習新技術) | 20 | 20 |
· Design Spec | · 生成設計文檔 | 40 | 40 |
· Design Review | · 設計複審 (和同僚稽核設計文檔) | ||
· Coding Standard | · 代碼規範 (為目前的開發制定合适的規範) | ||
· Design | · 具體設計 | 30 | 30 |
· Coding | · 具體編碼 | 100 | 100 |
· Code Review | · 代碼複審 | 50 | 50 |
· Test | · 測試(自我測試,修改代碼,送出修改) | ||
Reporting | 報告 | 90 | 90 |
· Test Report | · 測試報告+部落格 | 60 | 60 |
· Size Measurement | · 計算工作量 | ||
· Postmortem & Process Improvement Plan | · 事後總結, 并提出過程改進計劃 | ||
合計 | 400 |
3.解題思路:
(1)根據國小生的加減乘除四則運算的知識,需要分為整數運算和分數運算
(2)處理分數是,要約分到不可約,引入fraction函數
(3)讓學生自行選擇是運算整數或是分數,采用随機函數生成4個數,組合成兩個分數,進行加減乘除運算
(4)運用time庫中的perf_count()進行計時,進行效能分析,優化代碼
4.設計實作過程:
會用到随機函數random.randint,分數處理函數Fraction,計時函數perf_count()
5.代碼說明:
rom fractions import *
import numpy
import time
def size():
start=time.perf_counter()
print("您算分數,還是整數?")
a=input()
if a=="分數":
temp = input("是加減乘除哪一個?請輸入運算符号:")
x = numpy.random.randint(1,50)
y = numpy.random.randint(1,50)
b = numpy.random.randint(1,50)
c = numpy.random.randint(1,50)
if temp == "+":
print("答案為:%s+%s=%s"%(Fraction(x,y),Fraction(b,c),Fraction(x, y) + Fraction(b, c)))
elif temp == "-":
print("答案為:%s-%s=%s" % (Fraction(x, y), Fraction(b, c), Fraction(x, y) - Fraction(b, c)))
elif temp == "*":
print("答案為:%s*%s=%s" % (Fraction(x, y), Fraction(b, c), Fraction(x, y) * Fraction(b, c)))
elif temp == "/":
print("答案為:%s/%s=%s" % (Fraction(x, y), Fraction(b, c), Fraction(x, y) / Fraction(b, c)))
elif a=="整數":
x=numpy.random.randint(1,50)
y=numpy.random.randint(1,50)
temp = input("加減乘除?")
if temp == "+":
print("答案為:{:d}+{:d}={:d}" .format(x, y, x+y))
elif temp == "-":
print("答案為:{:d}-{:d}={:d}" .format(x, y, x-y))
elif temp == "*":
print("答案為:{:d}*{:d}={:d}".format(x, y, x*y))
elif temp == "/":
print("答案為:{:d}/{:d}={:.2f}" .format(x, y, x/y))
else:
print("您輸入的資料有誤")
end=time.perf_counter()
print("程式運作時間:{:.3f}".format(end-start))
size()
6.測試運作:

7.效能分析:
由于并不太會效能分析,仍在努力學習中,這部分在改進