Python程序设计实践 教案 实验18 趣味数字.docx

Python程序设计实践 教案 实验18 趣味数字.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

《Python程序设计实践教程》课程教案

课题:趣味数字

教学目的:

现实生活中有许多有趣的数学问题。经常有意识地寻找并解决这些问题可以增强逻辑思维能力,进而开发大脑,提高智力水平,同时使生活变得丰富多彩。计算机就是帮助我们解决这些问题的强有力的工具。

通过编写程序解决数学难题,可以减少我们在解题时遇到的烦琐而复杂的计算,把精力集中在解决具体问题的方法上,锻炼思考能力和逻辑思维水平,同时提高自身的编程水平和应用计算机解决实际问题的能力。

本实验选取一些趣味数字编程实例,使读者了解数字的奇妙之处。

课型:新授课

课时:

本章安排2个课时。

教学重点:

重点:通过编写程序解决数学难题,减少解题时遇到的烦琐而复杂的计算,把精力集中在解决具体问题的方法上,锻炼思考能力和逻辑思维水平,同时提高自身的编程水平和应用计算机解决实际问题的能力。

教学难点:

难点:教学难点在于引导学生精准把握不同趣味数字(水仙花数、完全数、快乐数、不变初心数)的复杂判定规则,通过优化算法逻辑,高效实现对大量数字的准确判断,并能深入理解算法背后的数学原理与程序运行机制。

教学过程:

教学形式:讲授课,教学组织采用课堂整体讲授和分组演示。

教学媒体:采用启发式教学、案例教学等教学方法。教学手段采用多媒体课件、视频等媒体技术。

板书设计:

本课标题

趣味数字

课次

0.5

授课方式

理论课□讨论课□习题课□其他□

课时安排

2

学分

共2分

授课对象

普通高等院校学生

任课教师

教材及参考资料

1.《Python程序设计实践教程》。

2.本教材配套视频教程及学习检查等资源。

3.与本课程相关的其他资源。

教学基本内容

教学方法及教学手段

课程引入

数字看似平淡无奇,实则暗藏许多奇妙之处。比如,在浩瀚的数字海洋里,有一类特殊的“水仙花数”。像153,它的每一位数字的立方和,即13+53+33,恰好等于它本身153。这是不是很神奇?还有“完全数”,6就是个完全数,它的所有真因子(即除自身以外的因子)1、2、3相加,结果正好是6。在日常生活中,我们也能接触到数字规律的应用。比如商品价格尾数的设置,就可能涉及到数字心理学。接下来,让我们一起探索“水仙花数”“完全数”“快乐数”“不变初心数”等趣味数字,揭开数字背后隐藏的神秘面纱,感受数字世界的独特魅力与奥秘,开启这段充满惊喜的数字探索之旅。

参考以下形式:

1.衔接导入

2.悬念导入

3.情景导入

4.激疑导入

5.演示导入

6.实例导入

7.其他形式

实验18趣味数字

实例18-1水仙花数

1.题目描述

水仙花数也称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数、阿姆斯特朗数。如果一个?3?位数等于它的?3?个数字的立方和,那么该?3?位数就称为水仙花数。例如13+53+33=153,因此153?是一个水仙花数。

编写程序,计算?100~999?的所有水仙花数。

2.题目分析

根据水仙花数的定义,判断一个数是否为水仙花数,最重要的是把给出的?3?位数的个位数、十位数、百位数拆分出来,并求其立方和(设为?s),若?s?与给出的?3?位数相等,则该?3?位数就是水仙花数,反之则不是。

3.算法设计

在?for?循环中,对每个整数逐个分解出其个位数、十位数、百位数,判断其立方和是否等于这个数本身,若等于则该整数是水仙花数。

具体判断过程如下。

①将?n?除以?100,得出百位数?i。

②将?n-100i除以?10,得出十位数?j。

③将?n?对?10?取余,得出个位数?k。

④判断?i、j、k?的立方和是否等于?n。

在?Python?中,“//”是一个算术运算符,表示整数除法,可以返回商的整数部分(向下取整);“%”可以用来计算求模,即两个数相除后的余数。

4.程序代码

#sl18-1.py

forninrange(100,1000):

i=n//100

j=n//10%10

k=n%10

ifn==i**3+j**3+k**3:

print(f{n})

5.运行结果

153

370

371

407

6.思考与讨论

对于某一个数,拆分每个位置的数字的算法有很多种,可以根据不同情况选择不同的算法(对于同一问题,不同算法的效率有时会相差很多)。

(1)方法一:枚举算法

foriinrange(1,10):

forjinrange(0,10):

forkinrange(0,10):

ifi*100+j*10+k==i**3+j**3+k**3:

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档