需求說明
這是對簡單加減法系統(tǒng)的完善,加入了乘法和除法.完善了異常處理,小學生可以做錯,做錯了給答案.但是不能不做直接回車看答案.算術(shù)要從娃娃抓起!
源代碼
import random
def add(x,y):
? ? return x+y
def sub(x,y):
? ? return x-y
def cheng(x,y):
? ? return x*y
def chu(x,y):
? ? return x//y
def exam():
? ? cmds={'+':add,'-':sub,'*':cheng,'/':chu}
? ?#也可以用匿名函數(shù)寫法,這樣可以把上邊的定義加減乘除注釋掉了
? ? #cmds={'+':lambda x,y:x+y,'-':lambda x,y:x-y,'*':lambda x,y:x*y,'/':lambda x,y:x//y}
? ? nums=[random.randint(1,100)for i in range(2)]
? ? nums.sort(reverse=True)
? ? op=random.choice('+-*/')
? ? result=cmds[op](*nums)
? ? prompt="%s%s%s="%(nums[0],op,nums[1])
? ? times=0
? ? while times<3:
? ? ? ? try:
? ? ? ? ? ? answer=int(input(prompt))
? ? ? ? except:
? ? ? ? ? ? continue
? ? ? ? if answer==result:
? ? ? ? ? ? print("答對了,你真棒!")
? ? ? ? ? ? break
? ? ? ? else:
? ? ? ? ? ? print("答錯了")
? ? ? ? ? ? times+=1
? ? else:
? ? ? ? print('%s%s'%(prompt,result))
def main():
? ? ? ? while True:
? ? ? ? ? ? exam()
? ? ? ? ? ? try:
? ? ? ? ? ? ? ? go_on=input('Continue(y/n)').strip()[0]
? ? ? ? ? ? except IndexError:
? ? ? ? ? ? ? ? continue
? ? ? ? ? ? except(KeyboardInterrupt,EOFError):
? ? ? ? ? ? ? ? go_on='n'
? ? ? ? ? ? if go_on in 'nN':
? ? ? ? ? ? ? ? print('\nBye-bye')
? ? ? ? ? ? ? ? break
main()