四則運算試題生成,結對

2022-03-09 04:42:19 字數 4146 閱讀 2710

此作業要求參見

結對夥伴:王艷鶴

功能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

fraction

a = fraction('

3.1415926535897932

').limit_denominator(1000)

(1)具體回答見每個功能的實現

(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 預估耗時 分鐘 實際耗...