人工智能基础教程:Python篇(青少版)
上QQ阅读APP看书,第一时间看更新

1.6 Python编程入门

接下来我们将进入Python编程的世界,先来看一些基础知识。

1.6.1 Hello world

Hello world是很多程序语言运行的第一个结果,被程序员戏称为“经典世界问候语”。

在刚安装好的PyCharm中的工作区输入程序1.1所示代码,然后单击右上角的运行按钮。执行该代码后,会在运行结果显示区显示执行结果Hello world。程序1.1输出Hello world:

输出:

分析:

通过以上程序会发现,Python语言的编写是如此简单,print函数就是输出函数,我们只需要将要输出的变量或内容放入函数的括号中即可,这里我们将Hello world放在引号中作为一个字符串类型,最后输出。

经过上述解释你可能还有些疑惑,不过没有关系,有关输入/输出、函数、字符串等知识在后文都将会提到。此时,PyCharm的界面如图1.14所示。

图1.14 Windows下的PyCharm界面

学习了Hello world之后我们再来看一个稍微复杂一点的程序。

程序1.2:

输出:

分析:

在这里我们将整个程序看成一个工作区,每行语句都有它的功能,程序第2行的name是该工作区的一部分,它存储了一些信息并且是可以被更改的,我们称它为变量,在对变量命名时要尽量贴合变量的具体使用含义。我们只能在当前工作区使用该变量,因为当前的工作区是它的命名空间,这些在本书后文中都会有介绍。

通过程序输出我们可以看出,程序第4行的输出语句将Hi和输入内容输出,这是因为第2行中使用input接收了输入的名字并存在name中,第4行直接使用变量名就可以调用变量name中的内容。在输入时,按Enter键表示输入完成。

程序1.2看似有4行,但是实际上工作的代码只有第2行和第4行,程序中第1行和第3行中的内容是以“#”号开头而不起任何作用的注释,它们用于让我们的程序更易懂。

如果上述内容让你有点困惑,这并不是什么问题,因为才刚开始起步,后面将会详细介绍有关内容。

1.6.2 Python解释器

接下来将会把Python的解释器介绍给大家,这样在总体上将对Python有一定的认识。

我们现在对于Python的认识还只是作为一门编程语言,从程序的实现来看,Python也是一个解释器类型的软件包。那么,什么是解释器?在这里,解释器是一种让其他程序运行起来的程序。以程序1.1为例,我们写下print("Hello world")之后,Python解释器读取该语句,按照其中的命令执行,得出结果。也就是说,解释器是夹在代码和计算机硬件之间的软件逻辑层。根据选用的Python版本,解释器可以是C程序实现,也可以是Java程序实现。在这里必须明白的是我们所编写的Python代码必须在解释器中运行。有关解释型语言和编译型语言的区别,如表1.1所示。

表1.1 解释型语言和编译型语言的区别

1.6.3 执行Python程序

这个问题作为Python解释器的延伸,请大家认真阅读并仔细理解下面的内容,这会建立起你对Python的整体认识。我们从程序编写人员和Python解释器两个角度来分别介绍。

还是以程序1.1这个简单的程序为例,作为一个程序开发者,一个Python程序仅是一个包含Python语句的文本文件,程序1.1对应的正是hello.py文件。对于这个文件,我们只需要告诉Python从头到尾执行文件中的语句,也就是说,把我们的逻辑使用Python语句表达出来即可,剩下的只需要将其交给Python,也就是之前说的在Python解释器中运行代码。

那么作为Python,它是如何看待这个问题的呢?

Python接收到我们的程序之后,将其编译成字节码,之后再将其转发到“虚拟机”中。下面,我们再详细分析一下上述步骤。编译其实是一个简单的翻译步骤,它把每一条语句〔就像程序1.1中的print("Hello world")〕翻译成一组字节码指令。完成后,字节码发送到Python虚拟机(Python Virtual Machine, PVM)上执行。而对于PVM,我们可以理解为一个迭代运行字节码指令的大循环,一个接一个操作,它是实际运行脚本的组件。执行的图解如图1.15所示。

图1.15 Python语句执行过程

1.6.4 Python基础

我们已经通过执行程序1.1,输出了Hello world。但这仅仅是Python编程的一个开始,下面介绍Python编程的一些基础知识,为以后的编程打下基础。

1.注释

在“#”号右边的文字并不影响程序的执行结果,它主要是为了解释语句的功能,是写给程序的读者看的笔记。不要小看这个功能,它会让程序的读者更好地理解代码语句。

例如:

2.字面常量

当使用字面常量时,我们用的就是它字面意义上的值或是内容。例如,97、5.29这样的数字或是Hello world这样的文本。它们的值都是不能被改变的,因此它们被称为字面常量。

3.数字

在Python中,数字主要分为两种:整数和浮点数。

整数大家都知道,如78。而对于浮点数(Float Point Numbers,简写floats),则有5.29或是78.2E-4(E表示10的幂,这种表示对应78.2*10^-4)这两种表示方法。

4.字符串

字符串是字符的序列,字符串也称为String。在这里多提一句,几乎所有我们编写的Python程序都会用到字符串。

(1)声明字符串

单引号。我们用单引号来指定字符串,如'I am a string'或者'this is a string'这种。引号中的内容会按原样保留。

双引号。也许你足够细心已经发现上面'I am a string'中没用I’m的缩写,为什么?没错,因为外面是单引号,如果再用缩写的话,解释器会产生符号识别错误。我们使用双引号来避免这种情况,如"I’m a string"这样做就完全可以。它的工作机制同单引号一样。

三引号。三引号是使用''''''或'''来指定多行字符串,我们可以在三引号之间自由地使用单引号和双引号。三引号也可以用来做多行注释,需要注意的是,必须成对使用。

例如:

注意:

一旦指定了字符串,我们就不能再改变它。

(2)字符串的使用

构建字符串。有时我们要从其他信息中构建字符串。推荐使用format方法来构建,具体做法会在后文中讲解。

转义序列。前面在介绍双引号时提到缩写的情况若还要使用单引号会报错,这里我们提出问题:为什么报错?这是因为使用单引号在写I’m时,重复的单引号会让Python对于何处是字符串的开始、何处是结束感到困惑。所以,我们必须指定这个单引号不代表字符串的结尾。这就是转义序列的作用。还是缩写那个例子,我们可以通过“\”来定义单引号,对应字符串为'I\'m a string'。

如果想要指定一串新行字符串该如何操作?当然了,我们可以用之前提到的三引号。或者,使用表示新的一行的转义序列“\n”来表示新的一行。例如,下面这行字符串:

还有许多转义序列,在今后的程序中遇到时再详细介绍。

5.标准数据类型

变量可以将各种形式的值保存为不同的数据类型。接下来先来介绍Python中的标准数据类型。Python中支持5种标准的数据类型:数字、字符串、列表、元组和字典。前面讲了数字和字符串,剩下的3种我们以后再细谈。

6.运算符

下面来详细谈谈运算符,它在实际编程中是很常用的。先举个简单的例子5+9=14,这个式子对我们早已不是什么难题,但是通过它来引出:式子中的“+”称为运算符,4和5称为操作数,是不是和笔算时很相似?

Python中有很多运算符,这里先介绍算术、比较、逻辑以及三元运算符。

(1)算术运算符。算术运算符会根据运算符做出相应操作并返回结果,具体如表1.2所示。

表1.2 算术运算符

(2)比较运算符。在详细列出比较运算符之前,先提示一下,就像算数运算符会返回结果一样,比较运算符会返回True/False(或是返回1/0,1表示真,0表示假。这分别与True/False等价)作为比较结果。比较运算符具体如表1.3所示。

表1.3 比较运算符

(3)逻辑运算符。Python的逻辑运算符语法比较简单明了,和高中的数学教材中逻辑部分的内容是相同的,具体如表1.4所示。

表1.4 逻辑运算符

(4)三元运算符。Python中唯一的一个三元运算符如表1.5所示。

表1.5 三元运算符

思考:

print(5>=3 if 3 and not 7 else 1)这条语句会输出什么?