python 实现儿童算术游戏

随机选择数字以及一个算术函数, 显示问题, 以及验证结果. 在 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
37
38
39
40
41
42
# -*- 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  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()









本文转自 Xuenqlve 51CTO博客,原文链接:http://blog.51cto.com/13558754/2062597,如需转载请自行联系原作者

你可能感兴趣的:(python 实现儿童算术游戏)