热门标签 | 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;供广大中小学数学同仁参考。




推荐阅读
  • 本文深入探讨了HTML5中十五个重要的新特性,为开发者提供了详细的指南。 ... [详细]
  • 本文档详细介绍了Excel VBA编程中的基本语法,包括循环结构、条件判断、数据处理以及用户界面设计等内容,旨在帮助初学者快速掌握VBA编程技巧。 ... [详细]
  • 近期在研究Java IO流技术时,遇到了一个关于如何正确读取Doc文档而不出现乱码的问题。本文将详细介绍使用Apache POI库处理Doc和Docx文件的具体方法,包括必要的库引入和示例代码。 ... [详细]
  • 本文档旨在提供C语言的基础知识概述,涵盖常量、变量、数据类型、控制结构及函数定义等内容。特别强调了常量的不同类型及其在程序中的应用,以及如何正确声明和使用函数。 ... [详细]
  • 本文详细介绍了Golang中string类型的内部结构及其特性,包括字符串的定义、表示方式、数据结构以及相关的操作方法,如字符串拼接和类型转换等。 ... [详细]
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • C基本语法C程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象-对象具有状态和行为 ... [详细]
  • 基于Flutter实现风车加载组件的制作_Android
    Flutter官方提供了诸如 CircularProgressIndicator和 LinearProgressIndicator两种常见的加载指示组件,但是说实话,实在太普通,所 ... [详细]
  • FTX 闪崩,4 小时暴跌 80%,熊市的最后一跌?区块链已死?
    FTX 闪崩,4 小时暴跌 80%,熊市的最后一跌?区块链已死? ... [详细]
  • 转自:http:blog.sina.com.cnsblog_67419c420100vmkt.html 1.为什么要使用blocks将一个blocks作为函数或者方法的参数传递,可 ... [详细]
  • 本文档涵盖了多个 Python 编程练习题,包括使用 while 和 for 循环处理数字序列、字符串操作以及简单的算法实现等。每道题目都提供了详细的代码示例,旨在帮助初学者加深对 Python 基础知识的理解。 ... [详细]
  • 观察到在首次执行设置范围内的随机值分配时,结果倾向于靠近设定的最小值和最大值。 ... [详细]
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社区 版权所有