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




推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • 实验2:Open vSwitch虚拟交换机实践   实验3:OpenFlow协议分析实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Python版Protobuf的安装和使用方法,包括版本选择、编译配置、示例代码等内容。通过学习本教程,您将了解如何在Python中使用Protobuf进行数据序列化和反序列化操作,以及相关的注意事项和技巧。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdownAppStore要求我再次付款相关的知识,希望对你有一定的参考价值。 ... [详细]
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社区 版权所有