zoukankan      html  css  js  c++  java
  • 宝宝加减法出题小程序

    避免计算过程中出现负数,可以设定题目长度,最大的数字。

    """
    Spyder Editor
    
    This is a temporary script file.
    """
    import random
    import re
    import pprint
    
    
    def calc(s = '5+6-1'):
        '''
        @s:'5+6-1'
        '''
        #print 'calc : %s 
    ' % s
        numbers = re.findall(r'd+' , s)
        symbols = re.findall(r'[+-]+', s)
        i = 1
        j = 0
        result = 0
        result += int(numbers[0])
        while i < len(numbers) and j < len(symbols):
            if symbols[j] == '+' :
                result += int(numbers[i])
            elif symbols[j] == '-' :
                result -= int(numbers[i])
            else:
                print symbols
                print 'Only + and - accept'
                return False
            i += 1
            j += 1 
            if result < 0:
                #print 'negtive not accept'
                return False
        #print '%s = %d' %(s,result)
        return result
    
    def getOneExpression(problemMaxLength = 5 , maxNum = 15):
        problemLength = random.randint(2,problemMaxLength)
        expression = ''
        i = 0
        num = random.randint(0 , maxNum)
        expression += str(num)
        while i < problemLength-1:
            tmp = expression
            expression += random.sample(['+','-'] , 1)[0]
            num = random.randint(0 , maxNum)
            expression += str(num)
            #print 'expression1 : ' ,expression
            if calc(expression):
                i += 1
            else:
                expression = tmp
            #print 'expression2 : ' ,expression
            #import time
            #time.sleep(1)
        #print expression
        return expression
    
    def setProblems(problemNum = 10 , problemMaxLength = 5 , maxNum = 15):
        problem = {}#{'P1':{'problem':'5+6' , result = 11}}
        
        # set level
        #problemNum = 10
        #problemMaxLength = 5
        #maxNum = 15
        for i in range(problemNum): 
            problem.setdefault('P'+str(i) , {})
            problem['P'+str(i)].setdefault('problem' , 
                    getOneExpression(problemMaxLength , maxNum))
            
            problem['P'+str(i)].setdefault('result' , 
                    calc(problem['P'+str(i)]['problem']))        
        return problem
    
    #test 
    '''      
    calc('1')
    getOneExpression()
    random.sample(['+','-'] , 1)
    '''
    
    problems = setProblems()
    pprint.pprint(problems)
  • 相关阅读:
    Flask&&人工智能AI -- 12
    Flask&&人工智能AI -- 11
    Flask&&人工智能AI -- 10
    Flask&&人工智能AI -- 9
    Flask&&人工智能AI -- 8
    Flask&&人工智能AI -- 8 HTML5+ 初识,HBuilder,夜神模拟器,Webview
    Flask&&人工智能AI -- 7 MongoDB
    Flask&&人工智能AI -- 6 人工智能初识,百度AI,图灵机器人
    Flask&&人工智能AI --5 Flask-session、WTForms、数据库连接池、Websocket
    [转]八款开源Android游戏引擎
  • 原文地址:https://www.cnblogs.com/colipso/p/8461006.html
Copyright © 2011-2022 走看看