此作業要求參見
結對夥伴:王艷鶴
功能1. 四則運算
為了快出成果,你快速造個控制台的版本,包括以後改版成更優秀介面的核心功能,並考慮到擴充套件。
你在老師面前作如下表演 (數字你用excel驗算過了,ui的賣萌部分你還沒有想好) 。
功能2. 支援括號
老師看了你的表演,大大讚賞了你。然後她說,"你的題庫裡怎麼都是沒有括號的題呢,我記得你當初括號就掌握得不好啊。"你的臉紅了,對老師說,"給我2個小時時間,我給你乙個新版本,有括號的。"
兩小時後,在老師面前你在控制台下輸入f4,然後回車。
功能重難點如何隨機生成四則表示式,如何利用堆疊來求解表示式的值。
生成表示式**如下:
def create_formula():怎麼將中綴表示式轉化為逆波蘭表示式**如下:equation =
for i in range(3
):0, 10
))operator[random.randint(0, 3
)])0, 10
)) p = random.randint(1, 5
)
if p is1:
equation.insert(
0, "("
) equation.insert(
4, ")"
) elif p is2
: equation.insert(
0, "("
) equation.insert(
6, ")"
) elif p is3
: equation.insert(
2, "("
) equation.insert(
6, ")"
) elif p is4
: equation.insert(
2, "("
)")"
) elif p is5
: equation.insert(
4, "("
)")"
)
return equation
def如何計算逆波蘭表示式**如下:reverse_polish(equation):
result =
c =slist = [i for i in
equation]
for item in
slist:
if item in range(0, 100):
elif
not c and item in
operator_dic.keys():
continue
elif c and item in
operator_dic.keys():
for x in range(c.__len__
()):
z = c[-1]
temp = operator_dic[z] if z in operator_dic else
cal1[z]
if temp >=operator_dic[item]:
else
:
break
ifnot
c:
elif item is")
":for x in range(c.__len__
()):
if c[-1] == "("
: c.pop()
break
else
:
elif item is"(
":for x in range(c.__len__
()):
return result
def測試截圖:calculate(re_equation):
stack =stack()
sumend =0
if len(re_equation) is
0:
return
sumend
for i in
re_equation:
if i in range(0, 100):
stack.push(float(i))
elif'+
'isi: a =stack.pop()
b =stack.pop()
stack.push(b +a)
elif'-
'isi: a =stack.pop()
b =stack.pop()
stack.push(b -a)
elif'*
'isi: a =stack.pop()
b =stack.pop()
stack.push(b *a)
elif'÷
'isi: a =stack.pop()
b =stack.pop()
if a ==0:
return
false
else
: stack.push(b /a)
return stack.pop()
功能3. 限定題目數量,"精美"列印輸出,避免重複
"就這點兒題,像你當年做得那麼快,一會兒就完成啦!"老師說,"另外,我想列印出來,上課也不能帶台機器。又另外,你把答案也打出來唄,我把答案剪掉,題目給學生做。"
一看需求這麼多,你生怕她會說,"這都是很簡單的功能,你一定能完成吧"。你知道如果承諾今晚,明早交工的時候她一定想出了更多可怕的需求,你趕緊說,"老師我現在就做。"
你忘記怎麼呼叫印表機了,就把答案與題目橫向對齊,輸出在檔案的右邊。告訴老師txt檔案可以用word開啟,也能列印。她滿意而意味深長地笑了,表示同意。
你輸入命令執行的時候,腦袋比手指頭還疼。
此功能難點在於對命令列引數的獲取理解不夠,做起來很費時費力。
此功能執行結果如下
功能4. 支援分數出題和運算
國慶節後,你終於又回到美麗優雅並且正常的東北師範大學淨月校區,在去食堂的路上偶遇你心目中的女神 (或男神,請自行替換)。她說,"哎呀,這跟我們《構建之法》課上的題目要求一樣啊,真是巧合。"
"不要客氣,**拿去!反正我也沒用。"你說,"如果有需求變更或擴充套件,儘管找我。"
你伏筆埋得不錯。女神馬上說,"對啊,有一點兒點兒不一樣,你午飯時間加加班幫我改出來吧。"
她的題目還要求支援分數運算,你不禁想到了功能1中你特意規避了一些題目不出。她想要的是下面的樣子:
此功能需要引用新的包,完成此功能學會了使用fraction函式的一些功能。
關鍵函式使用如下
from fractions import(1)具體回答見每個功能的實現fraction
a = fraction('
3.1415926535897932
').limit_denominator(1000)
(2)結對程式設計的體會:要對自己的小組保持足夠的自信,需要有固定的合作程式設計的環境
(3)a.要不要進行單元測試 b.追求完美還是完成 c.自己定義堆疊還是多找找看有沒有現成的d.使用兩台電腦還是一台電腦進行開發e.最大的收穫就是又一次確認自己的程式設計能力亟需提高。
要求2給出結對開發的截圖證據,要求截圖能夠證明你們是在結對程式設計。 (5分)
要求3
20200924 5 四則運算試題生成,結對
此作業的要求參見 1 給出每個功能的重點 難點 程式設計收穫。結對程式設計夥伴 袁豔春 開發環境 windows10 全程使用季嘉同學筆記本開發 開發工具是 pycharm 版本控制 git coding 功能1.四則運算 為了快出成果,你快速造個控制台的版本,包括以後改版成更優秀介面的核心功能,並...
四則運算結對專案
1.需求分析 設計開發乙個小學生四則運算練習軟體,使之具有以下功能 1 由計算機從題庫檔案中隨機選擇20道加減乘除混合算式,使用者輸入算式答案,程式檢查答案是否正確,每道題正確計5分,錯誤不計分,20道題測試結束後給出測試總分 2 題庫檔案可採用實驗二的方式自動生成,也可以手工編輯生成 3 程式為使...
結對程式設計 四則運算生成器
這個作業屬於哪個課程 這個作業要求在 homework 11148 這個作業的目標 實現乙個自動生成小學四則運算題目的命令列程式,熟悉使用psp 進行估計,熟悉使用單元測試 目錄 github倉庫 psp2.1 personal software process stages 預估耗時 分鐘 實際耗...