在我们开始学习Python之前,
你可以忘记所有以前你学到关于Python的内容,
因为这对你来说可能是累赘,
不会有任何的好处。
比如说学校或者教材里面教你的。
说Python语言是一门解释性语言。
那这个解释型语言对你有什么帮助呢?对我们学程序有什么帮助呢?一点帮助都没有。
我们既然选择了Python这门语言。
那肯定就是为了学习他为了解决问题,那他至于是什么语言,
什么解释型语言面向对象语言,这跟我们都没什么关系。
其实我们只需要知道Python能
解决什么问题?
能做什么?
怎么去用它?
抱着这样的目的来学习,
我相信看这篇文章的每个人应该很快就可以入门了。
这篇文章我的想法就是给那些哪怕从来都不懂Python语言是什么的同学从头开始讲起,
而且会非常有意思。
它适合有基础和没基础的。
我准备给大家抛出一个入门的小程序。
但是先请大家想象一下,你们眼中的Python的程序应该是怎么样的?
print("Hello, World!")
所有的程序都是先从打印hello world开始。
好吧,我承认我也不能免俗。
但是他这里打印hello world只需要一句话。
可以对比一下c语言打印的hello world
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
非常明显,c语言打印一个hello word需要用到五行代码。
而Python只需要一行代码就可以了。
这就是Python相对于其他语言来说它更精简,我们用Python写出来的程序也会比用其他语言写出来的程序更简洁。
而这冰山一角。冰山一角,接下来我们就开始上正菜。
下面的代码是可以直接运行的完整代码,
接下来我会标注哪些代码可以直接运行,
哪些代码不可以直接运行。
#这是完整的一个能实现功能的代码。可以直接运行。
from turtle import Screen, Turtle
PIXEL_SIZE = 30
CURSOR_SIZE = 20
COLORS = {
'B': 'blue',
'K': 'black',
'O': 'orange',
'R': 'red',
'T': 'brown',
'W': 'white',
'Y': 'yellow',
}
PIXELS = [
"WWWRRRRRRWWWW",
"WWRRRRRRRRRRW",
"WWTTTOOOKOWWW",
"WTOTOOOOKOOOW",
"WTOTTOOOOKOOO",
"WTTOOOOOKKKKW",
"WWWOOOOOOOOWW",
"WWRRBRRRRWWWW",
"WRRRBRRBRRRWW",
"RRRRBBBBRRRRW",
"OORBYBBYBROOW",
"OOOBBBBBBOOOW",
"OOBBBBBBBBOOW",
"WWBBBWWBBBWWW",
"WTTTWWWWTTTWW",
"TTTTWWWWTTTTW",
]
WIDTH, HEIGHT = len(PIXELS[0]), len(PIXELS)
screen = Screen()
screen.setup((WIDTH + 3) * PIXEL_SIZE, (HEIGHT + 3) * PIXEL_SIZE)
screen.tracer(False)
turtle = Turtle()
turtle.hideturtle()
turtle.shape('square')
turtle.shapesize(PIXEL_SIZE / CURSOR_SIZE)
turtle.penup()
x0 = -WIDTH/2 * PIXEL_SIZE
y0 = HEIGHT/2 * PIXEL_SIZE
for i, row in enumerate(PIXELS):
turtle.setposition(x0, y0 - i * PIXEL_SIZE)
for pixel in row:
turtle.color(COLORS[pixel])
turtle.stamp()
turtle.forward(PIXEL_SIZE)
screen.tracer(True)
screen.exitonclick()
大家不要被这个程序吓到了。
它能实现一个非常有意思的功能。
对于上面的程序,大家肯定会想,我是一个初学者,一下子就来这么复杂的程序,我该怎么?
?????????
首先我们要回答一个问题,
这个程序需要在什么样的环境,
什么样的硬件,什么样的软件下运行?
Python第一个程序的运行
上面的视频回答了这个程序需要在什么环境运行?需要怎么去做,结果是什么
强烈建议在看文章的各位点进去看一下。
如果你没有点进去看,那我就直接把运行结果贴出来。
这个是程序运行之后的一个结果,打印的是一个像素画----超级马里奥。
正如我在视频里面说到的。
我们可以不懂程序每一行代码的意思。
但是我们需要知道这个程序是否能够正确运行。
我们需要知道这个程序,他能给到我们一个什么样的结果。
确定这些信息之后,我们再去研究程序是怎么实现的,这样才有意义。
我们先给这个程序起个名字,那就叫他<超级马里奥>。
接下来要一行一行的,看一下这个代码是怎么实现这个功能。
我们看到这里一共有58行代码。
就实现了我们想要的这个功能
# 引入 turtle 库中的 Screen 和 Turtle 类
from turtle import Screen, Turtle
我们先从第1行往下读。
这里有一个from turtle import Screen,Turtle
这个turtle 其实是一个库文件,它里面能实现很多功能,我们可以把它想象成是一个工具箱。
from turtle import Screen,Turtle 的意思就是从哪里导入什么
这是一个固定的写法。
我们只要记住就可以。
之所以Python会那么多人喜欢用他,是因为他真的有很多很多的工具。
其实当你读到这里,你已经开始入门Python这门语言了。
接下来我们就看一下这个turtle工具箱。
它其实是一个绘画相关的工具库。
我们这段程序的作用其实为了绘制超级马里奥,
所以我们就使用了这个工具库,
当然整个Python程序中它并不仅仅只有这一个工具库可以用来绘画,
但是因为它很受欢迎,所以我这里也用到它了。
万事开头难,我们把这一步最难的理解了,我们接下来就好办了。
# 这是不完整的代码,不可以直接运行得到结果。
# 设置像素大小和光标大小的常量
PIXEL_SIZE = 30
CURSOR_SIZE = 20
# 定义颜色映射关系的字典
COLORS = {
'B': 'blue',
'K': 'black',
'O': 'orange',
'R': 'red',
'T': 'brown',
'W': 'white',
'Y': 'yellow',
}
# 定义表示图像的字符矩阵
PIXELS = [
"WWWRRRRRRWWWW",
"WWRRRRRRRRRRW",
"WWTTTOOOKOWWW",
"WTOTOOOOKOOOW",
"WTOTTOOOOKOOO",
"WTTOOOOOKKKKW",
"WWWOOOOOOOOWW",
"WWRRBRRRRWWWW",
"WRRRBRRBRRRWW",
"RRRRBBBBRRRRW",
"OORBYBBYBROOW",
"OOOBBBBBBOOOW",
"OOBBBBBBBBOOW",
"WWBBBWWBBBWWW",
"WTTTWWWWTTTWW",
"TTTTWWWWTTTTW",
]
上面的代码我是从整体代码中截取出来的,它定义了什么呢?
这里就涉及到Python或者所有的编程语言中,一个非常重要的概念
变量
当然我这里也不想把大家给要晕了,因为变量确实种类非常多。
如果要学变量的话,确实内容也非常多,
我这里主要的目的就是让大家体验一下Python这门编程语言有趣的地方,
而不是给大家灌输多少编程那些基本概念。
大家如果看程序能从程序中辨认出哪些是变量,哪些是功能性的语句,
这样就差不多了,
而不必纠结于这个变量是什么变量,需要怎么写,这个暂时都无关紧要。
在这里我是想带领大家领略Python这么编程语言的美妙而不是徒增旅途的枯燥无味。
#不完整代码。
# 获取图像的宽度和高度
WIDTH, HEIGHT = len(PIXELS[0]), len(PIXELS)
# 创建 turtle 库的 Screen 对象
screen = Screen()
# 设置屏幕的大小
screen.setup((WIDTH + 3) * PIXEL_SIZE, (HEIGHT + 3) * PIXEL_SIZE)
# 关闭动画效果,提高绘图性能
screen.tracer(False)
# 创建 turtle 对象
turtle = Turtle()
# 隐藏光标
turtle.hideturtle()
# 设置光标的形状为正方形
turtle.shape('square')
# 设置光标的大小
turtle.shapesize(PIXEL_SIZE / CURSOR_SIZE)
# 提起光标,避免在移动时绘制轨迹
turtle.penup()
# 计算起始坐标
x0 = -WIDTH/2 * PIXEL_SIZE
y0 = HEIGHT/2 * PIXEL_SIZE
# 遍历图像的每一行
for i, row in enumerate(PIXELS):
# 设置光标的起始位置
turtle.setposition(x0, y0 - i * PIXEL_SIZE)
# 遍历当前行的每一个像素
for pixel in row:
# 设置光标的颜色
turtle.color(COLORS[pixel])
# 在当前位置绘制光标
turtle.stamp()
# 移动光标到下一个位置
turtle.forward(PIXEL_SIZE)
# 打开动画效果,显示绘制结果
screen.tracer(True)
# 等待用户点击屏幕关闭程序
screen.exitonclick()
我的建议是上面的代码大家过一遍就可以了,
不必去纠结每一行它为什么是这样子?
因为这样会给初学者带来无穷无尽的痛苦。
基本上到这里第1个程序我们已经讲完了,接下来我要给大家再看一个程序。
#这是一个完整可执行的程序。
import turtle
# 设置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)
# 花蕊
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10, 180)
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()
# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)
# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)
# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)
# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200, 60)
turtle.done()
其实这程序更加有意思了。
虽然无法从程序第一眼中看出他能做什么,
但我可以告诉你,
他比上面那个程序更有意思。
这里还是用到了第1个程序中用到的那个turtle工具库。
正所谓学以致用,越用越熟。
还是老规矩,我们还是用视频的方式来展示这个程序能做什么。
Python第二个程序
视频中已经讲解了,这个程序能干什么?
其实这个程序它就是实现了画一朵玫瑰。
虽然很简单,但是他做到了。
而且只用50多行代码就实现这个功能。
如果换做是其他的编程语言,有可能需要100多行或者几百行都有可能。
可是我们如果仅仅只知道他是干嘛的,是没有多大意思的。
教大家一个学习程序中非常有意思,非常有用的方法,就是改别人的程序。
在这里我需要澄清的一点是。
第1个程序使用的是from import,在第2个程序直接使用了import。
其实这个都是导入我们在程序中需要使用到的库的两种方法。
不用太纠结,因为对于我们初学者来说,知道是这样子用,有两种不一样的方法就可以了。
我们知道这个程序是用来画一朵玫瑰花,
假设我们想玫瑰花由红色变成黄色,那需要怎么做呢?
我们接下来就在程序里面找它,
哪一个是实现这个颜色的渲染的语句,我们先找到那一句。
看到这里有一个red英文单词,
我们这red是代表红色的意思,
大概我们可以猜到这就是我们想要更改的地方,
我们想把它改成黄色。
我们知道英文单词中yellow代表的就是黄色。
所以到这里我们就有思路了,我们把yellow换进去。
Python turtle的使用
只需要简单的更改,我们就能实现非常明显的不同的效果。
这就是我一直提倡的改别人正确的程序来达到学习的目的。
Python这个编程语言它有非常多现成的,别人编好的库可以直接用
我们只需要掌握Python的基本一些用法,很快就能上手,
这就是为什么大家的喜爱他的原因。
上面只是进行简单的两个事例的演示。
如果大家喜欢的话还可以关注我,我接下来会为大家准备更多有意思的Python入门程序,如果你有不懂的,随时可以给我发消息。
欢迎点赞关注我。