热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python10个100以内随机整数编辑_Python在小学数学中的应用

摘要:本文旨在说明Python编程在小学数学教学过程中的应用。通过6个案例,由浅入深地展示了Python在编题、解题、画图表、成绩分析中的强大功能&#x

摘要:本文旨在说明Python编程在小学数学教学过程中的应用。通过6个案例,由浅入深地展示了Python在编题、解题、画图表、成绩分析中的强大功能,有效的提高了教学中的工作效率。

倡导小学教育工作者学习并使用Python,让教学工作更加如鱼得水。

关键词:Python,小学,数学

正文:比尔·盖茨说过:“每个人都应该学一点编程”。其实,在科技飞速发展的今天,编程已经不再是只有专业程序员才能使用的工具了。十年前会用Word、Excel就能满足大量工作需要了,二十年前会用电脑打字就很厉害了,三十年前会用锄头大概也可以解决温饱。如今只会这些显然远远不够,我们需要掌握更多有效工具。作为一个普通人,尤其是一名数学老师,要是也能掌握一点编程知识,将会让工作变得快捷而高效。

换做以前,C语言太难了,Java环境不好搭建,还可以说时机未到,如今Python的出现可以说是普通人学习编程的最佳时机了。第一,安装便捷,默认下一步到底就可以直接使用自带的IDLE写代码了;第二,语言精练。举个简单的例子:求1+2+3+4+……+99+100的和。写成代码只要四行,如下:

sn=0for an in range(1,101):sn+=iprint(sn)

        第三,支持大量外部库,例如,创建文本,画图,打开Excel表格等,在数学教学过程中,用来编题、画图表、成绩分析等都非常实用。具体事例见下文。

下面,我将通过实际案例从编题、解题、画图表、成绩分析四个方面阐述Python在小学数学教学中的应用。

一、编题

小学数学,“得计算者得天下”已是不争的事实,所以数学老师要面临大量的编写计算题的工作,通常都是这里抄一下,哪里改一下。而使用Python,事情就变得很简单多了。

案例1. 编写100以内的加减乘除

编写思路:①使用random产生随机数;②使用choice方法随机选择“+、-、×、÷”符号;③使用while循环执行30次。

代码如下:

#导入库import randomfrom random import choice #设置循环i &#61; 1while i <30: a &#61; random.randint(1, 100) # 产生随机数a b &#61; random.randint(1, 100) # 产生随机数b # 随机选择加减乘除号 fh &#61; ["&#43;", "-","×","÷"] D &#61; choice(fh) #如果减数大于被减数或除数大于被除数&#xff0c;则不输出 if aand (D&#61;&#61; continue #打印算式 print(str(a) &#43; D &#43; str(b) &#43; "&#61;") i &#43;&#61; 1

注&#xff1a;如果要产生其他区间的数&#xff0c;则改变randint中的区间&#xff1b;如果要减少运算符号&#xff0c;则改变fh列表中的元素&#xff1b;如果要输出更多&#xff0c;则改变while循环的次数。

案例2. 编写分数计算

编写思路&#xff1a;分数计算题用Word来编写简直太低效&#xff0c;而Python命令行不支持分数&#xff0c;所以考虑使用标记语言Markdown来输出&#xff0c;即生成“.md”文件并使用Typora打开。

代码如下&#xff1a;

#导入库import random #定义分数函数def fenshu(a,b): fenshu&#61;r&#39;\frac{&#39;&#43;str(a)&#43;&#39;}{&#39;&#43;str(b)&#43;&#39;}&#39; return fenshu #自定义文件名称path&#61;input("输入路径名称(如&#xff1a;text.md)&#xff1a;")f &#61; open(path, &#39;w&#39;) #设置循环i &#61; 1while i <30: a &#61; random.randint(1,100) # 产生随机数 b &#61; random.randint(1,100) # 产生随机数 c &#61; random.randint(1,100) # 产生随机数 d &#61; random.randint(1,100) # 产生随机数 #公式头 up &#61; &#39;$&#39; f.write(up) #分数算式 gongshi &#61; fenshu(a, b) &#43; "&#43;" &#43; fenshu(c, d) &#43; "&#61;" f.write(gongshi) #公式尾 down &#61; &#39;$\n&#39; f.write(down) i &#43;&#61; 1f.writelines("\n")f.close()

注&#xff1a;生成的.md文件需要使用Typora软件打开&#xff0c;请提前安装好&#xff1b;支持导出图片、PDF&#xff0c;以及Word再进行编辑。

二、 解题

虽然用编程来解决数学计算有点投机取巧了&#xff0c;但是多掌握一种方法本身并没有什么问题&#xff0c;就好比不让学生使用计算器&#xff0c;但还是要教会学生使用计算器甚至珠算一样。换一个角度来讲&#xff0c;使用编程计算出结果&#xff0c;可以快捷地检测我们通过数学计算的结果正确与否。

案例3&#xff1a;计算1^2&#43;3^2&#43;5^2&#43;……&#43;97^2&#43;99^2

编写思路&#xff1a;使用range方法产生1到99所有奇数&#xff1b;使用for循环将所有奇数的平方相加。

代码如下&#xff1a;

sn&#61;0for an in range(1,100,2): sn &#43;&#61; i**2print(sn)

案例4&#xff1a;是否存在非零自然数a&#xff0c;b&#xff0c;c 三个数满足a2&#43;b2&#xff0c;b2&#43;c2&#xff0c;c2&#43;a2 都是平方数&#xff0c;如有请举例&#xff0c;如无请说明

编写思路&#xff1a;对于数论方面的相关问题&#xff0c;通常都是可以使用枚举法来做的&#xff0c;但之所以不使用枚举是因为人的枚举能力是有极限的&#xff0c;而程序则可以突破这种极限&#xff1b;对a,b,c分别从1枚举到1000&#xff0c;如满足条件则输出。

代码如下&#xff1a;

for a in range(1,1000): #对a进行枚举 for b in range(1,1000): #对b进行枚举 d &#61;( a**2&#43;b**2)**0.5 if int(d)&#61;&#61;d: #判断a&#xff0c;b的平方和的平方根是否为整数 for c in range(1,1000):#对c进行枚举 e&#61;(a**2&#43;c**2)**0.5 f&#61;(b**2&#43;c**2)**0.5 if int(e)&#61;&#61;e and int(f)&#61;&#61;f: #判断平方根是否为整数 print(a,b,c)

        注&#xff1a;这道题对于老师而言都算是难题了&#xff0c;小学生则几乎遇不到。笔者只是想说明&#xff0c;通过编程进行枚举则可以有效缓解面对难题的束手无策。难题尚能解决&#xff0c;更何况简单的题呢&#xff1f;

三、画图表

Excel表格自带画图表的功能&#xff0c;而且很强大&#xff0c;那为什么我们还要学习Python画图表呢&#xff1f;如果要产生大量图表&#xff0c;例如&#xff1a;每个学生的各科成绩都和平均分进行比较的条形统计图。此时用Excel就显得机械性重复作业了&#xff0c;那为什么不让程序来做呢&#xff1f;

案例5&#xff1a;根据以下成绩表画出每个学生的各科成绩都和平均分进行比较的条形统计图

姓名

总成绩

语文

数学

英语

郭靖

222

90

72

60

黄蓉

295

98

100

97

周伯通

199

60

59

80

平均分

238

82

77

79

编写思路&#xff1a;使用openpyxl库打开Excel表格&#xff1b;使用pylab绘制图像。代码如下&#xff1a;

#导入库from openpyxl import load_workbookfrom pylab import *#定义画图表函数def huatubiao(gerenchengji&#61;[],pingjunchengji&#61;[]): mpl.rcParams[&#39;font.sans-serif&#39;] &#61; [&#39;SimHei&#39;] name_list &#61; [&#39;总分&#39;,&#39;语文&#39;,&#39;数学&#39;,&#39;英语&#39;] x &#61;list(range(len(gerenchengji)-1)) #列表第一元素为姓名&#xff0c;减去 total_width, n &#61; 0.8, 2 width &#61; total_width / n plt.bar(x, gerenchengji[1:], width&#61;0.2, label&#61;gerenchengji[0],fc &#61; &#39;g&#39;) for i in range(len(x)): x[i] &#61; x[i] &#43; width plt.bar(x, pingjunchengji[1:], width&#61;0.2, label&#61;pingjunchengji[0],tick_label &#61; name_list,fc &#61; &#39;r&#39;) plt.legend() plt.show() plt.close()#打开Excel表格wb &#61; load_workbook(&#39;D:\成绩表.xlsx&#39;)sheet &#61; wb["Sheet1"]#平均分列表pingjunchengji&#61;[sheet["A5"].value,float(sheet["B5"].value),float(sheet["C5"].value),float(sheet["D5"].value),float(sheet["E5"].value)]#循环产生个人成绩列表for i in range(2,5): gerenchengji&#61;[sheet[&#39;A&#39;&#43;str(i)].value] for j in [&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;]: gerenchengji.append(float(sheet[j&#43;str(i)].value))#执行画图表函数 huatubiao(gerenchengji,pingjunchengji)

产生图表如下&#xff1a;

78afa88c804f103b54a911e6928adb18.png

四、成绩分析

对学生成绩进行分析&#xff0c;超过80分并超过平均分为优秀&#xff1b;超过80分但小于平均分说明成绩普遍较高&#xff1b;小于80分大于60分且大于平均分&#xff0c;说明成绩普遍较低&#xff1b;小于80分大于60分且小于平均分&#xff0c;说明成绩有待提高&#xff1b;小于60分小于平均分则说明成绩较差。

案例6&#xff1a;对学生数学成绩的各板块进行分析&#xff0c;找到优势和劣势知识点

姓名

准考证号

总成绩

计算

计数

数论

几何

应用题

组合

满分

300

20

40

60

60

80

40

曲灵风

2020001

179

10

12

44

45

45

23

陈玄风

2020002

170

20

30

27

12

60

21

梅超风

2020003

264

20

40

55

55

60

34

陆乘风

2020004

255

19

34

50

43

74

35

编写思路&#xff1a;将学生成绩和平均分、满分对比&#xff0c;得到学生所在档次&#xff0c;分成levelA-levelE&#xff1b;判断所在档次输出不同信息&#xff1b;图表内容与案例5相似&#xff1b;最后以.md文件形式输出即可。

代码如下&#xff1a;

from openpyxl import load_workbookimport matplotlib.pyplot as pltfrom pylab import * #打开要分析的Excel表格path_excel_input&#61;input("输入你要分析的数据表名称&#xff1a;")path_excel&#61;"D:\分数分析系统\\"&#43;path_excel_input&#43;&#39;.xlsx&#39;wb &#61; load_workbook(path_excel)sheet &#61; wb["Sheet1"] #定义成绩分析函数def fenxi(name): #获取标题栏 biaoti&#61;[] #标题列表 for n in sheet["1"]: biaoti.append(n.value) #获取满分列表 manfen&#61;[] for n in sheet["2"]: manfen.append(n.value) #满分列表 #使用传入的名字 name_chengji&#61;[] #个人成绩列表 k&#61;1 for i in sheet["A"]: if i.value&#61;&#61;name: for j in sheet[str(k)]: name_chengji.append(j.value) k&#43;&#61;1 #计算平均成绩 pingjun_chengji&#61;["平均成绩","/"] #平均成绩列表 for i in ["C",&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;,&#39;H&#39;,"I"]: sum_chenghi&#61;0 renshu_n&#61;0 for j in sheet[i][2:]: if j.value&#61;&#61;None: #判断表格数据不为空 pass else: sum_chenghi&#43;&#61;float(j.value) renshu_n&#43;&#61;1 pingjun_chengji.append(sum_chenghi/renshu_n) #计算最高分 max_chengji&#61;["最高分","/"] for i in ["C",&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;,&#39;H&#39;,"I"]: max_fen&#61;0 for j in sheet[i][2:]: if j.value&#61;&#61;None: #判断表格数据不为空 pass else: if max_fen max_fen&#61;float(j.value) renshu_n&#43;&#61;1 max_chengji.append(max_fen) #计算排名&#xff0c;从小到大 def paiming(a, list&#61;[]): list_sort &#61; sorted(list) paiming &#61; 1 for i in list_sort: if i &#61;&#61; a: return paiming else: paiming &#43;&#61; 1 #总分排序 zongfen_paixu&#61;[] for j in sheet["C"][2:]: if j.value &#61;&#61; None: # 判断表格数据不为空 pass else: zongfen_paixu.append(float(j.value)) paiming&#61;len(zongfen_paixu)&#43;1-paiming(name_chengji[2],zongfen_paixu) #对成绩进行分档 level_a&#61;[] level_b&#61;[] level_c&#61;[] level_d&#61;[] level_e&#61;[] def chengji_fenxi(biaoti&#61;[], xuesheng&#61;[], pingjun&#61;[],manfen&#61;[]): #成绩分析 #总成绩分析 for i in range(2,3): if xuesheng[i]>&#61;pingjun[i] and xuesheng[i]>&#61;manfen[i]*0.8 : zongchengji_fenxi&#61;"表现优秀&#xff0c;正确率在80%以上&#xff0c;高于全班平均水平。希望百尺竿头更进一步。" elif xuesheng[i]&#61;manfen[i]*0.8 : zongchengji_fenxi&#61;"表现优异&#xff0c;正确率在80%以上&#xff0c;但是本次考试分数普遍偏高&#xff0c;您的成绩未达到平均水平。望再接再厉。" elif xuesheng[i]>&#61; pingjun[i] and xuesheng[i]0.8 : zongchengji_fenxi&#61;"表现良好&#xff0c;成绩在平均水平以上&#xff0c;但是本次考试分数普遍较低&#xff0c;望早日补齐短板&#xff0c;提高正确率&#xff0c;再创佳绩。" elif xuesheng[i]&#61;pingjun[i] and xuesheng[i]>&#61;manfen[i]*0.8 : level_a.append([biaoti[i],xuesheng[i],pingjun[i],manfen[i]]) elif xuesheng[i]&#61;manfen[i]*0.8 : level_b.append([biaoti[i], xuesheng[i], pingjun[i], manfen[i]]) elif xuesheng[i]>&#61; pingjun[i] and xuesheng[i]0.8 : level_c.append([biaoti[i], xuesheng[i], pingjun[i], manfen[i]]) elif xuesheng[i]

产生结果如下&#xff1a;

27c3d94dcedd8495dadb18476426f454.png

小结

人生苦短&#xff0c;我用Python。除了自己使用&#xff0c;也可以教学生简单的使用。学习数学不就是为了学习解决问题的方法和探索不同的解决问题的方法么&#xff1f;谨以此文&#xff0c;供广大中小学数学同仁参考。




推荐阅读
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • #点球小游戏fromrandomimportchoiceimporttimescore[0,0]direction[left,center,right]defkick() ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文介绍了如何使用 Python 的 Bokeh 库在图表上绘制菱形标记。Bokeh 是一个强大的交互式数据可视化工具,支持丰富的图形自定义选项。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 开发笔记:2020 BJDCTF Re encode
    开发笔记:2020 BJDCTF Re encode ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 本文介绍如何利用 Python 中的 NumPy 和 Matplotlib 库,从 NumPy 数组中绘制线图。通过具体的代码示例和详细解释,帮助读者理解并掌握这一技能。 ... [详细]
author-avatar
ALI韩帅该
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有