天天看點

第五次作業--實作四則運算和效能分析

 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.效能分析:

第五次作業--實作四則運算和效能分析

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