码迷,mamicode.com
首页 > 其他好文 > 详细

写给孩子的第一个程序:生成一个TXT口算题文件

时间:2015-08-28 16:56:28      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

学习中Python,孩子嚷嚷说让我给出口算题,于是写了一个生成口算题的程序,我自己觉得很简陋,盼大神们给修改,您的任何建议都是对我最大的鼓励!

#!/usr/bin/env python

from operator import add,sub,imul
from random import randint,choice,uniform
import os
ops={‘+‘:add,‘-‘:sub,‘*‘:imul}

def FloatToInt(numList):           ‘把小数为零的浮点数转换为整数,为了排版输出好看。
     for i in range(len(numList)):
         if numList[i]*10%10==0:numList[i]=int(numList[i])
     return numList
def doprob():                          ’生成一个口算题,返回答案和题目字符串
     step=randint(2,3)               ’随机生成口算题中数字的个数
       
     if step==2:
        op=choice(‘+-*‘)             ‘随机生成计算符号
        if op==‘*‘:                      ‘如果是乘法,产生最多两位小数乘以一位整数的口算题(小朋友不喜欢太难的)
             nums=[round(uniform(1,100),choice((0,2))),randint(1,10)]
             ans=ops[op](*nums)
        else:                               ‘如果是加减法,产生最多两位小数的口算题
            nums=[round(uniform(1,100),choice((0,2))) for i in range(step)]
            nums.sort(reverse=True)
            ans=ops[op](*nums)
        nums=FloatToInt(nums)      ’去掉浮点数最后的零
        pr=‘%s%s%s=‘%(nums[0],op,nums[1])
     else:                                    ‘算三个数,就只算加减吧
        op1=choice(‘+-‘)
        op2=choice(‘+-‘)
        nums=[round(uniform(1,100),choice((0,2))) for i in range(step)]
        ans=ops[op1](*nums[:2])
        ans=ops[op2](*(ans,nums[2]))
        nums=FloatToInt(nums)  
        pr=‘%s%s%s%s%s=‘%(nums[0],op1,nums[1],op2,nums[2])
     if ans*10%10==0:ans=int(ans)   
     return ans,pr

def main():
     makenum=int(raw_input(‘please input the number of generated problems: ‘))
     gennum=0
     try:
        filename=‘kousuan%s.txt‘%makenum
        fmake=open(filename,‘w‘)
        filepath=‘%s\%s‘%(os.getcwd(),filename)
     except Exception,e:
        print ‘file open err:‘,e
        return None
     for i in range(makenum-1):
        problem=doprob()
        if problem[0]>=0:
           pout=‘%s‘%problem[0]+‘ ‘*(10-len(str(problem[0])))+‘%s\n‘%problem[1]
           fmake.write(pout)             ‘把题目存入文件中
           gennum+=1
     fmake.close
     print ‘maked %s arithmetic‘%gennum
     print ‘the result is in %s‘ %filepath   ’给出文件所在目录

if __name__==‘__main__‘:
     main()

写给孩子的第一个程序:生成一个TXT口算题文件

标签:

原文地址:http://www.cnblogs.com/yanxinhui/p/4766775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!