python编写四则运算_python实现四则运算
https://gitee.com/szh123/four_arithmetic_implementation.git
1.需求分析:
實現(xiàn)四則運算題目及答案生成,控制生成題目的個數(shù),題目中數(shù)值不超過10且有分?jǐn)?shù)存在并用真分?jǐn)?shù)表示。
可以生成10000道題
運算符不超過3個
題目不能出現(xiàn)重復(fù)即不能經(jīng)過有限次交換成為相同題目
可以提供對給出的題目進(jìn)行查重及答案求解并輸出結(jié)果
2.功能設(shè)計:
(1)基礎(chǔ)功能:實現(xiàn)四則運算題目和答案的生成,對生成的四則運算題目進(jìn)行查重,支持對提供的題目進(jìn)行查重和答案求解并給出正確錯誤及題目重復(fù)的結(jié)果
(2)擴(kuò)展功能:
(3)高級功能:
3.設(shè)計實現(xiàn):
類1:生成隨機(jī)數(shù)
類2:生成整個表達(dá)式
類3:表達(dá)式轉(zhuǎn)換成為逆波蘭式
類4:樹
類5:類中存放一個數(shù)的分子與分母,同時toString方法輸出真分?jǐn)?shù)形式
類6:計算結(jié)果
類7:二叉樹的查重
類8:主函數(shù)
4.代碼說明:
生成表達(dá)式
def createarithmetic(self):
list = []
f1 = function1.function1()
f2 = function2()
operator_no = random.randint(1,3)
if operator_no == 1:
list.append(f1.createNum())
list.append(f2.createOperator())
list.append(f1.createNum())
elif operator_no == 2:
start = random.randint(0,2)
end = 0
if start == 0:
end == 0
else:
end = start +1
for i in range(1,4):
if i == start:
list.append("(")
list.append(f1.createNum())
if i == end:
list.append(")")
list.append(f2.createOperator())
list.pop()
elif operator_no == 3:
start = random.randint(0, 3)
end = 0
if start == 0:
end == 0
else:
end = start + 1 + random.randint(0,1)
if end >= 4:
end=4
for i in range(1, 5):
if i == start:
list.append("(")
list.append(f1.createNum())
if i == end:
list.append(")")
list.append(f2.createOperator())
list.pop()
else:
list.append(f1.createNum())
list.append(f2.createOperator())
list.append(f1.createNum())
return list
逆波蘭式生成
def toRPN(self,list):
right = []
aStack = []
position = 0
while True:
if self.isOperator(list[position]):
if list ==[] or list[position] == "(" :
aStack.append(list[position])
else:
if list[position] == ")":
while True:
if aStack != [] and aStack[-1] !="(" :
operator = aStack.pop()
right.append(operator)
else :
if aStack !=[]:
aStack.pop()
break
else:
while True:
if aStack != [] and self.priority(list[position],aStack[-1]):
operator = aStack.pop()
if operator != "(":
right.append(operator)
else:
break
aStack.append(list[position])
else:
right.append(list[position])
position = position +1
if position >= len(list):
break
while aStack != []:
operator = aStack.pop()
if operator != "(":
right.append(operator)
return right
5.測試運行:
主界面
選擇功能1:
題目
答案
選擇功能2:
6.PSP
7.小結(jié):
逆波蘭式的生成和計算,二叉樹的查重非常方便
總結(jié)
以上是生活随笔為你收集整理的python编写四则运算_python实现四则运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 旋转编码器消抖程序设计
- 下一篇: 乐趣国学—品读《弟子规》中的“余力学文”