需求说明
这是对简单加减法系统的完善,加入了乘法和除法.完善了异常处理,小学生可以做错,做错了给答案.但是不能不做直接回车看答案.算术要从娃娃抓起!
源代码
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}
#也可以用匿名函数写法,这样可以把上边的定义加减乘除注释掉了
#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()