首页 > 其他 > 详细

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

时间:2015-08-28 16:53:25      阅读:180      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!