随机选择数字以及一个算术函数, 显示问题, 以及验证结果. 在 3 次错误的尝试以后给出结果,等到用户输入一个正确的答案后便会继续运行.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # -*- coding: UTF-8 -*- from operator import add, sub #从 operator 和 random 模块中,导入我们会用到的函数 from random import randint, choice ops = { '+' : add, '-' : sub} #定义全局变量 一个包含了运算符和与其相关联的函数的集合(字典) maxtaries = 3 #定义全局变量 用户有多少次机会尝试给出答案的整型变量 def doprob(): #定义此程序的核心程序 op = choice( '+-' ) #随机选择一个操作 nums = [randint( 1 , 10 ) for i in range ( 2 )] #随机生成两个操作数 nums.sort(reverse = True ) #为了避免减法问题中的负数问题,将这两个操作数按大到下进行排序 ans = ops[op]( * nums) #调用一个数学函数计算出正确的解 pr = '%d %s %d =' % (nums[ 0 ], op, nums[ 1 ]) #生成 提示用户计算的等式 oops = 1 #定义 用户尝试机会的计数器 while True : try : if int ( raw_input (pr)) = = ans: #判断 用户输入的答案和 正确答案比较 print 'correct' #输出提示信息 break #退出循环 if oops = = maxtaries: #当用户尝试次数等于用户最大尝试次数时 print 'answer\n%s%d' % (pr,ans) #将等式和 正确的答案输出 break else : #在其他情况下 print 'incorrect... try again' #输出提示信息 oops + = 1 #用户尝试机会的计数器加一 except (KeyboardInterrupt, EOFError, ValueError): #捕捉用户的错误输出 print 'invalid input... try again' #输出提示信息 def main(): while True : doprob() #调用核心函数 try : opt = raw_input ( 'Again?[y]' ).lower() #读取用户输入的参数 如果是大写字母时变为小写 if opt and opt[ 0 ] = = 'n' : #当用户输入n 或 N 退出用户循环 break except (KeyboardInterrupt, EOFError): break if __name__ = = '__main__' : main() |
点击查看更多内容
为 TA 点赞
0 评论
共同学习,写下你的评论
暂无评论
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦