Python快速编程入门10.4.2 模拟时钟 实训文档.docxVIP

Python快速编程入门10.4.2 模拟时钟 实训文档.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-4000 10.4.2 模拟时钟 钟表是一种计时的装置,也是计量和指示时间的精密仪器。钟表的样式千变万化,但是用来显示时间的表盘相差无几,大多数钟表表盘的样式由刻度(共60个,围成圆形)、指针(时针、分针和秒针)、周日期显示和日期显示组成,如下图所示。 钟表表盘结构图 图中的表盘中有三根指针:时针、分针、秒针,它们的一端被固定在表盘中心,另一端按照顺时针的方向围着表盘中心位置旋转。表盘中位于中心顶部的点对应的刻度是12,此刻度所处的位置是所有指针的起始点,秒针每旋转一周分针移动一个刻度,分针每旋转一周时针移动5个刻度。 本案例要求绘制钟表表盘结构图中的钟表,并使钟表的日期、周日期、时间跟随本地时间实时变化。 实例目标 通过完成本实例,读者应掌握以下知识或技能: 了解turtle模块的基本使用。 实例分析 钟表的模拟程序可以分为外观绘制和时间与日期处理两个任务,其中,外观绘制的任务可以细分为绘制表盘刻度、绘制指针和绘制日期显示文本三个子任务,处理日期的任务可以细分为处理日期和处理周日期两个子任务。所有的子任务封装成独立的函数,每个函数的功能说明如下。 setup_clock()函数:绘制钟表的刻度。 init()函数:程序初始化设置,包括绘制三个表针、日期显示和周日期显示文本。 week()函数:以指定的格式返回周日期。 day()函数:以指定的格式返回日期。 tick()函数:实现钟表的动态绘制。 main()函数:程序执行的起点。 此外还包括以下两个函数,它们是为了复用代码而设计的,功能如下。 skip()函数:使指定画笔移动指定的距离。 make_hand()函数:注册Turtle形状,建立名字为name的形状。 绘制动态的钟表需要创建五个Turtle对象,包括1个表示钟表表盘刻度的对象、3个表示钟表的时针、分针和秒针的对象和1个用于显示日期与周日期的表盘对象。 代码实现 下面分别设计程序中的各个函数。 (1)skip()函数 skip()函数的功能是将画笔移动指定的距离,它包含了抬起画笔、移动画笔和落下画笔三个固定的步骤。绘制刻度时,无论是绘制线段还是圆点,都会涉及到画笔的移动,为了避免多个位置出现重复的代码,所以设计了skip()函数。skip()函数的定义如下所示: def skip(step): 将画笔移动到指定的距离 penup() forward(step) pendown() (2)setup_clock()函数 setup_clock()函数的功能是绘制钟表的刻度。该函数在绘制钟表刻度时,以钟表的中心为起始点,从中心位置开始移动画笔到指定的位置落笔,绘制完线段或圆点之后再次回到中心点,改变画笔的角度,移动画笔到指定的位置落笔绘制下一个刻度。setup_clock()函数的定义如下所示: def setup_clock(radius): 建立钟表的外框 reset() pensize(7) # 设置画笔线条的粗细 for i in range(60): skip(radius) # 在距离圆心为r的位置落笔 if i%5==0: # 若能整除5,则画一条短直线 forward(20) skip(-radius-20) else: # 否则画点 dot(5) skip(-radius) right(6) 以上函数中使用for-in语句控制循环执行60次,绘制60个刻度,通过if-else语句区分了画短线与圆点两种情况:若能整除5则画短线,否则就画圆点。 (3)make_hand()函数 make_hand()函数的功能是注册Turtle形状。钟表中的三个指针长度不同,但形状相似。为了防止冗余,使用make_hand()函数实现直线的绘制功能。make_hand()函数的定义如下所示: def make_hand(name,length): 注册turtle形状,建立名字为name的形状 reset() skip(-0.1*length) # 开始记录多边形的顶点 begin_poly() forward(1.1*length) # 停止记录多边形的顶点,并与第一个顶点相连 end_poly() # 返回最后记录的多边形 handFor

您可能关注的文档

文档评论(0)

弹弹 + 关注
实名认证
文档贡献者

人力资源管理师、教师资格证持证人

该用户很懒,什么也没介绍

版权声明书
用户编号:6152114224000010
领域认证该用户于2024年03月13日上传了人力资源管理师、教师资格证

1亿VIP精品文档

相关文档