从零开始 Python快速入门教程

978-7-115-55884-8
作者: 侯惠芳
译者:
编辑: 张天怡
分类: Python

图书目录:

详情

本书以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍Python的相关知识和实战技能。 全书共14章。第1章主要介绍Python的计算思维、设计逻辑、语言特点及下载与安装等;第2~9章主要介绍Python的数据处理、表达式与运算符、流程控制与选择结构、循环结构、复合数据类型、函数、模块、文件与异常处理等;第10~14章主要介绍热门算法与Python、面向对象程序设计、窗口程序与GUI设计、图像处理与图表绘制、网络爬虫等。本书同时赠送了大量相关学习资料,以便读者扩展学习。 本书适合任何想学习Python的读者。无论你是否从事计算机相关工作,是否接触过Python,均可通过学习本书快速掌握Python的开发方法和技巧。

图书摘要

从零开始:Python快速入门教程

侯惠芳 主编

李琳 张继新 副主编

人民邮电出版社

北京

图书在版编目(CIP)数据

从零开始:Python快速入门教程/侯慧芳主编.--北京:人民邮电出版社,2021.7

ISBN 978-7-115-55884-8

Ⅰ.①从… Ⅱ.①侯… Ⅲ.①软件工具―程序设计 Ⅳ.①TP311.561

中国版本图书馆CIP数据核字(2021)第019516号

◆主 编 侯惠芳

副  主  编 李 琳 张继新

责任编辑 张天怡

责任印制 陈 犇

◆人民邮电出版社出版发行 北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 https://www.ptpress.com.cn

三河市祥达印刷包装有限公司印刷

◆开本:787×1092 1/16

印张:19  2021年7月第1版

字数:440千字  2021年7月河北第1次印刷

定价:69.90元

读者服务热线:(010)81055410 印装质量热线:(010)81055316

反盗版热线:(010)81055315

广告经营许可证:京东市监广登字20170147号

内容提要

本书以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍Python的相关知识和实战技能。

全书共14章。第1章主要介绍Python的计算思维、设计逻辑、语言特点及下载与安装等;第2~9章主要介绍Python的数据处理、表达式与运算符、流程控制与选择结构、循环结构、复合数据类型、函数、模块、文件与异常处理等;第10~14章主要介绍热门算法与Python、面向对象程序设计、窗口程序与GUI设计、图像处理与图表绘制、网络爬虫等。本书同时赠送了大量相关学习资料,以便读者扩展学习。

本书适合任何想学习Python的读者。无论你是否从事计算机相关工作,是否接触过Python,均可通过学习本书快速掌握Python的开发方法和技巧。

前言

程序设计是一门与计算机硬件和软件息息相关的学科,是近十几年来蓬勃发展的一门新兴学科。编写程序已不仅仅是计算机相关专业人员应具备的能力,而且是全民应具备的基本能力。

Python具备面向对象、直译、程序代码简洁、跨平台、自由/开放源码等特点,再加上其丰富强大的包模块,因此用途十分广泛。另外,Python不像Java那样“强迫”使用者用面向对象思维编写程序。它是多重编程范式的程序语言,允许使用者使用多种风格来编写程序,程序编写更灵活。同时,Python提供了丰富的应用程序接口(Application Programming Interface,API)和工具,让程序设计人员能够轻松地编写扩展模块。

本书结合计算思维与算法的基本概念对Python进行讲解,内容浅显易懂;书中还循序渐进地介绍了学习Python必须要认识的主题,具体如下。

·计算思维与Python初体验。

·数据处理。

·表达式与运算符。

·流程控制与选择结构。

·循环结构。

·复合数据类型。

·函数。

·模块。

·文件与异常处理。

·热门算法与Python。

·面向对象程序设计。

·窗口程序与GUI设计。

·图像处理与图表绘制。

·网络爬虫。

为了降低本书的学习难度,本书提供了所有范例的完整程序代码,并且这些代码已在Python开发环境下正确编译与执行过。通过本书,读者除了可以学习用Python编写程序外,还能强化计算思维及进行逻辑训练。目前许多学校都开设了Python的基础课程,本书非常适合作为Python相关课程的教材。

本书主编为侯惠芳,副主编为李琳、张继新。其中,第1~2章、第4~6章由河南工业大学张继新编写,第7~11章由河南工业大学李琳编写,第3章、第12~14章由河南工业大学侯惠芳编写,王浩丞负责本书审核工作。

在本书的编写过程中,我们竭尽所能地将好的讲解呈现给读者,但也难免有疏漏和不妥之处,敬请广大读者不吝指正。若读者在阅读本书时遇到困难或有疑问,抑或有任何建议,可发送邮件至zhangtianyi@ptpress.com.cn。

编者

2021年5月

第1章 计算思维与Python初体验

计算机堪称20世纪以来人类最伟大的发明之一,对人类的影响更甚于工业革命所带来的影响。计算机是一种具备数据处理与计算能力的电子化设备。美国宾夕法尼亚大学教授埃克脱(Eckert,John Presper,Jr.)与莫奇利(Mauchly,John William)合作研制成了人类第一台真空电子管计算机——ENIAC。接着冯·诺依曼(John von Neumann)教授首先提出了存储程序与二进制编码的概念,认为数据和程序可以存储在计算机的存储器中。这开启了程序语言与程序设计蓬勃发展的序幕。

1.1 程序语言简介

程序语言是一种人类用来和计算机沟通的语言,也是用来指挥计算机进行运算或工作的指令集合,可以将操作者的思考逻辑和语言转换成计算机能够理解的语言。程序语言由最早期的机器语言发展而来,至今已经迈入第五代。基本上,任何一种语言都有其专有语法、特性、优点及相关应用领域。

1.1.1 机器语言

机器语言(Machine Language)由1和0两种符号构成,是最早期的程序语言,也是计算机能够直接阅读和执行的基本语言。也就是说,任何程序或语言在执行前都必须转换为机器语言。例如,指示计算机将变量A设定为数值2,“10111001”表示“设定变量A”,而“00000010”表示“数值2”。由于每一家计算机制造商都会因为计算机硬件设计的不同而开发不同的机器语言,因此机器语言不但使用不方便,而且可读性低,也不容易维护,并且不同的计算机与平台的编码方式都不尽相同。

1.1.2 汇编语言

汇编语言(Assembly Language)是一种介于高级语言与机器语言之间的符号语言。比起机器语言,汇编语言更容易编写和学习。不同CPU要使用不同的汇编语言。汇编语言虽然比机器语言更符合人类的需求,但计算机无法直接识别。它必须经过“汇编”(Assembling)过程转换成机器语言,转换得到的机器语言会产生一个文件(称为“执行文件”),这样才可在计算机上执行。

1.1.3 高级语言

高级语言(High-level Language)是一种相当接近人类语言的程序语言。虽然执行速度较慢,但高级语言本身易学易用,因此被广泛应用在商业、科学、教学、军事等领域的相关软件开发上。它的特点是必须经过编译(Compile)或解释(Interpret)过程才能转换成机器语言。

编译型语言可将原始程序分为数个阶段,并将其转换为计算机可读的可执行文件的目的程序,不过编译器必须先把原始程序读入主存储器后才可以开始编译。原始程序每被修改一次,都必须重新经过编译器的编译处理,才能保持其执行文件为最新的状态。经过编译后所产生的执行文件在执行中不需要再翻译,因此执行效率较高,C、C++、Visual C++、Fortran等语言都使用编译的方法。

解释型语言利用解释程序(又称解释器)来对高级语言的原始程序代码进行逐行解释,每解释完一行程序代码,才会接着解释下一行。若解释的过程中发生错误,则解释会立刻停止。由于使用解释器解释的程序代码每次在执行时都必须再解释一次,因此执行速度可能较慢,Python、Basic、LISP、Prolog等语言皆使用解释的方法。

1.1.4 非过程语言

非过程语言(Non-Procedural Language)也称为第四代语言,它的特点是叙述和程序与真正的执行步骤没有关联。采用该语言的程序设计者只需将自己打算做什么表示出来即可,而不需要去理解计算机是如何执行的。数据库的结构化查询语言(Structured Query Language,SQL)就是第四代语言的一个颇具代表性的例子。

1.1.5 人工智能语言

人工智能语言也称为第五代语言,或称为自然语言,其特点是好像在和另一个人对话一般。因为使用者口音、使用环境、语言本身的特性(如一词多义)等会造成计算机在解读时产生不同的结果,以及自然语言在识别上的困难,所以自然语言的发展必须搭配人工智能来进行。人工智能(Artificial Intelligence,AI)的概念最早是由美国科学家约翰·麦卡锡(John McCarthy)于1956年提出的,目标为使计算机具有类似人类的学习解决复杂问题与思考等能力。凡是模拟人类的听、说、读、写、看、身体动作等的计算机技术,都被归为人工智能的范畴,如推理、规划、解决问题及学习等能力。机器人是人工智能最典型的应用之一,如图1.1所示。

1.2 计算思维

没有最好的程序语言,只有最合适的程序语言。程序语言只是工具,在设计程序时应根据需要对程序语言进行选择,并无特别规定。一般可从如下4点判断程序语言选择是否恰当。

·可读性高:阅读与理解都相当容易。

·平均成本低:成本考量不局限于编码的成本,还包括执行、编译、维护、学习、除错与日后更新等成本。

·可靠性高:所编写出来的程序代码稳定性高,不容易产生边界错误(Boundary Error)。

·可编写性强:可以针对需求比较容易地编写出程序。

程序设计的本质是数学,而且是较为简单的数学应用。对于程序设计,过去我们非常看重计算能力。但随着信息与网络科技的高速发展,计算能力的重要性已慢慢降低,反而现在特别注重计算思维的培养。我们可以这样形容:“虽然学习程序设计不等于学习计算思维,但程序设计的过程就是一种计算思维的表现,而且要学好计算思维,程序设计绝对是最佳的途径之一。”

2006年,美国卡内基梅隆大学周以真(Jeannette M.Wing)教授首度提出了“计算思维”的概念。她提到计算思维是现代人应该具备的一种基本技能,所有人都应该积极学习。随后谷歌公司也为教育者开发了一套计算思维课程(Computational Thinking for Educators)。这套课程提到了培养计算思维的4个方面,分别是分解(Decomposition)、模式识别(Pattern Recognition)、归纳与抽象化(Pattern Generalization and Abstraction)和算法(Algorithm)。虽然这并不是建立计算思维的唯一方法,但是通过这4个方面,我们能更有效率地深化利用计算方法与工具解决问题的思维能力,进而建立计算思维。

1.2.1 分解

许多人在编写程序或解决问题时,往往不知道如何分解问题。如果一个问题不进行分解,一般会较难处理。当我们面临一个复杂的问题时,可以先将其分割成许多小问题,再将这些小问题各个击破;小问题全部解决之后,原本的大问题也就解决了。例如,一台计算机发生机器故障了,可以将整台计算机逐步分解成较小的部分,再对每个部分的各种元器件进行检查,如图1.2所示。程序员在遇到问题时,通常会考虑所有可能性,将问题逐步分解后进行解决,久而久之,这样的逻辑就变成他的思考模式了。

1.2.2 模式识别

将一个复杂的问题分解之后,我们常常能发现小问题之间共有的属性以及相似之处,这些属性称为模式(Pattern)。所谓模式识别,就是在一堆数据中找出特征(Feature)或规则(Rule),并用其对数据进行识别与分类,甚至作为决策时的判断条件。在解决问题的过程中找到模式是非常重要的。模式可以让问题的解决简单化,当问题之间有共有属性时,往往更容易被解决。

当描述完一只狗后,我们可以依照狗的共有属性轻易地描述其他狗,如狗有眼睛、尾巴与4只脚,而唯一不一样的地方是每只狗都有或多或少的独特之处。识别出模式之后,便可用此模式来解决类似的问题。知道所有的狗都有这些属性后,当想要画狗的时候便可将这些共有的属性加入,这样就可以很快地画出很多只狗。

1.2.3 归纳与抽象化

归纳与抽象化的目的在于过滤以及忽略掉不必要的特征,让我们可以把注意力集中在重要的特征上,将问题具体化。通常这个过程开始会收集许多的数据,然后借由归纳与抽象化把特性以及无法帮助解决问题的模式去掉,留下相关以及重要的共有属性,直到建立一个通用的解决问题的规则。由于归纳与抽象化没有固定的模式,因此会随着需要或实际状况而有所不同。例如,把一辆汽车抽象化时,每个人都有各自的分解方式,汽车销售员与汽车修理师对汽车抽象化的结果可能就会有差异。

1.2.4 算法

算法不但是人类利用计算机解决问题的技巧之一,也是程序设计领域中最重要的部分,常常是设计计算机程序的第一步。算法就是一种计划,每一个指示与步骤都是计划过的,这个计划里面包含解决问题的每一个步骤和指示。

日常生活中也有许多事情都可以利用算法来描述,如员工的工作报告、宠物的饲养过程、美食的食谱等,甚至连我们平时经常使用的搜索引擎都必须借由不断更新算法来运作,如图1.3所示。

在程序设计里,算法更是不可或缺的一环。了解了算法的定义后,我们继续说明算法必须符合的5个条件,如图1.4和表1.1所示。

算法的主要目的是供人们阅读,以了解所执行的工作流程与步骤。

常用的算法表示法为一般文字叙述,如中文、英文、数字等,特点是使用文字或语言叙述来说明算法步骤。有些算法则是利用可读性高的高级语言(如Python、C语言、C++、Java等)或虚拟语言来描述。

Tips 虚拟语言是一种接近高级语言的语言,也是一种不能直接放进计算机中执行的语言,一般需要一种特定的预处理器或者手动转换,才能变成真正的计算机语言。经常使用的虚拟语言有Spark、Pascal等。

当然,流程图也是一种相当通用的算法表示法,即使用某些图形符号来表示程序解决流程。为了实现流程图的可读性及一致性,通常使用美国国家标准学会(American National Standards Institute,ANSI)制定的统一图形符号。一些常见的图形符号如表1.2所示。

例如,输入一个数值并判断其是奇数还是偶数的流程图如图1.5所示。

Tips 算法和程序有所不同,因为程序不一定满足有限性的要求。如操作系统或计算机上运行的程序,除非关机,否则永远在等待循环,这也违反了算法的有限性要求。

1.3 程序设计逻辑

每位程序员都像一位艺术家,都会有不同的设计逻辑。不过由于计算机是很严谨的科技化工具,因此对一个程序员而言,还是必须遵循某些规范和对照程序中的逻辑概念,这样才能让程序代码具备可读性与可维护性。从早期的结构化设计,到现在将传统程序的设计逻辑转换成面向对象设计逻辑,都是在协助程序员找到编写程序可依循的大方向。

1.3.1 结构化程序设计

当程序变大且程序代码越来越多时,程序管理与除错也变得越来越麻烦,于是就出现了结构化程序语言。这种程序的构想是将一个大程序切割成若干个较小、较容易管理的小程序模块,这些小程序模块称为函数,其中功能相近的函数被放在同一函数库中。当需要使用某个函数时,由主程序调用函数库中的函数。如果主程序要计算长方形以及圆形的面积与周长,就可以将程序分割成4个函数来处理,如图1.6所示。

对于一个结构化程序,不管其结构如何复杂,通常皆可利用表1.3所示的基本控制流程来表达。

1.3.2 面向对象程序设计

面向对象程序设计(Object Oriented Programming,OOP)是指将存在于日常生活中的常见对象(Object)的概念应用在软件设计的开发模式中。也就是说,面向对象程序设计让人们从事程序设计时,能以一种更生活化、可读性更高的设计观念来进行,并且所开发出来的程序也较容易扩充、修改及维护。

面向对象程序设计模式必须具备3种特性:封装、继承与多态。简单来说,封装是利用类别来实现抽象数据类型(Abstract Data Type,ADT);而继承则类似现实生活中的遗传,允许我们去定义一个新的类别来继承既存的类(Class),进而使用或修改继承而来的方法(Method),并可在子类中加入新的数据成员与函数成员;至于多态,最直接的定义就是让具有继承关系的不同类对象可以调用相同名称的成员函数,并产生不同的反应结果。例如,要计算长方形及圆形的面积与周长,有两种方法。第一种方法采用封装,封装两个类,当主函数要计算长方形的面积,就根据长方形类产生对象,要计算圆形的面积,就根据圆形类产生对象,如图1.7-a所示。第二种方法再加上继承与虚函数特性,可以设计出具有多态性的代码,如图1.7-b所示。

1.4 Python的特点

Python的中文意思是蟒蛇,是目前最为流行的程序语言之一。简单来说,Python具有以下特点。

·程序代码简洁易读。用Python开发的目标之一是让读程序代码像读书一样容易。由于用Python编写的程序代码具有简单易记、容易阅读等优点,因此程序员在编写程序的过程中能专注于程序本身而不是如何去写,使得程序开发更有效率,团队在协同合作方面也更容易整合。

·跨平台。Python程序可以在大多数的主流平台中执行,不管是Windows、macOS、Linux操作系统,还是手机操作系统,都有对应的Python工具。

·面向对象。Python具有面向对象的特性,如类、封装、继承、多态等,不过它不像Java这类面向对象语言“强迫”使用者用面向对象思维编写程序。Python是多重编程范式的程序语言,允许使用者使用多种风格来编写程序,程序编写更灵活。

·容易扩充。Python提供了丰富的API和工具,让程序员能够轻松地编写扩展模块,并且可以将其整合到其他语言的程序内使用,所以也有人说Python是“胶水语言”。

·自由/开放源码。所有Python的版本都是自由/开放源码的。简单来说,程序员可以自由地阅读、复制及修改Python的源码,或是在其他软件中使用Python程序。

1.5 Python的下载与安装

Python是一种跨平台的程序语言,当今主流的操作系统(如Windows、Linux、macOS等操作系统)都可以安装与使用它。接下来介绍详细的Python下载与安装步骤。

首先进入Python官方网站,然后进入Python的下载页面,选择并下载合适的安装包。

双击安装包进入安装界面后,请勾选“Add Python 3.7 to PATH”,如图1.8所示,这样能够将Python的执行路径加入Windows操作系统的环境变量中。如此一来,当进入“命令提示符”窗口后,就可以直接执行Python命令。

Step 01 在Windows 10操作系统的开始界面中搜索“cmd”命令,找到“命令提示符”后,启动“命令提示符”窗口,如图1.9和图1.10所示。

Step 02 在“命令提示符”窗口中输入“python”命令,输入完毕后按Enter键,当出现Python直译式交互环境特有的“>>>”字符时,就可以输入Python命令了。例如,使用“print”命令输出指定字符串,如图1.11所示。

开始界面中Python安装的工具如图1.12所示。

·IDLE。内置的Python集成开发和学习环境(Integrated Development and Learning Environment,IDLE)用来帮助程序员进行程序开发。通常集成开发环境包括编写程序语言编辑器、编译或解释器、除错器等,还可将程序的编辑、编译、执行与除错等功能毕其功于同一操作环境。

·Python 3.7。单击后会进入Python交互模式(Interactive Mode),当看到Python特有的提示字符“>>>”后,使用者可以逐行输入Python程序代码,如图1.13所示。

·Python 3.7 Manuals。这是Python语言的说明手册。

·Python 3.7 Module Docs。提供Python内置模块相关函数的说明。

1.6 编写第一个Python程序

许多人一听到程序设计,可能认为学程序语言就和学习外国语言一样,不但要记一大堆单词,还要背数不完的语法规则。其实不是这样子的,程序语言只是一种人类用来指挥计算机运算或做其他工作的指令集合,特别是Python,更为简单,里面会使用到的关键字不过数十个而已。根据笔者多年从事程序语言教学的经验,对一个初学者来说,实际编写出一个程序最为重要,许多高手都是因为程序写多了才变得越来越厉害。

在前面直译式交互环境中,我们已确认Python命令可以正确无误地执行,接下来将用IDLE程序示范如何编写及执行Python程序代码文件。

Step 01 在开始界面中找到Python 3.7的IDLE程序,接着启动IDLE程序,然后执行“File/New File”命令,出现图1.14所示的软件界面,接下来就可以开始在这个界面中编写程序。

Step 02 输入图1.15所示的两行程序代码。

Step 03 执行“File/Save”命令,将文件命名为“hello”,然后单击“保存”按钮将所编写的程序存储起来,如图1.16所示。

Step 04 执行“Run/Run Module”命令(或直接在键盘上按F5键),执行本程序。如果程序没有任何语法错误,就会自动跳转到“Python 3.7.3 Shell”窗口展示程序的执行结果。以这个例子来说,会出现“HelloWorld!”,并自动换行和出现直译式交互环境的“>>>”提示字符,如图1.17所示。

下面的程序范例是刚才保存的hello.py,为了方便讲解各行程序代码的功能,每行代码前面加入了行号,在实际输入代码时,请不要将行号输入程序中。

【程序范例:hello.py】我的第一个Python程序

01 # 我写的程序
02 print("Hello World!")

程序解说

◆第1行:Python的单行注释格式,在解释程序代码时,解释器会忽略它。

◆第2行:内置print()函数会将结果输出到屏幕上,输出的字符串可以使用单引号“'”或双引号“"”来引住其结果,输出字符串后会自动换行。

1.7 安装Anaconda开发环境

除了可以用内置的IDLE编写及执行Python程序外,也可以使用Anaconda包组作为开发环境,它内置的Spyder编译器的功能可能比IDLE更强大,但是本书考虑到初学者最容易学会的入门环境,全书的Python程序都是在IDLE下编写与执行的。

如果以后想要提高Python的程序开发能力及更轻易地编写应用层面较高的程序,或许可以考虑Anaconda包组。它的主要特点如下。

·包含许多常用的数学、工程、数据分析的Python包。

·免费而且开放源码。

·支持Windows、Linux、macOS等操作系统。

·支持Python 2.x、Python 3.x,而且可以自由切换。

·内置Spyder编译器。

·包含Conda和Jupyter Notebook。

其中Conda是环境管理的工具,除了可以管理包的新增与移除,也能快速建立独立的虚拟Python环境,还可以在虚拟的Python环境里安装包及测试程序,而不用担心会影响原本的工作环境。Jupyter Notebook是Web扩充包,让使用者可以通过浏览器进行程序的开发与维护。

1.7.1 下载Anaconda

Step 01 进入Anaconda官网,选择“Products”选项卡下的“Individual Edition”进入下载界面,单击“Download”按钮后可依据操作系统选择适当的下载链接,这里有Windows、macOS以及Linux等操作系统的下载链接可供选择。

Step 02 选择下载的Python版本,下载完成后会看到安装程序的可执行文件。

1.7.2 安装Anaconda

Step 01 双击可执行文件启动安装程序,依次单击“Next”按钮进行安装,如图1.18所示。

Step 02 当出现图1.19所示的界面时,请在阅读版权说明事项之后单击“I Agree”按钮,进行下一步安装。

Step 03 出现选择安装类型的界面,建议采用默认值,即安装的Anaconda只给自己使用(选中“Just Me(recommended)”单选按钮),再单击“Next”按钮,如图1.20所示。

Step 04 设置安装目录,不需要更改目录的话直接单击“Next”按钮,如图1.21所示。

Step 05 勾选第二个复选框,再单击“Install”按钮,如图1.22所示。

Step 06 如果出现图1.23所示的界面,则表示安装完成,直接单击“Next”按钮。

Step 07 出现图1.24所示的界面,继续单击“Next”按钮。

Step 08 单击“Finish”按钮结束安装,如图1.25所示。

Step 09 安装完成之后,开始界面中会出现图1.26所示的Anaconda3菜单(图1.26所示的界面是Windows 10操作系统中的界面)。

其中的“Anaconda Prompt”命令窗口和Windows操作系统中的“命令提示符”窗口类似,不过“Anaconda Prompt”命令窗口会在标题列出现“Anaconda Prompt”字样,以和Windows操作系统的“命令提示符”窗口有所区分,如图1.27所示。

如果要查看目前已安装的包,输入“conda list”命令,就可以在命令窗口中看到按照字母的顺序列出的已安装包的名称及版本。这样的检查操作可以避免重复安装包,如图1.28所示。

1.7.3 Spyder编辑器

Anaconda开发环境配置完成后,可以启动Spyder编辑器来编写程序。Anaconda内置的Spyder编辑器是编辑及执行Python程序的集成开发环境,具有语法提示、程序除错与自动缩进等功能。可以在开始界面中启动Spyder编辑器。Spyder编辑器默认的工作区上方是下拉式菜单及工具栏,左侧为程序编辑区,右侧为功能面板区,如图1.29所示。

·工具栏。工具栏中包含常用的工具按钮,如文件新建、保存、执行等按钮,我们可以执行“View/Toolbars”命令来开启与关闭工具栏。

·程序编辑区。程序编辑区是用来编写程序的。启动Spyder编辑器之后,默认编辑的文件的名称是“temp.py”,我们可以从标题栏中看到文件存放的路径与名称。

熟悉了Spyder编辑器的操作界面之后,接下来编写一个Python程序并执行。在程序编辑区中输入以下内容。

a = 10
b = 20
print(a + b)

执行“Run”下拉菜单中的“Run”命令或按键盘上的F5键,也可以单击工具栏中的按钮来执行程序。执行结果如图1.30所示。

1.7.4 IPython命令窗口

IPython(Interactive Python)除了可以执行Python语句,还提供了许多进阶的功能。IPython命令窗口中闪烁的光标就是输入语句的地方,每一行程序代码的输入与输出都会自动编号。例如,输入“100+500”,按Enter键后会立刻显示执行结果,如图1.31所示。

我们可以看到IPython命令窗口中多了颜色的辅助,很清楚地区分出操作数与运算符,输入与输出也很容易通过颜色来区分。

IPython命令窗口中还有一些辅助功能能帮助我们快速输入语句。其中的程序代码的自动完成功能是指根据输入的部分内容自动完成后续想输入的程序代码,不但可以提高程序输入代码的速度,也可减少输入错误。其使用方式非常简单,只需要在输入部分代码之后按Tab键,就能自动完成后续输入。如果可套用的程序语句超过一个,那么会列出所有语句或函数让使用者参考。例如,要输入以下语句。

print(“hello”)

Step 01 我们可以先输入“p”后按Tab键,由于p开头的语句不止一个,因此会列出所有p开头的语句。我们可以继续输入,也可以从这些语句中选取需要的语句或函数,如图1.32所示。

Step 02 print()函数是用来输入文字的,在print之后输入“("hello")”,按Enter键就会在窗口中输出“hello”,如图1.33所示。

如果语句只有一个,按Tab键就能自动完成语句的输入。例如,输入“inp”后再按Tab键,就会自动输入“input”。

另外,如果要输入的程序代码与前面输入过的程序代码相同,可以利用向上或向下的方向键进行选择,按↑键可显示上次输入的程序代码,按↓键可显示下一行程序代码。找到程序代码之后再按Enter键执行,也可以加以修改之后再按Enter键执行。

IPython提供了非常强大的使用说明功能,不管是语句、函数还是变量,都可以在名称后面加上“?”,然后就会显示该项目的使用说明。例如,想要知道print()函数的用法时,只需要输入“print?”就会显示使用说明,如图1.34所示。

本章重点整理

·程序语言是一种人类用来和计算机沟通的语言,也是用来指挥计算机运算或工作的指令集合。

·机器语言是由1和0两种符号构成的。

·汇编语言是一种介于高级语言与机器语言之间的符号语言。

·高级语言的特点是必须经过编译或解释过程才能转换成机器语言。

·所谓编译,是指使用编译器来将程序代码翻译为目的程序,C、C++、Java、Visual C++、Fortran等语言都使用编译的方法。

·解释则是利用解释器来对高级语言的原始程序代码进行逐行解释,执行速度较慢,Python、Basic、LISP、Prolog等语言皆使用解释的方法。

·数据库的结构化查询语言就是第四代语言的一个颇具代表性的例子。

·人工智能语言也称为第五代语言,或称为自然语言。

·判断程序语言好坏的4项标准:可读性、平均成本、可靠度、可编写性。

·计算思维的4个方面分别是分解、模式识别、归纳与抽象化和算法。

·算法必须符合的5个条件:输入、输出、确定性、有限性、有效性。

·结构化程序设计的3种基本控制流程:顺序结构、选择结构、循环结构。

·面向对象程序设计模式必须具备3种特性:封装、继承与多态。

·Python具有的特点:程序代码简洁易读、跨平台、面向对象、容易扩充、自由/开放源码。

·当出现Python直译式交互环境特有的“>>>”字符时,就可以输入Python命令了。

·在“Anaconda Prompt”命令窗口中输入“conda list”命令后,就可以在命令窗口中看到按照字母的顺序列出的已安装的包名称及版本,这样的检查操作可以避免重复安装包。

·Anaconda开发环境配置完成后,可以启动Spyder编辑器来编写程序。

·执行“Run”下拉菜单中的“Run”命令或按键盘上的F5键,也可以单选工具栏中的按钮来执行程序。

·IPython命令窗口中多了颜色的辅助,很清楚地区分出操作数与运算符,输入与输出也很容易通过颜色来区分。

本章课后习题

一、选择题

1.(D)下列有关程序语言的叙述中,哪一项有误?

(A)高级语言必须经过编译或解释

(B)Python是一种解释型语言

(C)人工智能语言也称为自然语言

(D)汇编语言由1和0两种符号构成

2.(B)算法的5个条件不包括以下哪一个?

(A)有限性

(B)实时性

(C)有效性

(D)确定性

3.(B)Python的特点不包括以下哪一个?

(A)面向对象

(B)单一平台

(C)自由/开放源码

(D)程序代码简洁易读

4.(C)要在“Anaconda Prompt”命令窗口中列出已安装包的名称及版本要输入哪一个语句?

(A)list version

(B)list

(C)conda list

(D)list conda

5.(A)在IPython中想要了解某语句的使用说明必须在该语句后面加上什么符号?

(A)?

(B)-h

(C)!

(D)*

二、问答题

1.请问计算思维包含哪几个方面?

答:

分解、模式识别、归纳与抽象化和算法。

2.算法必须符合的5个条件是什么?

答:

输入、输出、确定性、有限性、有效性。

3.通常结构化程序设计有哪3种基本控制流程?

答:

顺序结构、选择结构、循环结构。

4.面向对象程序设计模式必须具备哪3种特性?

答:

封装、继承与多态。

5.简述Python的特点。

答:

程序代码简洁易读、跨平台、面向对象、容易扩充、自由/开放源码。

6.Anaconda包组也可以用来开发应用层面较高的Python程序,试简述其特点。

答:

·包含了许多常用的数学、工程、数据分析的Python包;

·免费而且开放源码;

·支持Windows、Linux、macOS等操作系统;

·支持Python 2.x、Python 3.x,而且可以自由切换;

·内置Spyder编译器;

·包含Conda和Jupyter Notebook。

第2章 认识数据处理

计算机具有强大的运算能力,将外界所得到的数据输入计算机,计算机能够通过程序进行运算,最后再输出结果。当程序执行时,外界的数据进入计算机后,要有个存储空间,这时系统就会分配一个存储空间给这份数据。而在程序代码中,我们所定义的变量(Variable)的主要用途就是存储数据,以供程序中各种运算与处理之用。

2.1 变量

变量主要用来存储程序中的数据,以供程序中各种运算与处理之用。当变量产生时,会在程序设计中由编译器配置一块具有名称的存储器,用来储存可变化的数据内容,计算机会将数据内容储存在这块存储器中,需要时从这块存储器中读出使用,为了方便识别,必须给这块存储器一个名字,就称为变量(variable)。如图2.1所示。我们定义变量就像是跟计算机要个空房间,这个房间的房号就是变量在存储器中的地址,房间的等级就是数据的类型,当然这个房间的客人是可以随时变动的。

2.1.1 变量的声明

Python的变量不需要声明,这点与其他语言(如C语言、Java)有所不同。Python变量的数据类型是在给定值的时候决定的,变量通过等号“=”进行赋值,语法如下。

变量名称=变量值

例如以下代码。

number=10

上述代码表示将数值10赋给变量number

我们也可以一次给多个相同数据类型的变量赋值,例如,将abc这3个变量都赋值为55,代码如下。

a=b=c=55

或者利用“,”隔开变量名称,就能在同一行中赋值多个变量。

a,b,c=55,55,55

当然也可以同时赋值不同类型的变量。

a,f,name=55,10.58,"Michael"

Python也允许用“;”分隔表达式来将不同的程序语句放在同一行。例如以下两行代码。

sum= 10
index = 12

我们可以利用“;”将上述两行语句写在同一行。

sum=10;index=12

Tips 对较大型的程序而言,为了节省存储器的空间,建议先使用del语句删掉不必要的变量,语法如下。

del 变量名称

2.1.2 程序注释

程序注释可以用来说明程序的功能。如果从小程序开始就能养成使用注释的好习惯,日后在编写任何程序时就能兼顾可读性。注释不仅可以帮助其他程序员了解内容,在日后程序维护与修改中也能够省下不少时间成本。Python的注释分为两种。

·单行注释:以“#”开头,后续内容即注释,如程序代码开头的第1行。

# 这是单行注释

·多行注释:以3个双引号(或单引号)开始,输入注释内容,再以3个双引号(或单引号)结束。

"""
这是多行注释
用来说明程序的描述都可以写在这里
"""

也可以用3个单引号,代码如下。

'''
这也是多行注释
用来说明程序的描述都可以写在这里
'''

以下的例子示范了如何在程序中用多行注释来说明程序的功能,以及用单行注释来说明各行语句的作用。

【程序范例:comment.py】单行注释与多行注释

01 '''
02     程序范例:comment.py
03     程序功能: 本程序示范如何使用多行注释及单行注释
04 '''
05 number = 10 # 将数值10 赋给number
06 print(number) # 输出变量number 的值
07 a=b=c=55 #a、 b、 c 这3 个变量的值都是55
08 a,b,c = 55,55,55 # 用"," 隔开变量名称, 就能在同一行中为变量赋值
09 print(a) # 输出变量a 的值
10 print(b) # 输出变量b 的值
11 print(c) # 输出变量c 的值
12 a,f,name = 66,10.58, "Michael " # 也可以同时赋值不同类型的变量
13 print(a) # 输出变量a 的值, 可以发现其值已发生改变
14 print(f) # 输出变量f 的值
15 print(name) # 输出变量name 的值

执行结果如图2.2所示。

程序解说

◆第1~4行:多行注释,常用于程序、函数或一段程序功能的说明。

◆第5~15行:单行注释,常用于变量或单行程序功能的说明。

2.1.3 变量命名规则

对一个程序员而言,重视程序代码的可读性是必须长期培养的一个习惯。考虑到程序的可读性,最好根据变量的功能与意义来命名。尤其是当程序规模很大时,有意义的变量名称就会显得非常重要。

在Python中命名变量需要符合一定的规则,如果使用了不适当的名称,可能会造成程序执行时发生错误。另外,Python是区分大小写的语言,也就是说“no”与“NO”是两个不同的变量。变量名称的长度不限,但变量名称有以下几点限制。

1.变量名称的第一个字符必须是英文字母、下划线或中文。

2.其余字符可以是英文字母、数字、下划线或中文。

3.不能使用Python内置的关键字。常见的关键字如表2.1所示。

4.变量名称必须区分大小写字母,如“day”和“DAY”会被Python的解释器视为不同的名称。

以下是有效变量名称的范例。

_index
data01
width
department_no

以下是无效变量名称的范例。

3_pass
while
$money
pass word

上述无效变量名称的错误原因如下。

3_pass

错误原因:变量名称的第一个字符必须是英文字母、下划线或中文,不能是数字。

while

错误原因:不能使用Python内置的关键字,while是关键字。

$money

错误原因:变量名称的第一个字符必须是英文字母、下划线或中文,不能是特殊符号。

pass word

错误原因:变量名称不能包含空格。

Tips 虽然Python 3.x版本的变量名称支持中文,但尽量不要使用中文来命名变量,一方面在输入程序代码时要切换输入法较为麻烦,另一方面在阅读程序代码时也会显得不太顺畅。

2.2 数据类型简介

数据类型(Data Type)用来描述Python数据的类型,不同数据类型的数据有着不同的特性,如在存储器中所占的空间大小、所允许存储的数据类型、数据操控的方式等。

2.2.1 数值类型

Python的数值类型有整数(int)、浮点数(float)与布尔值(bool)3种,下面一一说明这些数值类型的用法。

·int(整数):整数数值类型用来存储不含小数点的数据,跟数学上的整数意义相同,如-1、-2、-100、0、1、2、100等。

·float(浮点数):带有小数点的数字,也就是数学上的实数;除了能用小数点表示外,也能使用科学记数法表示,如6e-2。

·bool(布尔值):一种表示逻辑的数值类型,是int的子类别,只有真假值,即True与False;布尔数值类型通常用于流程控制做逻辑判断;也可以采用数值“1”或“0”来代表True或False。

Tips 使用布尔值False和True时要特别注意第一个字母必须大写。

相同的数据类型才能进行运算,例如,字符串与整数不能相加,如要相加,必须先将字符串转换为整数。如果运算数都是数值类型的话,Python会自动转换,不需要强制转换类型,例如下面的代码。

total = 10+7.2 # 结果num=17.2 ( 浮点数)

Python会自动将整数转换为浮点数再进行运算。

另外,布尔值也可以当成数值来运算,True代表1,False代表0,例如下面的代码。

total = 8 + True # 结果total =9 ( 整数)

2.2.2 字符串数据类型

将一连串字符用单引号或双引号引起来,就是一个字符串(string)。如果要将字符串指定给特定变量,可以使用赋值运算符“=”。范例如下。

phrase= " 心想事成"

以下是在Python中建立字符串的方式。

wordA = '' # 当单引号内没有任何字符时,它是一个空字符串
wordB = 'A' # 单一字符
wordC ="Happy" # 建立字符串时,也可以使用双引号

如果字符串本身包含双引号或单引号,则可以使用另外一种引号来引住该字符串。以下两种表示方式都是正确的。

title = " 地表最简易的'Python' 入门书"

或是

title = ' 地表最简易的"Python" 入门书'

上述语句的输出结果如图2.3所示。

如果想直接将数值数据转为字符串,可以使用内置函数str()来完成,例如下面的代码。

str()        # 输出空字符串
str(123)  # 将数值转为字符串'123'

当字符串较长时,也可以利用“\”将过长的字符串拆成多行,例如下面的代码。

slogan=" 人进来 \
货出去 \
全国发大财"

当需要依照固定的格式来输出字符串时,则可以利用三重单引号或三重双引号来括住使用者指定的字符串格式,如图2.4所示。

字符串中的字符是有前后顺序的,如果要连接多个字符串,可以利用“+”实现,如图2.5所示。

另外,字符串的索引值具有顺序性,如果要取得单一字符或子字符串,可以使用“[]”运算符,而从字符串中截取子字符串的动作就称为“切片”(Slicing)运算。

表2.2所示为“[]”运算符的各项功能说明。

例如,我们声明一个字符串“msg='Sunday is fun!'”,index值若从第一个字符(左边)开始,则从0开始;若从最后一个字符(右边)开始,则从-1开始,如表2.3所示。

以下示范了几种常见的取得子字符串的方式。

msg[2 : 5]   # 不含索引值为5 的字符,可取得3 个字符
msg[6: 14]  # 可取到最后一个字符
msg[6 :]     # 表示msg[6 : 14]
msg[:5]      # 省略start 时,表示从索引值0 开始取5 个字符
msg[4:8]    # 索引编号为4~7,取4 个字符

上述各种字符串的切片运算的执行结果如图2.6所示。

字符串中有一些特殊字符无法利用键盘来输入或显示于屏幕上,这时候必须在这些特殊字符前加上反斜线“\”才可使用,这就是“转义字符”(Escape Character)。转义字符具有某些特殊的控制功能。表2.4所示为Python的转义字符说明。

例如下面的代码。

sentence = " 今日事! \n 今日毕! "

当使用print()函数将topic字符串的内容输出时,“今日毕!”就会显示在第二行,这是因为在输出“今日毕!”前,必须先行输出转义字符“\n”,它是用来告知系统进行换行动作的,执行结果如图2.7所示。

以下程序范例将介绍各种常用转义字符的使用方式及综合应用。

【程序范例:escape.py】转义字符应用范例

01 print(" 显示反斜线: " + '\\')
02 print(" 显示单引号: " + '\'');
03 print(" 显示双引号: " + '\"');
04 print(" 显示十六进制数: " + '\u0068')
05 print(" 显示八进制数: " + '\123')
06 print(" 显示倒退一个字符: " + '\b' + "xyz")
07 print(" 显示空字符: " + "xy\0z")
08 print(" 双引号的应用->\" 转义字符的综合运用\”\n")

程序解说

◆第1~7行:示范如何输出特定的转义字符。

◆第8行:转义字符的综合运用,此处示范了如何输出双引号及利用“\n”进行换行。

2.2.3 type()函数

这里要特别介绍type()函数,它能列出变量的数据类型。前文提到在Python中使用变量时不用事先声明,变量在被赋值时才会决定变量的数据类型。也就是说,在Python程序设计过程中,变量的数据类型经常会改变。如果想要了解目前变量的数据类型,可以使用type()函数来返回指定变量的数据类型。接下来的程序范例将使用type()函数列出各种变量的数据类型。

【程序范例:type.py】使用type()函数列出变量的数据类型

01 a=8
02 b=3.14
03 c=True
04 print(a)
05 print(type(a))
06 print(b)
07 print(type(b))
08 print(c)
09 print(type(c))

执行结果如图2.9所示。

程序解说

◆第1~3行:分别赋值整数、浮点数及布尔值给abc 3个变量。

◆第5~9行:从执行结果可以看出变量a的值为8,数据类型是整数(int);变量b的值为3.14,数据类型是浮点数(float);变量c的值为True,数据类型是布尔值(bool)。

2.2.4 数据类型转换

在设计程序时,如果要运算不同数据类型的变量,就必须进行数据类型的转换。通常数据类型转换功能分为“自动类型转换”与“强制类型转换”。

“自动类型转换”是指由解释器来判断应转换成何种数据类型,例如,当整数与浮点数进行运算时,系统会事先将整数自动转换为浮点数之后再进行运算,运算结果为浮点数。例如下面的代码。

total= 7 + 3.5 # 其运算结果为浮点数 10.5

整数与字符串之间无法自动转换数据类型,当对整数与字符串进行加法运算时,则会产生错误。输入以下语句,会出现数据类型错误的警告提示,如图2.10所示。

total = 125+ " 总得分"

除了由系统自动进行类型转换之外,Python也允许使用者强制转换数据类型。例如,想将两个整数数据相除时,可以强制进行类型转换,暂时将整数数据转换成浮点数数据类型。

以下3个函数为常见的Python强制数据类型转换的函数。

·int()函数:将数据强制转换为整数数据类型。

·float()函数:将数据强制转换为浮点数数据类型。

·str()函数:将数据强制转换为字符串数据类型。

例如下面的代码。

num=int("1357") # 这个函数会将字符串转换成整数,num 的值就会等于1357
num=float("3.14159") # 这个函数会将字符串转换成浮点数,num 的值就会等于3.14159

2.3 输入与输出函数

任何程序设计的目的都在于将使用者所输入的数据经计算机运算处理后,再将结果另行输出。接下来我们就介绍Python中最常用的输出与输入函数。

2.3.1 输出函数——print()

例如下面的代码。

print()函数是Python用来输出指定的字符串或数值到标准输出装置的函数,默认情况下输出到屏幕上。print()的正式语法格式如下。

print( 数据1[, 数据2,…, sep= 分隔字符, end= 结束字符])

·数据1,数据2,…:print()函数可以用来输出多个数据,每个数据之间必须用逗号“,”隔开;上述语句中的中括号“[]”内的数据、分隔字符或结束字符可有可无。

·sep:分隔字符,可以用来输出多个数据,每个数据之间必须用分隔符分隔,Python默认的分隔符为空格符。

·end:结束字符,是指在所有数据输出完毕后自动加入的字符,系统的默认值为换行字符“\n”;正因为这样的默认值,当执行下一次的输出动作时,会输出到下一行。

以下范例示范了3种print()的语法的使用方式及输出结果,如图2.11所示。

上述3种print()的语法的差异说明如下。

第一种写法最为简单,此语句省略了分隔字符及结束字符,因此其结束字符会采用系统的默认值,即换行字符“\n”,所以输出完此字符串会自动换行。

第二种写法则加入了分隔字符“#”,本来默认各数据间会以空格符隔开,但此处指定了“#”为其分隔字符,所以可以看到输出结果中的每个数据间会以“#”符号隔开。

第三种写法刚好可以和第二种写法做比较,此写法没有指定分隔字符,系统就会使用默认的空格符作为各数据间的分隔字符。

print()函数也支持格式化功能,主要是由“%”字符与后面的格式化字符串来输出指定格式的变量或数值内容,语法如下。

print(" 数据" %( 参数列))

常用输出格式化符号说明如表2.5所示。

height=178
print(" 小郭的身高:%d" % height)

输出结果如图2.12所示。

接下来介绍一个实用的方法,即利用format()函数来进行格式化工作,这个函数以一对大括号“{}”来表示参数的位置,语法如下。

print( 字符串 .format( 参数列))

例如下面的代码。

print("{0} 今年 {1} 岁. ".format(" 王小明", 18))

其中“{0}”表示使用第一个自变量、“{1}”表示使用第二个自变量,以此类推。如果“{}”内省略数字编号,则会按顺序填入。

也可以使用自变量名称来取代对应的自变量,例如下面的代码。

print("{writer} 每年赚 {money} 版税. ".format(writer =" 陈大春", money=600000))

直接在数字编号后面加上冒号“:”可以指定参数格式,例如下面的代码。

print('{0:.2f}'.format(3.14159)) #3.14

上述代码表示第一个自变量取小数点后两位。

我们来看几个例子。

范例1的代码如下。

num=1.732659
print("num= {:.3f}".format(num)) # num= 1.733

{:.3f}表示要将数值格式化成小数点后3位。

范例2的代码如下。

num=1.732659
print("num= {:7.3f}".format(num)) #num= 1.733

其中{:7.3f}表示数值是总长度为7的浮点数,且保留小数点后3位,此处的小数点也在总长度内。从执行结果来看,总长度为7,数值前会补空白。

以下范例利用format()函数来格式化输出字符串及整数。

范例3的代码如下。

university=" 全优职能专科学校"
year=142
print("{} 已办校 {} 年" .format (university, year))

输出结果如图2.13所示。

在上例中可以看到字符串中的“{}”符号是用来表示要写入参数的位置的。例如,要输出的universityyear变量在字符串中就必须有相对应的“{}”符号来配合,以告知系统将这两个变量的值写在此处。

以下范例利用各种不同的format()函数来格式化输出字符串及整数。

【程序范例:format_para.py】利用format()函数来格式化输出字符串及整数

01 num1=9.86353
02 print("num1= {:.3f}".format(num1))
03 num2=524.12345
04 print("num2= {:12.3f}".format(num2))
05 company=" 智能AI 科技股份有限公司"
06 year=18
07 print("{} 已设立公司 {} 年" .format (company, year))
08 print("{0} 成立至今已 {1} 年".format(company, year))

执行结果如图2.14所示。

程序解说

◆第1~4行:分别指定不同的数值总长度及小数点位数来观察不同的数值输出结果。

◆第7~8行:分别用两种不同的format()函数的参数的指定方式示范如何在指定位置输出对应的变量内容。

2.3.2 输入函数——input()

我们知道print()函数是用来输出数据的,而input()函数则是让使用者从键盘输入数据,然后把使用者所输入的数值、字符或字符串传送给指定的变量。要从键盘输入数据十分简单,语法如下。

变量 = input( 提示字符串)

当输入数据并按下Enter键后,就会将输入的数据指定给变量。上述语法中的“提示字符串”是一段告知使用者输入的提示信息,例如,希望使用者输入年龄,再用print()函数输出年龄,程序代码如下。

age =input(" 请输入你的年龄:")
print (age)

执行结果如图2.15所示。

在此还要注意,使用者输入的数据一律被视为字符串,可以通过内置的int()、float()、bool()等函数将输入的字符串转换为整数、浮点数或布尔值类型。

例如,写一个名为test.py的程序进行下列程序代码的测试。

price =input(" 请输入产品价格:")
print(" 涨价10 元后的产品价格:")
print(price+10)

上面的程序将会因为字符串无法与数值相加而产生错误提示,如图2.16所示。

这是因为输入的变量price是字符串,无法与数值“10”相加,所以必须在进行相加运算前用int()函数将字符串强制转换为整数类型,如此一来才可以正确地进行运算。修正的程序代码如下所示。

price =input(" 请输入产品价格:")
print(" 涨价10 元后的产品价格:")
print (int(price)+10)

由以下范例可以看出,如果输入的字符串没有先通过int()函数转换成整数就直接进行加法运算,其产生的结果会变成两个字符串相加,从而造成错误的输出结果。

【程序范例:strtoint.py】将输入的字符串转换成整数类型

01 ino1=input(" 请输入甲班全班人数:")
02 no2=input(" 请输入乙班全班人数:")
03 total1=no1+no2
04 print(type(total1))
05 print(" 两班总人数为%s" %total1)
06 total2=int(no1)+int(no2)
07 print(type(total2))
08 print(" 两班总人数为%d" %total2)

执行结果如图2.17所示。

程序解说

◆第1~2行:分别输入甲、乙两班的人数。

◆第3~5行:直接将所输入的人数进行相加,可以看出其相加的结果是字符串,结果和预期的两班人数的加总结果不同。

◆第6~8行:在加总前先将输入的字符串转换成整数,再进行相加,其结果的数据类型是整数,所输出的两班人数的加总结果才是正确的。

2.4 本章综合范例——商品数据格式化输出与栏宽设定

以下范例使用格式化输出方式,并通过栏宽设定分别输出不同的整数、字符串及浮点数结果。

【程序范例:format.py】格式化输出与栏宽设定

01 name1=" 多益题库大全"
02 name2=" 小学单字入门手册"
03 name3=" 英语初级及中级合集"
04 price1=500
05 price2=45
06 price3=125.85
07 print("%5s 商品价格为 %4d 元" % (name1, price1))
08 print("%5s 商品价格为 %4d 元" % (name2, price2))
09 print("%5s 商品价格为 %5.2f 元" % (name3, price3))

执行结果如图2.18所示。

程序解说

◆第1~3行:分别设定3种商品的初始值。

◆第4~6行:分别设定3种商品的价格,其中第3种商品特别设定为浮点数,这是为了观察浮点数的格式化输出的效果。

◆第7~9行:将3种商品的名称及价格按照指定的格式化字符串形式输出。

本章重点整理

·变量主要用来存储程序中的数据,以供程序中各种运算与处理之用。

·Python的变量不需要声明,这点与其他语言(如C语言、Java)有所不同。

·Python变量的值通过等号“=”进行赋值,可以一次赋值多个相同数据类型的变量或同时赋值不同类型的变量。利用“,”隔开变量名称,就能在同一行中赋值多个变量。

·Python也允许使用者用“;”来将不同的程序语句放在同一行。

·del语句用于删掉不必要的变量。

·Python的注释分为两种:单行注释、多行注释。

·单行注释:以“#”开头,后续内容即注释。

·多行注释:以3个双引号(或单引号)开始,输入注释内容,再以3个双引号(或单引号)结束。

·Python的数值类型有整数(int)、浮点数(float)与布尔值(bool)3种。

·使用布尔值False和True时要特别注意第一个字母必须大写。

·将一连串字符用单引号或双引号括起来,就是一个字符串。

·可以使用type()函数来返回指定变量的数据类型。

·数据类型转换功能分为“自动类型转换”与“强制类型转换”。

·3个强制数据类型转换的函数:int()、float()、str()。

本章课后习题

一、选择题

1.(C)下列哪一个选项是无效的Python变量?

(A)_tall

(B)pass01

(C)6_total

(D)SSN_NO

2.(A)将数值数据转换为字符串的函数是哪一个?

(A)str()函数

(B)string()函数

(C)ord()函数

(D)chr()函数

3.(B)当字符串较长时,可以用哪一个字符将过长的字符串拆成两行?

(A)“/”字符

(B)“\”字符

(C)“\\”字符

(D)“//”字符

4.(C)如果要根据固定的格式来输出字符串,可以用哪一个符号来引住指定的字符串?

(A)三重单引号

(B)三重双引号

(C)A、B皆可

(D)A、B皆否

5.(A)一些特殊字符无法显示于屏幕上,这时候必须在此特殊字符前加上什么符号才能形成所谓的转义字符?

(A)\

(B)\\

(C)/

(D)//

二、问答题

1.试简述Python语言的命名规则。

答:

·变量名称的第一个字符必须是英文字母、下划线或中文;

·其余字符可以是大小写英文字母、数字、下划线或中文;

·不能使用Python内置的关键字。

·区分大小写字母。

2.请说明以下无效变量错误的原因。

7_up

for

$$$999

happy new year

答:

“7_up”的错误原因是变量名称第一个字符必须是英文字母、下划线或中文,不能是数字;

“for”的错误原因是不能使用Python内置的关键字,for是关键字;

“$$$999”的错误原因是变量名称的第一个字符必须是英文字母、下划线或中文,不能是特殊符号;

“happy new year”的错误原因是变量名称不能包含空格。

3.什么是切片运算?试举例说明。

答:

字符串的索引值具有顺序性,如果要取得单一字符或子字符串,可以使用“[]”运算符,而从字符串中截取子字符串的动作就称为切片运算。例如以下代码。

msg = 'Sunday is fun!'

则msg[2:5]的结果值为'nda'。

4.试写出下表中的Python转义字符。

答:

5.print()函数也支持格式化功能,请在下表中填入输出格式化功能的符号。

答:

相关图书

深度学习的数学——使用Python语言
深度学习的数学——使用Python语言
动手学自然语言处理
动手学自然语言处理
Web应用安全
Web应用安全
Python高性能编程(第2版)
Python高性能编程(第2版)
图像处理与计算机视觉实践——基于OpenCV和Python
图像处理与计算机视觉实践——基于OpenCV和Python
Python数据科学实战
Python数据科学实战

相关文章

相关课程