先看要求

小学数学老师很辛苦,经常为出一套数学练习题而绞尽脑汁,答案需反复计算,以免出错影响学生练习。通过python程序可以非常容易的随机出数学练习题,答案实时获得,基本无错。编写一个混合加减法出题程序,可以根据输入出题数量随机输出100以内混合加减法的计算题。出题试卷分为不带答案和带答案两部分,分别输出到屏幕和文件(math.txt和key.txt)中。屏幕输出效果如图所示。

再看代码

from random import randint
import random
def get_expression():#算式的生成a=randint(0,100)b=randint(0,100)#随机生成1~100之间的整数sign=random.choice(['+','-'])#随机进行+,-运算if sign=='+':ans=a+belse:ans=a-bif ans<0 or ans>100:#如果结果不在0-100之间 则重新生成a bget_expression()else:a='{: <2d}'.format(a)b='{: <2d}'.format(b)ans='{: <2d}'.format(ans)#a,b,ans格式化,统一为2个宽度 使输出更整齐,美观#存放 带没有(ex1)答案  和 有答案(ex2) 的算式ex1=str(a)+str(sign)+str(b)+'='ex2=str(a)+str(sign)+str(b)+'='+str(ans)global expressionexpression=list()expression.append(ex1)expression.append(ex2)return expression#得到的两个算式以列表的形式返回def save_expression(n):#得到指定数量的算式expression_Noans=list()#不带有答案expression_withans=list()#带有答案for i in range(0,n):#调用n次生成函数,得到n个满足条件的算式get_expression()expression_Noans.append(expression[0])expression_withans.append(expression[1])return [expression_Noans,expression_withans]#返回的expression_Noans,expression_withans列表中各有n个算式def show_expression(n=int(eval(input('请输入出题数量:')))):#算式的输出和打印fp1= open(r'C:\Users\Peng\Desktop\math.txt','a+')#’a+’表示如果没有这个文件则生成,有则在内容中继续填充fp2= open(r'C:\Users\Peng\Desktop\key.txt','a+')#expression_Noans=save_expression(n)[0]#expression_withans=save_expression(n)[1]
#如果这么写,就相当于重新调用了get_expression()函数,答案会不一致lis=save_expression(n)expression_Noans=lis[0]expression_withans=lis[1]show_number=0#用于记录每行输出的题量 控制排版print(n,'道混合加减法题:')#在频幕上输出print(n,'道混合加减法题:',file=fp1)#打印至文本文档中for i in range(0,len(expression_Noans)):print(expression_Noans[i],end='     ')print(expression_Noans[i],end='     ',file=fp1)show_number+=1if show_number%2==0:#每行输出两个题print('\n')#在频幕上输出print('\n',file=fp1)#打印至文本文档中show_number=0#用于记录每行输出的题量 控制排版print()#换一行输出print(n,'道混合加减法题(带答案):')#在频幕上输出print(n,'道混合加减法题(带答案):',file=fp2)#打印至文本文档中for i in range(0,len(expression_withans)):print(expression_withans[i],end='      ')print(expression_withans[i],end='      ',file=fp2)show_number+=1if show_number%2==0:print('\n')print('\n',file=fp2)
show_expression()

最后看一些创作过程中的总结

1,题目生成并不难,只要利用randint()模块随机生成两个整数,然后随机做加减法就可以完成,计算符号的随机==>      random.choice(['+','-']),注意一个细节,100以内加减法应该控制答案的范围,防止越界(不应该出现答案是负数的算式)

2,输出的格式化问题,如何让题目排版整齐,是难点,把没有答案和有答案的分开输出在频幕上比打印到对应的文档要难一点。打印到文档只要存入不同路径,相当于做两件独立的事情,打印到频幕上要整体一起做,而且有先后显示的区别。

3,要注意get_expression()函数每调用一次,都会生成一个不一样的算式,所以要化动为静,每生成一个,就把他存入列表,然后返回该列表,就得到了固定不变的算式,方便后续操作,否则可能会遇到算式和答案不匹配的情况。

4,然后就是一些小问题,让每个算式的长度一致,打印的时候会相对美观,'{: <2d}'.format(a),利用数字的format格式化方法,让每个数字占2个长度,像1和11就会对齐

结果:

利用PYTHON出小学数学题相关推荐

  1. 用Python解小学数学题(人教版二年级(上)第35页)

    人教版小学数学二年级(上)的第35页有道思考题:把1~9这9个数按从小到大的顺序排列,中间添上一些"+""-",可以使计算的结果等于100.比如:12+3-4+ ...

  2. 用Python解小学数学题(人教版一年级(下)第45页:猜数字)

    人教版小学数学一年级(下)的第45页有道数学游戏:猜数字.之前学习过语句,今天尝试自己独立写出来.中间经历了很多调试,有一次程序不停执行,还要按Ctrl+C才能停下来. 能看懂(读)和自己会写(写)真 ...

  3. python 解小学数学题_python 解数学题!求帮助

    [Python] 纯文本查看 复制代码#获取某个位置之后3个的火柴 def Get3Plu(aDict: dict, index: int) -> int: count = 0 for i in ...

  4. python 解小学数学题_孩子尝试python解数学题,怎么实现呢?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 from random import randint black = 1994 white = 1993 n = 1 a = 0 b = 0 c = 0 ...

  5. 用python做简单的题目_「每日一练」巧用python做小学的数学题

    原标题:「每日一练」巧用python做小学的数学题 很多的小学问题其实已经比较复杂了,我们运用传统的算法,可能会比较难以理解,这里我们可以巧用Python来完成一些小学题目的计算! 下边我们就一起来看 ...

  6. Python神器可以拯救小学数学题不会做

    大家好,我是小小明. 今天看到了一道我做不出来的小学数学题: 目前的要求就是要求出阴影部分的面积: 虽说只是一道小学数字题,但作为渣渣我是真的不会做.虽然我不会做,但是我会Python,所以可以让Py ...

  7. python画曲线-利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码. 直接上代码: from sklearn.datasets import load_breast_cancer ...

  8. python中词云图怎样变成特殊图案_如何利用python画出一个多变的词云图?(1)...

    问题描述: 如何利用python画出一个多变的词云图? 解决方法:import numpy as np import matplotlib import matplotlib.pyplot as pl ...

  9. 利用Python制作王者荣耀出装小助手,引来了老板的注意!

    导语 T_T并不玩这些游戏... 单纯来蹭个热点... 大概是因为蹭热点需要的技术含量比较低? 就这样吧~~~ 利用Python制作命令行版的王者荣耀出装小助手. Let's Go! 开发工具 Pyt ...

最新文章

  1. pku 2195 Going Home KM最小权匹配问题
  2. Android网络服务发现(NSD)协议的使用
  3. 【可视化】seaborn常用的10种数据分析图表
  4. java注释的理解,java注解原理——记录一下自己的理解
  5. 数据库自动备份脚本并删除前3天的备份
  6. 亿铸科技完成过亿元天使轮融资 指数资本担任独家财务顾问
  7. 2016年物联网行业十大并购事件
  8. Mysql自动设置时间(自动获取时间,填充时间)
  9. 数据库、C#、Java生成唯一GUID 方法
  10. Lua参数绑定函数实现方法
  11. 原来姹紫嫣红开遍 -- 牡丹亭·游园惊梦
  12. 【CSS】笔记4-浮动、切图、学成在线
  13. 文献管理软件//Zotero的常用插件——Sci-hub/shortdoi批量下载、Zotfile重命名PDF文件及ZoteroQuickLook快速预览(二)
  14. 安装gfortran
  15. 市场调研—2021-2027全球与中国硬质托盘包装市场现状及未来发展趋势
  16. vue引入Echarts画饼图详解
  17. CSDN有哪些值得学习的专栏?
  18. jQuery 操作属性
  19. java计算机毕业设计小学教师课程管理系统源程序+mysql+系统+lw文档+远程调试
  20. kubernetes---Pause容器---Infra

热门文章

  1. 群签名和环签名的区别_环签名与群签名
  2. 独家 | 19年NAACL纪实:自然语言处理的实用性见解
  3. java redis 过期_Redis中的键值过期操作
  4. TypeScript:any和unknown
  5. 我们到底该不该去初创公司上班?
  6. 2018------书籍电影和音乐
  7. 02-Lynda备用
  8. Android studio Your SDK location contains non-ASCII characters解决方法
  9. 杭州电子科技大学acm---2009
  10. html/css/javascript-编辑器