Python编程入门动手做个虚拟地球吃透编程规则

原创2021-03-01 16:40·

敲黑板


1)这是教学的第4课

2)在专栏里,可以找到之前的课程

3)持续更新,关注不迷路

4)有问题请留言,有问必答


敲出hello word 后,我在想是否能有Python来模拟一个地球村?

既然编程语言给我们提供了若干的工具用来模拟现实世界中的数据,那么我们是否能用这些概念和Python提供的工具在自己的电脑上构建一个地球村并让其运行起来?

其实试试就知道了。


重新审视一下用Python 撸代码的游戏规则

尝试编写Python代码前,这些非常基础的代码规则是值得认真理解的,这些规则能让老手避免一些容易犯的错误、让新手能更快更好的做到“听、说、读、写”。

有些规则适用于大部分编程语言,有的是Python独有的。这些规则要比我们在支付宝集各种福要简单得多。

这些规则它们是:

标识符

保留关键字

缩进

注释

编码

在我们理解这些基础游戏规则时,我们不用去纠结为什么规则要这样设定。只要知道规则本身就好。

我们先来看一段简单的代码,看看我们的代码是如何由这6个元素组合在一起的。


什么是标识符 ?

上面的代码中,哪些是标识符?

只要符合下面这两条规则,就是标识符。

1)第一个字符必须是字母表中字母或下划线 “_”。2)标识符的其他的部分由字母、数字和下划线组成。

在Python最新版本中,可以使用中文和非ASCII码(什么是ASCII,后面有解释)来做标识符。

现在,我们把上面代码的标识符标记出来。

我们可以看出,标识符组成了我们大部分的代码。


何为保留关键字?

在上面的代码里,有一些标识符我们是可以任意发挥的。比如 text 这个标识符,我们可以将其统一修改成 text1,tex_t,wenzi等等。修改后不会影响代码运行。

但有一些标识符可千万不能这样!

假如我们把 if 这个关键词,统一修改成,ruguo。那么Pycharm马上会给出错误提示,如下图:

Pycharm会提示我们,在选择结构语句里,不理解 ruguo是个什么鬼。也就是说,在整个Python代码里,有一部分标识符,它有如下特点:

1)它不能乱来,比如 if ,不能写成 iff,只有写成 if ,python才认识。2)这些不能乱来的标识符,通常都是用在特定的语法结构里的,比如选择,循环等等。3)如果我们在语法结构外用这些特殊的标识符,也是不行的。比如一个变量起名为 if 。

拥有这些特点的标识符,就叫做保留标识符,或保留关键字,它们是让Python解释器看懂我们编写代码的基石。

下图,我们把保留关键字标记出来。

要查看Python 的所有保留关键字,我们可以启动Python的交互器,然后输入下面代码,就可以看到。

这些关键字,分别如下:

False,None,Ture,__peg_parser__,and,as,assert,async,await,Break,class,continue,def,del, elif,else,except,finally,for,form,global,if,import,in,is,lambda, nonlocal,not,or,pass, raise,return,try,while,with,yield。

在 Python 里,每个保留关键字都有其特殊含义和用法,在后续教程里会为大家一一解释。我把这些单词一一罗列出来是想告诉大家,只要我们弄明白这些单词在Python里的作用,那么就可以用Python做任何事情,只有你想不到,没有你做不到。

所以说学会一门编程语言并不难,难的是寻找问题的解决方案,和知道从哪里开始入手解决问题。


行,代码行

上图最左边的就是代码行的标识,比如第六行代码,

是 “text = text.lstrip()”。

还记得我们在上一篇教程里提到的代码顺序结构吗? 电脑执行代码就是按照顺序结构一行一行的来。代码行很好理解。

曾经有一个小伙伴,问了很多人想问但不敢开口的问题。我能否把一堆代码都写在一行代码里?

答案是可以的,如下图:

只要我们合理的把之前换行的地方加上“;”就可以了。但这样做真的好吗?把代码写成一行有如下坏处:

1)不方便阅读2)不方便定位问题3)需要一个很宽的显示器

无论是Python,还是Java这些编程语言,都不鼓励把代码写成一行,除非你对你的同事和公司有很大的意见,或者你就是偏执的想去试试看(别问为什么我知道)。

有些时候,会遇到这样的场景,一行代码太长了,我们想给它一个好的阅读体验,可以把这很长的一行代码分成几行来写(但对于Python来说,它还是一行)看如下截图:

还有一个会引起小白好奇的问题。

为啥代码之间要空行?不空行难道不更节省行数吗?难道不是代码越少越好吗?(这是一个严重的误区)确实,编程语言没有规定什么时候空行、什么时候不空行。

我们来看下图:

左边的代码是根据代码逻辑来空行的,就像我们写日记空行一样。

右边是完全没有空行的。

是不是左边的代码读起来会更清晰一些? 我们来总结一下,空行的作用。

1)组织代码,让代码读起来更有代入感。2)也让我们在理解代码的时候,跟专注于一些“逻辑块”。

缩进

在大部分开发语言里,缩进不是强制性的,它和上面的空行一样,用来让代码看上去更舒服。

但在 Python 的世界里,缩进却是一个很重要,用来控制代码层级的东西。那什么是代码层级?

层级是一种看事物的视角!

举个例子:

上面是一辆杜卡迪的超跑(v4),在消费者眼里,这辆车是由两个半热熔轮子、一个油箱、一个四缸的V字发动机,和一个骚气的红色涂装,这是消费者的视角。

若我们站在发动机设计师的视角,这台四缸V字发动机,又由气缸、电喷系统、火花塞、油泵等组成。

若我们站在电喷系统设计师的视角来看,有可以看到更细致的东西。

软件开发项目也可以这样,从功能,到模块,到子模块,到类,到方法,到语句块等等。

在所有的开发语言里面,也有这样的视角,不同的视角对于审视一个开发项目会有不同的帮助。这些视角从“大”到“小”分别是,软件、API、插件、包、文件、类、方法、代码块

这些晦涩难懂的词语大家不用去想象它是个什么样的东西,后面我会帮助大家去理解。

在Python里,缩进就是用来控制代码块层级关系的,直接上图:

红色框里,相比第一行代码,向右边缩进了四个空格,或者叫一个“Tab”。这是Python的最小缩进单位,少一个空格都不行。

第一行代码:def test(): 回车后来个缩进,说明下面同样缩进的代码都属于 def text(): 这行代码的子代码块。

再看黄色框里面代码,它是黄色框外,上一行代码缩进后的代码。意思就是说它是上一行代码的子代码块。同理在看绿色框里的代码。

Python通过缩进把一个代码文件里代码的层级关系给说清楚了,这样的做法很像我们在用word编写文档时,整理文档大纲一样。

在Pycharm里面,我们可以把子代码收起来,只看父级代码,就像我们有些时候看书,只看标题一样,能快速浏览书中的思想。

点击 “ - ” 好可以收起子代码。如下图。

在像 Java,C ,C语言里,缩进是可以随便乱用的,它们的缩进只是为了让代码排版好看。在这些语言里要来控制代码的层级关系,用的是 “ { ” , “ } ” ,大括号这两个字符。


注释

注释就是代码的旁白,用来说明代码的含义和构思的。在一些严格的软件公司里,经验丰富,负责的工程师在编写代码的时候,差不多5,6行代码就会写一个注释,这个注释说明这5,6行代码的含义。

注释的规则很简单,在一行代码的开头,写一个#号,后面紧跟注释的内容就行。注释虽然简单,但注释非常重要。

我自己写代码的时候,就有写注释的习惯,这样可以避免自己写的代码时间长了自己看不懂的情况。

下图标记出来的代码就是注释。


编码表

不关注编码这个概念,会让很多程序员在寻找 “乱码” 这类BUG的时候毫无头绪,我自己在工作中也是经历过了很多 “折磨” 才慢慢对编码这个东西充满了重视。

那什么是编码?

我们在用Python编写代码的时候要注意些什么事情?才不会被编码折磨?

首先编码它不是一个语法,或者游戏规则,它是一种比编程语言还 “老” 的东西。我们能在电脑屏幕上看到的东西,都和编码有关。

如果现在我们手里有一个硬盘和一个特殊的显微镜,那么我们可以通过这个显微镜看到硬盘里面存储的东西。

它们都是一些逻辑开关,如果用0来代表关,那么1就代表开。

这些多达上亿数量的逻辑开关,一个一个排布在一起就形成“01011010”。

目前,在计算机里,“00000000” 代表 “空格”,“01000110” 代表大写的F。通过这些01010101来定义我们现实生活中用到的符号,这个过程就叫做编码。由这些编码规则组合起来形成的表,叫做《信息交换标准代码》。

第一个国际标准的《信息交换标准代码》叫做ASCII表,诞生于1967年,那时我爸刚刚14岁。

好了知道了编码表后,那它对我们编程有什么影响?

最早的ASCII表里,字符交换信息没有中文,也就意味着那个时代的编程语言,不能处理中文。

后来随着我国自己推出了一个字符交换的中文标准GBK2312(这个表非常巨大,毕竟要对应那么多的汉子)中文问题在编程中的已解决。

但其他语言怎么办?

于是一个国际统一的标准 UTF-8 诞生。

简单理解,UFT-8可以包括我们人类能认知的99.9%的符号。

在编程过程中,如果这些标准,我们一开始没有注意,比如我们在ASCII编码环境下使用中文,那么中文就会出现乱码。

又或者我们的编程语言是UTF-8。但我们对接的网络接口用的是GBK2312,那么同样会出现字符乱码的问题。

所以在不同平台,不同设备,不同软件间,写程序的时候,就要注意这个编码环境。目前Python3默认支持的是 UTF-8 这种格式。

假如,我们要基于一个GBK2312编码格式的数据库编程,我们就要在Python3代码前加一个代码提示符,意思是告诉Python。我们想要在GBK2312这个环境下编写代码。如下图

上面就是Python语法最基本的一些游戏规则和细节,有些细节大部分编程语言通用,比如编码规范等。

这些知识很简单,很基础,也是学习编程语言迈过的坎,我们只要有点耐心,多看我的文章,自己实际写写代码。很快就会熬过这个“不舒服”的时期。

然后编写代码就像用自己第二门语言说话一样舒服。

上面的内容,你学会了吗?


(0)

相关推荐