这个 Lesson 的内容是画画编程,通过好玩的代码(上图左侧)画出有趣的图案(上图右侧)!注:代码在线上完成即可,如果要安装本地环境请参考 Python 00
导学的指导。这里的指导只是安装 Python,建议安装 Anaconda 集成环境更加方便。
这节开始,我们得到了新的代码:
import turtle
fred = turtle.Turtle()
fred.color("red")
fred.forward(100)
fred.right(135)
fred.forward(140)
fred.right(135)
fred.forward(100)
对比上一节和上面代码高亮(就是说代码里的不同部分的颜色不同,方便大家识别),我们对比这两个代码:
import
turtle。在 Python 语言中,有大量的第三方包,这些包能够提供很多有趣和强大的功能。就相当于 Python 官方版本的扩展,比如这里的 turtle
。fred = turtle.Turtle()
上一节的 fred 和修改后的 amy 的术语就是变量。
字符串就是:一串字符(哈哈哈哈哈,我喜欢这个定义!)要注意一点,Python中,字符串要用引号引起来,否则程序不知道是字符串会报错。所有符号要用英文的,否则会报错!
这一节我们来讲下 import turtle 里的这个 turtle,这个turtle 其实就是一个模块,里面打包了好多和画图相关的功能。
模块 module: a file that has a collection of useful code that can be used in other Python programs.
在导入以后,我们就能使用 model 中的方法来控制黄色三角的移动了,调用方式是 .方法名
:
另外,也请记住,Python是区分大小写的语句:
注意,Python 区分大小写。例如,在 turtle.Turtle() 中,Turtle() 中的 T 大写了。因此 turtle 与 Turtle 含义不一样。我们说 Python 是一个区分大小写的编程语言。
下面的代码后面循环会学到,我在代码里面用标注(#开头的行)简单解释下:
for side in [1, 2, 3, 4]:
# in 就是说,在in后面的每个元素都要执行一遍后面的代码
# for 后面的 side 指的是边,这里改成 s,i都可以,只是指代 in 里的一个元素
# 注意循环 for 是用 :结尾的
amy.forward(100)
amy.right(90)
# 以上两个就是要做什么了
# 先向前100,再右转90
# 当[1,2,3,4]循环完成后,4边就画好了
后续还有详细的解释,这里大家明白 for in :就是一个循环,和画图中的代码是怎么回事就好了。注意 : 后面的循环语句是有缩进的。
这节看懂即可,后续循环将会详细讲解。后面的练习:
import turtle
anna = turtle.Turtle()
for path in [1, 2, 3, 4]:
for step in [1, 2, 3]:
anna.forward(10)
的提示是:每次 anna.forward(10) 被调用时,turtle 将向前移动 10 个像素,总共发生了 12 次,因为 4 × 3 = 12。因此总共向前移动了 120 个像素。
这里对解决方案的代码这里做个解释:
for line in [1, 2, 3]:
amy.color("red")
amy.forward(50)
amy.penup()
if line != 3:
amy.forward(50)
amy.pendown()
大家注意到 if 这一行了么?这行的意思是:如果 line 这个变量不等于3,就执行后面缩进的那行代码(前进50像素)。这是一个判断语句。
那么为什么判断是否等于3呢,我们再回来看第一行:for line in [1, 2, 3]:
这个循环会把 1,2,3 循环赋值给 line 这个变量,当最后一次赋值完成后, line = 3。
那么这时根据 if 那行语句,就不再向前了,这是处理画图结束时用到的。
这节非常重要,请认真看,学会从程序的提示信息中找到怎样解决问题的方向,3个重点:
import turtle
alison = turtle.Turtle()
for angle in [15, 30, 45] # missing colon 缺少冒号
alison.right 90) # missing parenthesis 缺少括号
import turtle
michael = turtle.Turtle()
for side in [1, 2, 3, 4, 5, 7, 8]:
michael.forward(100)
michael.right(45)