版权声明:本文为博主原创文章,欢迎转载,并请注明出处。联系方式:460356155@qq.com

武汉光谷一小二年级要求家长每天要给小孩出口算题目,让孩子练习。

根据老师出题要求编写了Python程序自动出题,结果保存为txt文件,打印出来作为练习用,这样就不用每天繁琐地人工出题了,其中的数字用randint随机产生。

程序如下:

# -*- coding:utf-8 -*-

__author__ = 'zhengbiqing 460356155@qq.com'
__doc__ = """武汉市光谷一小二年级数学口算自动出题程序 2017-05-31""" from random import randint sym = [' + ', ' - '] # 当前文件夹下创建口算题目文件math.txt
fobj = open('math.txt', 'w') def base_exei_oneline(pmin, pmax, mmin, mmax, multimin, multimax, divmin, divmax):
'''
pmin,pmax:加数、被加数最小最大值
mmin,mmax:减法转换成加法后,加数、被加数最小最大值
multimin,multimax:乘数、被乘数最小最大值
divmin,divmax:除法转换成乘法后,乘数、被乘数最小最大值
''' # plus:加法算式,rjust(2):按2位数右对齐
plus = str(randint(pmin, pmax)).rjust(2) + ' + ' + str(randint(pmin, pmax)).rjust(2) + ' =' # minus:减法算式
minus1 = randint(mmin, mmax)
minus2 = randint(mmin, mmax)
minussum = minus1 + minus2
minus = str(minussum).rjust(2) + ' - ' + str(minus1).rjust(2) + ' =' # multi:乘法算式
multi1 = randint(multimin, multimax)
multi2 = randint(multimin, multimax)
multi = str(multi1).rjust(2) + ' x ' + str(multi2).rjust(2) + ' =' # div:除法算式
div1 = randint(divmin, divmax)
div2 = randint(divmin, divmax)
divmulti = div1 * div2
div = str(divmulti).rjust(2) + ' /' + str(div1).rjust(2) + ' =' lineitem = [plus, minus, multi, div]
line = (18 * ' ').join(lineitem)
print line
fobj.writelines(line + '\r\n') # 4列x10行道加、减、乘、除基本题,每行加、减、乘、除题各1道
def base_exeicise():
for col in range(10):
base_exei_oneline(1, 20, 1, 50, 1, 9, 1, 9) # 类型1算式:... +/- ... +/- ...
def type1_str(summin=1, summax=100):
'''
summin,summax:允许总和的最小最大值
'''
sym1 = sym[randint(0, 1)]
sym2 = sym[randint(0, 1)] if sym1 == ' + ' and sym2 == ' + ':
sum_ = randint(summin + 2, summax)
first = randint(summin, sum_ - 2)
second = sum_ - first
second = randint(summin, second - 1)
third = sum_ - first - second
elif sym1 == ' + ' and sym2 == ' - ':
sum_ = randint(summin + 1, summax)
first = randint(summin, sum_ - 1)
second = sum_ - first
third = randint(summin, sum_)
elif sym1 == ' - ' and sym2 == ' + ':
first = randint(summin + 1, summax)
second = randint(summin, first)
third = randint(first - second, summax)
elif sym1 == ' - ' and sym2 == ' - ':
first = randint(summin + 2, summax)
second = randint(summin, first)
third = first - second
third = randint(summin, third) arithmetic = str(first).rjust(2) + sym1 + str(second).rjust(2) + sym2 + str(third).rjust(2)
print arithmetic
return arithmetic # 类型2算式:... +/- ... x ...
def type2_str(multimin=1, multimax=9, summin=1, summax=100):
'''
multimin,multimax:乘数、被乘数最小最大值
summin,summax:允许总和的最小最大值
'''
sym1 = sym[randint(0, 1)]
second = randint(multimin, multimax)
third = randint(multimin, multimax)
multi = second * third if sym1 == ' + ':
first = randint(summin, summax - multi)
else:
first = randint(multi, summax) arithmetic = str(first).rjust(2) + sym1 + str(second).rjust(2) + ' x ' + str(third).rjust(2)
print arithmetic
return arithmetic # 类型3算式:(... +/- ...) / ...
def type3_str(multimin=1, multimax=9, summin=1, summax=100):
'''
multimin,multimax:乘数、被乘数最小最大值
summin,summax:允许总和的最小最大值
'''
sym1 = sym[randint(0, 1)]
second = randint(multimin, multimax)
third = randint(multimin, multimax)
multi = second * third if sym1 == ' + ':
first = randint(summin, multi)
second = multi - first
else:
second = randint(summin, summax - multi)
first = multi + second arithmetic = '(' + str(first).rjust(2) + sym1 + str(second).rjust(2) + ')' + ' / ' + str(third).rjust(2)
print arithmetic
return arithmetic # 生成一套题
def oneday_homework():
# 基本题
base_exeicise()
# 类型1题
plus1 = type1_str()
plus2 = type1_str()
# 类型2题
plus3 = type2_str()
# 类型3题
plus4 = type3_str()
plus5 = type3_str() # 类型1、2题打印一行
line = [plus1, plus2, plus3]
lines = (29 * ' ').join(line)
print lines
fobj.writelines(lines + '\r\n' * 4) # 类型3题打印一行
line = [plus4, plus5]
lines = (29 * ' ').join(line)
print lines
fobj.writelines(lines + '\r\n' * 4)
fobj.writelines(r'用时______分钟 对______题(共45题) 家长签名:') # 一张A4纸上下各打印1份
oneday_homework()
fobj.writelines('\r\n' * 6)
oneday_homework()
fobj.close()

结果如下:

用Python开发小学二年级口算自动出题程序的更多相关文章

  1. 悲催的二柱子们做小学二年级四则运算题(Javaweb)

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  2. Python开发(二):列表、字典、元组与文件处理

    Python开发(二):列表.字典.元组与文件处理 一:列表二:元组三:字典四:文件处理 一:列表   为什么需要列表 可以通过列表可以对数据实现最方便的存储.修改等操作.字符串是不能修改的,所以无法 ...

  3. python开发基础(二)运算符以及数据类型之bool(布尔值))

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

  4. python开发基础(二)运算符以及数据类型之dict(字典)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

  5. python开发基础(二)运算符以及数据类型之tuple(元组)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

  6. python开发基础(二)运算符以及数据类型之float(浮点类型)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

  7. python开发基础(二)运算符以及数据类型之list(列表)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

  8. python开发基础(二)运算符以及数据类型之str(字符串)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

  9. python开发基础(二)运算符以及数据类型之int(数字)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

随机推荐

  1. MyCat做MySQL负载均衡(享学课堂,咕泡学院听课笔记)

    不要用战术上的勤奋,掩盖战略上的懒惰. 一.数据库集群演示 演示的数据库的表分了三种, 1.配置表,存储一些配置文件,其他业务表需要关联读取,每个数据库都存储配置表的全部内容,即操作Mycat,所有集 ...

  2. 获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级(微信小程序开发)

    微信小程序开发时,Console 提示:获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级 错误原因: 直接调用这个方法依旧可以获取用户信息, 但是如果你之前没有点击过那个授权 ...

  3. Web前端:博客美化:一、模板美化

    1.选用模板simplememory 2.写css放在 这些会覆盖掉原来的css样式 我是在网上找的css代码二次加工的 : ) /*1.针对simplememory的修改*/ #google_ad_ ...

  4. WEB前端开发记录PS常见操作

    1.相邻2个层合并的快捷键方法:先选择上面的一个层,再按ctrl+e. 2.合并一个组内的多个层或组:在该组单击右键,选择“转换为智能对象”,然后可对其进行其它操作,比如:截取该组的为一张图片:ctr ...

  5. HTML和CSS前端教程03-CSS文本样式

    目录 1.CSS颜色-建议就用十六进制 2.CSS长度的度量单位-建议就用px 3.CSS文本样式 3.1. 字体属性 3.1. 文本样式 1.CSS颜色-建议就用十六进制 p{ color: #ff ...

  6. Linux 监控CPU、内存、IO

    安装说明 # tar zxvf sysstat-11.5.6.tar.gz# cd sysstat-11.5.6# ./configure# make# make install 备注:若在linux ...

  7. iOS ----------NSDate 、CFAbsoluteTimeGetCurrent、CACurrentMediaTime 的区别

    框架层: NSDate 属于Foundation CFAbsoluteTimeGetCurrent() 属于 CoreFoundatio CACurrentMediaTime() 属于 QuartzC ...

  8. JavaScript函数继承

    在ES6中有了继承,使用extends关键字就能实现.但这里讲的讲的不是这种,而是ES6之前的几种实现继承的方式. (一)原型继承 ECMAScript中将原型链作为实现继承的主要方法.其基本思想是利 ...

  9. 如何正确使用Espresso来测试你的Android程序

    UI测试在Android平台上一直都是一个令人头痛的事情, 由于大家平时用的很少, 加之很多文档的缺失, 如果很多东西从头摸索,势必踩坑无数. 自Android24正式淘汰掉了Instrumentat ...

  10. mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享

    摘要: 下文讲述清空数据库中所有表信息的方法分享,如下所示: 实验环境:sql server 2008 实现思路: 1.禁用所有约束,外键 2.禁用所有触发器 3.删除表数据 4.开启触发器 5.开启 ...