《教孩子学编程(Python语言版)》——2.3 海龟画圆

简介:

本节书摘来自异步社区《教孩子学编程(Python语言版)》一书中的第2章,第2.3节,作者[美]Bryson Payne,李军 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.3 海龟画圆

说到几何,海龟作图可以绘制很多有趣的形状,而不只是直线。我们将在2.4节中再次回到正方形,但现在,让我们来更多地了解一下Python Turtle库。

我们再来修改一行代码:t.forward(x)。我们在前面看到了这条命令或函数,它将海龟的钢笔向前移动x个像素并且绘制一条笔直的线段;然后,海龟转向并且再次绘制。如果我们修改这行代码来绘制更为复杂一点的图形,例如圆,那会怎么样呢?

好在,绘制一个固定大小(或半径)的圆的命令,和绘制一条直线的命令一样简单。我们将t.forward(x)修改为t.circle(x),如下面的代码所示。

CircleSpiral1.py

import turtle
t = turtle.Pen()
for x in range(100):
   t.circle(x) 
   t.left(91)

哦,将一条命令从t.forward修改为t.circle,会得到一个复杂得多的形状,如图2-3所示。t.circle(x)函数让程序在当前位置绘制了一个半径为x的圆。注意,这个绘制和简单的正方形螺旋线有一些相同点:它也有4组圆形的螺旋线,就像是正方形的螺旋线有4个边一样。这是因为我们使用t.left(91)命令,每次向左旋转都将超过90°一点点。如果我们学习过几何就知道,围绕一个点转一圈有360°,就像是一个正方形有4个90°的角(4×90 = 360)。海龟通过每次围绕图形旋转的比90°多一点点,从而绘制出这个螺旋线的形状。


daade781794c383f4f2602aa92495744408b0499

我们将会看到的一个区别是,圆形螺旋线比正方形螺旋线要大一些,实际上,大约是前者两倍那么大。这是因为t.circle(x)使用x作为圆的半径,而这是从圆心到边缘的距离,大概是圆的宽度的一半。

半径为x意味着,圆的直径,也就是说总的宽度是x的两倍。换句话说,t.circle(x)绘制的圆,当x等于1的时候,总宽度为2个像素;当x为2的时候总宽度为4个像素;按照这种方式,直到x等于99的时候,其宽度为198个像素。这几乎是200个像素宽了,或者说是正方形边最大的时候的两倍,因此,圆螺旋线看上去是正方形螺旋线的两倍的大小,当然,也会加倍的酷!

相关文章
|
1天前
|
机器学习/深度学习 人工智能 数据可视化
Python:探索编程之美
Python:探索编程之美
9 0
|
1天前
|
机器学习/深度学习 人工智能 数据处理
Python编程的魅力与实践
Python编程的魅力与实践
|
2天前
|
SQL 关系型数据库 MySQL
第十三章 Python数据库编程
第十三章 Python数据库编程
|
3天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
8天前
|
安全 数据处理 开发者
《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
19 1
|
8天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
35 0
|
9天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
21 0
|
10天前
|
Python
Python金融应用编程:衍生品定价和套期保值的随机过程
Python金融应用编程:衍生品定价和套期保值的随机过程
24 0
|
10天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
53 0
|
11天前
|
机器学习/深度学习 算法 定位技术
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
24 1