試利用模組設計一個可以選擇二種運算的python程式
(1)可以輸入二個整數四則運算的運算器
(2)可以輸入一個整數值,並計算它的階層乘積
(3)離開
解答:
# homework.py
# coding: utf-8
import re,math
def isValidFormula(strFormula):
regexp =re.compile(r'\d{1,5}[+|-|*|/]\d{1,5}')
if regexp.search(strFormula): return True
return False
def getArithmeticResult(strFormula):
try:
if isValidFormula(strFormula): return eval(strFormula)
else: return 'input error'
except: return 'input error'
def getFactorialResult(strNum):
if strNum.isdigit(): return math.factorial(int(strNum))
else: return 'input error'
def main():
while True:
print u'''
請選擇
(1)可以輸入二個整數四則運算的運算器
(2)可以輸入一個整數值,並計算它的階層乘積
(3)離開
'''
strChoice=raw_input('Select:')
if strChoice.strip()=='1':
print u'請輸入運算式:'
strFormula=raw_input()
print u'%s=%s'%(strFormula,getArithmeticResult(strFormula))
elif strChoice.strip()=='2':
print u'請輸入階層數字:'
strNum=raw_input()
print u'%s!=%s'%(strNum,getFactorialResult(strNum))
elif strChoice.strip()=='3': break
else: print 'your choice is error'
print '=========================================='
if __name__=='__main__':
main()
解答:
# homework.py
# coding: utf-8
import re,math
def isValidFormula(strFormula):
regexp =re.compile(r'\d{1,5}[+|-|*|/]\d{1,5}')
if regexp.search(strFormula): return True
return False
def getArithmeticResult(strFormula):
try:
if isValidFormula(strFormula): return eval(strFormula)
else: return 'input error'
except: return 'input error'
def getFactorialResult(strNum):
if strNum.isdigit(): return math.factorial(int(strNum))
else: return 'input error'
def main():
while True:
print u'''
請選擇
(1)可以輸入二個整數四則運算的運算器
(2)可以輸入一個整數值,並計算它的階層乘積
(3)離開
'''
strChoice=raw_input('Select:')
if strChoice.strip()=='1':
print u'請輸入運算式:'
strFormula=raw_input()
print u'%s=%s'%(strFormula,getArithmeticResult(strFormula))
elif strChoice.strip()=='2':
print u'請輸入階層數字:'
strNum=raw_input()
print u'%s!=%s'%(strNum,getFactorialResult(strNum))
elif strChoice.strip()=='3': break
else: print 'your choice is error'
print '=========================================='
if __name__=='__main__':
main()
沒有留言:
張貼留言