四則運算生成器

2022-08-23 20:06:08 字數 1769 閱讀 3289

程式要求,生成若干數量的四則運算,其數字大小在100內,且支援分數運算。

難點:生成算式去重,逆波蘭表示式借助中綴轉字尾輸出結果

#生成表示式

def makeformula(upperlimit=100, fraction=false) -> str:

if fraction:

upperlimit = 20

#中綴轉字尾

def getpostfixexpression(infixexpr: str) -> list[str]:

# 記錄操作符優先順序

prec =

postfixlist =

operatorstack =

# 以空格分割表示式, 並轉為字元陣列

tokenlist = infixexpr.split()

# 中綴表示式轉換為字尾表示式

for token in tokenlist:

if token in "+-*/":

while operatorstack and \

prec[operatorstack[-1]] >= prec[token]:

elif token == '(':

elif token == ')':

toptoken = operatorstack.pop()

while toptoken != '(':

toptoken = operatorstack.pop()

else:

while operatorstack:

return postfixlist

#計算表達算式結果

def solvingpostfixexpression(postfixlist: list[str]):

operandstack =

# 計算字尾表示式

for token in postfixlist:

if token in "+-*/":

operand2 = operandstack.pop()

operand1 = operandstack.pop()

try:

result = domath(token, operand1, operand2)

except:

return "error: dividend cannot be 0"

else:

return operandstack.pop()

def domath(op: str, number1, number2):

if op == '+':

return number1 + number2

elif op == '-':

return number1 - number2

elif op == '*':

return number1 * number2

else:

return fraction(number1, number2)

for i in range(count): if fraction and (i+1) % 2: operation = 3 elif fraction: operation = randint(1, 2) else: operation = randint(1, 3) number2 = randint(1, upperlimit) op = ' ' + op[operation] + ' ' build += op + str(number2) return build

四則運算生成器

2.執行環境 linux終端 3.程式語言 c c 語言 4.bug 未發現 5.當前功能 可以生成0 100的四則運算的題,題的數量可以在程式開始執行時輸入,同時在每道題做完後判斷正確性和給出正確答案。當所有的題都做完時,可以看到你做對的題的數目以及得分。5.功能擴充套件的方向 增加真分數運算,把...

四則運算生成器

1.題目 四則運算生成器 駕駛員 孫曉寧,領航員 歐陽燁楓 我們在剛開始上課的時候介紹過乙個小學四則運算自動生成程式的例子,請實現它,要求 2.分析 1.首先我用random函式生成n個隨機數存入陣列並根據使用者需求規定隨機數最大值 2.之後根據使用者不同需求進行生成四則運算,規定各種要求需要輸入特...

四則運算生成器

用c語言編寫支援 分數加減,小學加減乘除的計算。需求分析 小學生需要練習加減乘數以及分數的計算 包括判斷答案的對錯與否並且在錯誤的時候給予正確的答案。採用隨機生成數的方式自動生成隨機的加減乘除,用if條件判斷語句來確定答案是否正確。分數的加減用itoa 函式將整型轉換為字元型在進行分數的大小的比較。...