零基础python入门:从一个小程序开始

一般来说,学习编程,都喜欢从讲语法开始,这是现行的大多数思路。但是编程语言很多,对应的语法大同小异,虽然在有些应用上有差别,在编程思想上有不同,但是最基础的东西,永远都是C里面提到那些,判断语句,循环语句,分支语句等等,拿变量定义来说:

  • C语言: unsigned int num  它是按照数据类型在前,变量名称在后。也就是说在C语言里面你指定一个变量,一定要先定义这个变量的数据类型,当然还有存储形式,这个一般系统会默认处理,只有你需要特殊情况下的存储时才需要你指定。

  • javaScript等脚本语言,面对变量的定义就宽泛的多,拿js来说: var num 它并不关心变量的数据类型,因为这些,编译器和系统已经为你处理了。

  • python 定义变量就更*了,你什么时候需要,就什么时候定义。你可能很难理解这句话,不过我们从一个小程序开始,一步步讲讲你就会明白了。

所以我觉得我们可以省去那些基础的学习过程,当然这不是说这些基础不重要,恰恰相反,正是因为他们太重要了,所以不能让你一次都学完,如果一股脑的学习完的话,按照人的记忆曲线来说,不到半个月,你将忘记大部分的内容,所以不如我们通过一个个的小程序来学习这些语法,这样更有助于你更好的掌握。

第一个小程序:制作一个缩略图。

女神的图片太多了,硬盘存不下了,女朋友的照片想要制作一个相册,需要改变尺寸。我想起我一位朋友,犹豫要制作海报,需要把大概几百张图片缩小,这看起来是一件很容易的事情,但是一张图片花费三到四分钟的话,算下来,他需要将近一天的时间,这还是在他速度比较快的情况下,要知道人可不是机器,不可能恒定的劳动。无奈之下,他只能找到舍友,几个人话费了大半天才完成,时候还要请大家好好吃一顿。如果那个时候,他会下面的程序,估计就省心多了。

这是一张200 * 200 的原图:

零基础python入门:从一个小程序开始

我想把它变成100*100的图片,该如何操作呢?

新建一个文件,开始敲入代码:

  • 为了改变图片的尺寸,我们首先要获得图片的使用权,然后改变它的尺寸,最后将改变尺寸的图片再保存为另一张图片。代码如下:

零基础python入门:从一个小程序开始

代码中是如何获得图片的使用权呢?
img = Image.open("photo/img.jpeg") 
通过这个语句我们就获得了图片的使用权,那我们来具体解释一下。img 就是变量,我们获得图片的使用权,也就是拿到图片的句柄,或者说是拿到使用数据的钥匙,这需要保存在一个容器里面,这就是变量的意义。
Image是什么呢?你可以理解为这是一个工具,它是专门用来操作图片的,它从哪里来的呢?这就是最开始的那一句:
from PIL import Image
from很好理解,从哪里得来的意思,PIL是图像处理的包名称,它里面集成了大量类似Image这样的工具,这样说并不准确,但是却更容易理解。
w , h = img.size
这句话是为了获得图片的宽和高。在pthon中变量就是这么*,当你需要宽和高的时候,想去调用img.size,它会返回两个数值,你需要保存起来,那就定义w,h。这种方式在go语言里面也是一样的。
下一步就是改变尺寸了,缩略图也就是改变图片的宽和高,那么调用一下
img.thumbnail((w/2,h/2))
thumbnail一看就是缩略的意思,传进去的参数,就是我们想要的100*100.当然你也可以这样写:
size = (w/2,h/2)
img.thumbnail(size)
这里要注意一下,size是(w/2,h/2)这个整体,这种数据格式叫作“元组”,故名思义,这种格式是为了更好的代表数据的核心,用来区分不同的数据,所以元组里面的数据是不能更改的。
元组的用法很简单,当你需要一组数据像一个整体一样代表一个意义时候,就可以定义,比如这个例子,(w/2,h/2)就是(100,100),这就是图片的尺寸。元组用小括号定义:
size = (100,100)这就是一个元组。元组还有很多有趣的用法。
例如:
你想知道这张图片的高是多少,但不关心宽。你可以这样:
h = size[1] 这样就获得了高,记住元组是从0开始计数的,基本上在编程里面,数的计算都是从0开始数。
此外 h = size[-1] 也可以获得正确的值,也就是说元组支持逆序查找。
如果num = (0,1,2,3,4)
你只想获得后三个,你可以这样:
num_last_3 = num[1:]
这样就会从1开始截取。这么看来元组是不是很可爱。
此外元组还有一些自带的函数:

  • cmp(tuple1, tuple2)比较两个元组元素。

  • len(tuple)计算元组元素个数。

  • max(tuple)返回元组中元素最大值。

  • min(tuple)返回元组中元素最小值。

  • tuple(seq)将列表转换为元组。

好了,我们运行下程序,还记得怎么运行吧?把文件保存为.py结尾,然后在命令行进入到该文本保存的文件夹下,敲入命令:
python img.py
快去你在代码中写的这句:
img.save("photo/imgthumbnail.jpeg","jpeg")下看看,女神的头像是不是变小了。记住图片路径要写全

零基础python入门:从一个小程序开始

如果你运行时候出现找不到PIL 模块,你需要安装一下这个模块,不过现在由于这个模块已经无人维护,所以你可以按转pillow,它同样包含了PIL。
我是使用的homwbrew进行的安装,你也可以尝试pip安装。




零基础python入门:从一个小程序开始