第一章识别结果

This commit is contained in:
yixinNB
2025-01-04 15:52:51 +08:00
commit 1c8701fff1
26 changed files with 833 additions and 0 deletions
+833
View File
@@ -0,0 +1,833 @@
# 第1章
# Python 概述
【考核目标】了解:Python语言发展、特点、应用、版本区别及文件类型。理解:Python程序的运行方式、开发环境和运行环境配置,Python程序构成和书写
风格。掌握:Python 集成开发环境(IDLE),Python 标识符及其命名规则、变量和赋值语
句、基本输入输出语句。应用:利用IDLE创建简单程序,调试并运行。
# 1.1 Python语言简介
# 1.1.1 程序设计语言
1.程序设计语言概述
程序设计,亦称编程,是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具。程序设计过程包括分析、设计、编码、调式等不同阶段。程序设计已经成为当今社会需求量大的职业技能之一,很多岗位都将被计算机程序接管。
程序设计语言,亦称编程语言,是程序设计的具体实现方式。程序设计语言相比自然语言更简单、更严谨、更精确,主要用于人类和计算机之间的交互。按照程序设计语言规则组织起来的一组计算机指令,称为计算机程序。
程序设计语言包括3大类:机器语言、汇编语言和高级语言。
机器语言是一种二进制语言,它直接使用0、1构成的二进制代码表达指令,是计算机硬件可以直接识别和执行的程序设计语言。例如:执行数字2和3的加法,16位计算机上的机器指令为:1101001000111001。由于不同的CPU具有不同的指令系统,机器语言程序存在难编写、难修改、难维护,编程效率极低等缺点。
汇编语言是使用一些容易理解和记忆的字母和单词来代替一个二进制指令的语言。比如:用ADD代表数字逻辑上的加、MOV代表数据传递等。在计算机发展早期,汇编语言在
定程度上帮助程序员提高了编程效率。例如:执行数字2和3的加法,汇编语言指令为:ADD2,3。汇编语言指令是机器指令的符号化,与机器指令存在直接对应关系,汇编语言同样存在难学、难用等缺点。
高级语言是面向用户、基本独立于计算机种类和结构的程序设计语言。其最大的优点是:形式上接近于算术语言和自然语言,概念上接近于人们通常使用的概念。高级语言的一个命令可以代替儿条、几十条甚至几百条汇编语言的指令。高级语言易学易用,通用性强,应用广泛。例如:执行数字2和3的加法,高级语言代码为:result=2+3。这条代码仅与编程语言有关,与计算机结构无关,使用同一种编程语言在不同类型计算机上的表达是一致的
1954年,第一个完全意义的高级编程语言FORTRAN问世,其完全脱离了特定机器的局限性,是第一个通用的编程语言。诞生于1972年的C语言是第一个广泛应用的高级语言。从第一个编程语言问世到现今,共有几百种高级编程语言出现,其中很多语言成了编程语言发展道路上的里程碑,产生很大影响,比如:Basic、C、C++、Java、Python 等,
2.编译和解释
编译和解释是计算机执行高级语言源程序的两种方式。根据执行方式不同,高级语言可分为两类:静态语言和脚本语言。静态语言是指使用编译执行的编程语言,例如:C/C++语言、Java 语言等。脚本语言是指使用解释执行的编程语言,例如:Python 语言、JavaScript 语言、PHP 语言等。
编译是指将源代码转换成目标代码的过程,通常,源代码是高级语言代码,目标代码是机器语言,执行编译的计算机程序称为编译器。图1-1展示了程序的编译和执行过程,其中,虚线表示目标代码被计算机运行。编译器将源代码转换成目标代码,计算机可以立即或稍后运行这个目标代码。
![](images/4c1190a680d431c8fd5fec65d38c538ccfad041b7dfac2ddfcf441fa48314abf.jpg)
图1-1 程序的编译和执行过程
解释是将源代码逐条转换成目标代码并同时运行目标代码的过程。执行解释的计算机程序称为解释器,图1-2展示了程序的解释和执行过程。其中,高级语言源代码与数据一同输人给解释器,然后输出运行结果。
![](images/f17c44c3a21b3a7eb432f38964c7de3f7af6615a2d15d717e42a99df5edec9cb.jpg)
图1-2 程序的解译和执行过程
解释和编译的区别在于:编译是一次性把高级语言的源代码全部转换成机器语言的代码,一旦程序被编译、不再需要编译程序或者源代码;解释则是一句一句地转换源代码,在每次程序运行时都需要解释器和源代码。这两者的区别类似于外语资料的全文机器翻译与实时的同声传译。
# 1.1.2 Python 语言的发展
Python是由荷兰人Guidovan Rossum(吉多·范·罗苏姆)于1989年圣诞节期间在阿姆斯特丹休假时为了打发无聊的假期而编写的一个脚本解释程序,并在1991年发行了第一个公开版本。
Python语言被Guido作为是ABC语言的一种继承,但Python语言走的是开源路线,摒弃了ABC语言的封闭性。在Python语言问世之初,Guido在互联网上公开了源代码,让世界上更多喜欢Python的程序员,对Python进行不断完善,这也为后来Python的蓬勃发展奠定了坚实的基础。
Python将许多机器层面上的细节隐藏,并交给编译器处理,凸显出逻辑层面的编程思考。Python程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节。这一特征吸引了广大的程序员,因此Python开始迅速流行起来。
此外,还有两点外界因素加速了Python的发展。一是硬件性能的提高。当时已进人 20世纪90年代初,个人计算机开始进人普通家庭,程序员们开始关注计算机和语言的易用性。相比ABC语言因为硬件的性能限制而失败,Python生逢其时。二是互联网的发展。当时许多程序员以及资深计算机用户已经开始频繁使用Intermet进行交流。一种新的软件开发模式开始流行:开源。这是Python能够发展壮大的根本原因。Python用户来自许多领域,有不同的背景,对Python也有不同的需求。每当用户不满足于现有功能,很容易对Python进行拓展或改造。这些用户将改动发给Guido,并由Guido决定是否将新的特征加人 Python 或者标准库中。
现在Python是由一个核心开发团队在维护,Guido仍然占据着至关重要的作用,指导其进展。在全世界程序员不断的改进和完善下,Python现今已经成为最受欢迎的程序设计语言。自从2004年以后,Python的使用率呈线性增长。2021年2月,IEEE Specturm调查显示,Python语言在开发语言中排名第1。
2008年12月,Python3.0版本正式发布。该版本在语法层面和解释器内部进行了重大改进,并没有考虑与Python2.x的兼容性,使得两者互不兼容。这导致很多已有项目无法顺利升级为Python 3.x,只能继续使用 Python 2.x。目前Python 官方已经停止了对 Python 2.x的支持,如果用户想要继续得到与Pyhon 2.x有关的支持,则需要付费给商业供应商。、本书使用Python3.7.4版本,目前Python官网已经更新至3.10.1版本并增加了新特性。
# 1.1.3 Python语言的特点
Python是一种面向对象的解释性语言,与其他语言相比,它具有以下特点。
(1)简单易学
Python是一种代表简单主义思想的语言。阅读一个良好的 Python程序就感觉像是在读英语一样,用户能够专注于解决问题而不是花大量时间去学习语言本身。Python具有极其简
# Python语言程序设计
单的说明文档,因此极其容易上手
大多数程序设计语言的第一个人门编程代码是“HelloWorld!",以下是使用Python 编写的HelloWorld的程序,只需要一行代码。
第1 行的>>>是Python 语言的运行环境提示符,其后是Python语句;第二行是Python语句的执行结果。对比实现同样功能的C语言,Python语言的代码量仅相当于C语言的 1/10至1/5,这种优越性将带来更少的程序错误、更快的开发速度和更好的可读性。
(2)可扩展性
如果需要一段关键代码运行得更快,可以部分程序用C或C++编写,然后在Python程序中调用。
(3)免费和开源
Python是FLOSS(自由/开放源码软件)之一,允许使用者自由地发布该软件的拷贝,阅读其源代码,对其做改动,把其中一部分用于新的自由软件中。
(4)可移植性。
由于Python的开源性,Python已经被移植在包括Linux、Windows、Android等平台上。
(5)丰富的类库。
Python具有庞大的标准库,可以处理各种工作。除了标准库以外,Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能。
# 1.1.4 Python 语言的典型应用
Python的开发哲学是:用一种方法,最好只用一种方法来做一件事。Python作为一种功能强大且通用的编程语言,在科学计算、数据库开发、网络编程、多媒体制作、游戏开发、人工智能、大数据等方面得到越来越多的应用。下面列举几个典型应用。
(1)Google:Web爬虫和搜索引擎中的很多组件均是用 Python实现的
(2)Yahoo:Yahoo使用Python和其他技术管理讨论组。
(3)NASA:美国宇航局的NASA在它的几个系统中既用 Python开发,又将其作为脚本语言。
(4)YouTube:作为全球最大的视频分享网站,YouTube视频分享服务中的大部分是用Python 编写的
(5)豆瓣(douban):作为国内书评、影评方面影响较大的一个网站,豆瓣的前台、后台及服务器的管理系统都是用 Python编写的。
(6)引力波:引力波是爱因斯坦基于广义相对论所预言的一种以光速传播的时空波动。引力波的观测数据是用Python(Gwpy包)分析的。Python 对引力波的发现起到了非常重要的作用。
(7)AlphaGo:AlphaGo打败柯洁轰动世界,而AlphaGo背后的程序,有很大一部分是用Python编写的
# 1.1.5 Python语言文件类型
Python语言文件类型主要分为3种:源代码文件(source file)、字节码文件(byte-codefile)、优化字节码文件(optimized file)。这些代码可以直接运行,不需要经过编译或连接。
(1)源代码文件
一是扩展名为.py的源代码文件,是由Pyhon解释器负责解释执行,可在控制台下运行;二是扩展名为.pyw的源代码文件,用于图形用户界面(GUI)文件的扩展名。源代码文件可以用文本编辑器打开并编辑。
(2)字节码文件
Python 源文件经过编译之后生成扩展名为.pyc 的字节码文件。字节码文件不能用文本编辑器打开。字节码文件与平台无关,可以运行在Windows、UNIX 和 Linux 等操作系统上。通过运行脚本,可以将.py源代码文件编译成.pyc字节码文件。
(3)优化字节码文件
经过优化的代码生成扩展名为.pyo的优化字节码文件。该类文件不能用文本编辑器打开或者编辑。Python 3.5 版本开始采用.pyc 文件存储优化和非优化代码,不再支持.pyo文件。
# 1.2 Python安装与简单使用
Python支持多种平台,可应用于包括Windows、Linux和macOS 等多种系统。Python 支持跨平台运行,编写的代码可以不加修改地应用于多种平台。本书以Windows 10和 Python 3.7.4版本为基础,构建Python开发平台。
# 1.2.1 安装Python解释器
Python语言解释器是一个轻量级的小软件,可以在Python语言主网站上下载,下载网址为www.python.org/downloads/
Python解释器主网站下载页面如图1-3所示
根据所用的操作系统选择相应菜单项后跳转到不同的下载页面,下面以Windows操作系统为例进行介绍,其他操作系统类似。点击Windows菜单项后跳转到如图1-4所示的Windows安装包下载页面。
未经特别说明,本书所有示例均在Windows10平台上使用Python3.7.4版本进行演示,$3.\mathrm{~x~}$ 的其他版本也同样适用。随着Python语言的发展,其版本号也不断更新,矩形框 $\textcircled{1}$ 中显示的是Python最新的稳定版本。对于初学者建议选择当前最新的稳定版本,如果所在操作系统无法安装最新版本,可以使用以前版本。注意:较早的一些版本不支持Windows7及以前系统。Windows安装包分为32位和64位系统版本,其下又分为EmbeddablePackage和Installer两种安装包。Embeddable Package 下载后就可以使用,Installer则需要安装才能使用。推荐使用 Installer安装,该方法同时会安装一些其他的包,如:pip等,以及会自动配置用户变量,安装成功后可以直接使用。
# ython语言程序设计
![](images/d0c24141b0955463a7f6ff871cf800fc5e992ee9270b57245f40c50a2a93d134.jpg)
图1-3 Python主网站下载页面
![](images/6ca242b63f5e1ec5bf79c907f45706ca6f002b56aafe193ec8186b46be532959.jpg)
图1-4 Windows版Python安装包下载页面
双击下载得到的Installer安装包,将启动一个如图 1-5所示的安装向导。Python支持典型安装和自定义安装两种方式,默认安装会勾选所有组件,安装在用户本地应用程序文件夹下;自定义安装可以手动选择要安装的组件,并指定安装目录。两种方法都需要勾选AddPath 3.7 to PATH 复选框,这样可以将 Python 命令工具所在目录添加到系统Path 环境变量中以L后开发程序或老运行Python命今会非常方便
这里选择自定义安装,将 Python安装到常用的目录,避免C盘文件过多。点击“Customize installation”进行下一步,选择要安装的Python 组件,如图1-6所示。
![](images/d33ad35f6447507eef8ac8ae5c5d136620f6814ede9937b0165e135de37887fd.jpg)
图1-5 Python安装向导
![](images/ae161d2df4306c8e4c1b10be0e3225b89f0b2b56029608a01eb001eddd519531.jpg)
图1-6 选择要安装的 Python组件
没有特殊要求的话,保持默认即可,也就是全部勾选。点击“Next”继续,选择安装目录,如图1-7所示
![](images/4d9d97c6bcfc2598aede2b3e47cd53d6ee3b62fcb45eb5ddeb4ab43723874f25.jpg)
# Python语言程序设计
选择好安装目录,点击“Instal”,等待儿分钟就可以完成安装。安装完成以后,打开Windows的命令行程序(命令提示符),在窗口中输人 pyhon命令(注意字母p是小写的),如果出现Python的版本信息,并看到命令提示符>>,如图1-8所示,就说明安装成功了。
![](images/380a4c6f1dc3c3adf80ea88a58f9dc9ec22f80769eb9420edba3d03a372fd085.jpg)
图1-8 命令提示符运行python命令
Python安装包将在系统中安装一批与Python开发与运行相关的程序,其中常用的两个是Python命令行和 Python 集成开发环境(Python’s Integrated Development Environment,IDLE)。
# 1.2.2 Python语言的开发环境
Python 有两种运行方式:交互式和文件式。交互式指Python解释器即时响应用户输入的每条代码,给出输出结果。文件式指用户将Python代码写在一个或多个文件中,然后启动Python 解释器,执行文件中的代码。其中交互式主要用于简单的 Python运行或者测试调试Python,而文件式是运行Python程序的主要方法。
1.交互式程序运行
有以下三种方法可以进人Python交互式运行环境
(1)同时按下Windows 键和R键,启动“运行”。在“运行”中输入cmd并回车,进人命令行窗口。输人 Python命令并回车,当出现“>>>”时表示成功进人,如图1-9所示。
(2)选择Windows“开始”→“所有程序”→Python 3. 7→“Python 3.7(64-bit)”,打开Python3.7(64-bit)下CMD交互式环境,如图1-9所示。
![](images/7dc800829b2cb29abdb757cd12a40cb0d6479933f4ee78500cac7ff7db4d329b.jpg)
# 图1-9 Python3.7(64-bit)下CMD 交互式环境
(3)在Python 自带的开发工具IDLE中打开。选择Windows“开始”→“所有程序”一
![](images/071337a818cd4bd78b0f8dd64f79596db16511d13387ff885760b27b8e4fee8b.jpg)
图1-10 通过 IDLE 启动交互式环境
【例 1-1】 CMD交互式环境下执行 Python语句。打开 Python 命令提示符,在命令提示符>>>后运行 HelloWorld!程序。输人程序代码如下:
print("Hello World!"
按Enter键后显示输出结果“HelloWorld!”,如图1-11所示。本例题采用方法(2)命令提示符,其他打开方法除了显示界面有区别外,输出结果相同。
![](images/20d0aee6592cded0f5219157cf1c51f29981a62b362bbb1944d451c684c398fa.jpg)
图1-11 通过Python3.7(64-bit)启动交互式环境
【例1-2】 IDLE交互式环境下Python执行数学运算。
在 Python 命令提示符>>>后输人数学公式,可以实现计算功能,如图 1-12所示。
在图1-12中,计算 $123+213$ ,返回336;计算 $12*8$ ,返回96。
执行exit()或quit()可以退出Python交互式环境。
# 2.文件式程序运行
文件式也有两种运行方法:使用文本编辑器和IDLE 方法。这两种方法的执行都可以分为以下两个步骤。
(1)创建 Python 源代码文件,即后缀为.py的文件
(2)加载并执行 Python程序
第一种方法,可以在任意编辑器中编写。只需按照Python的语法格式编写代码,并保存为.py形式的文件即可。对于较为简单的代码,可以使用Windows 系统自带的文本编辑器进
# Python语言程序设计
![](images/8002f112b920f866e8e954de8d3eaf126dfefeffac7b9ae1865983b945801a9c.jpg)
# 图1-12 IDLE 交互式环境下 Python 数学运算
行编辑。选择Windows“开始”→“所有程序”→“Windows附件”→“记事本”启动记事本程序然后输人源代码
![](images/64170068f2651b5a95a8b51259d6364f157d66ed045b63a585345009ea638bdd.jpg)
# 图1-13 使用记事本编辑简单 Python程序
单击“文件” $\longrightarrow$ “另存为”,在弹出的窗口中选择保存路径,输人文件名hello.Py,如图1-14所示。注意:要将保存类型设置为“所有文件”,否则将生成后缀名为.txt的文件。编码选择默认的“UTF-8”
![](images/5a2df7b7e848f37385fae2b385a262b0c38dbac7ea871e6b7129689380951be3.jpg)
图1-14 保存为hello.py
打开Windows 命令提示符,进入 hell.py文件所在的目录,运行 Python 程序文件获得输出,如图1-15所示
![](images/48c0d3c9f589f5ba3649a12fe1bdf41ae7dc70e5a00248d519ef1fd4940f289f.jpg)
图1-15 通过命令行方式运行 Python 程序文件
第二种方法,打开IDLE,按快捷键“Ctrl+N”打开一个新窗口,或者在菜单中选择“File”“NewFile”选项。这个新窗口不是交互式的,它是一个具备Python 语法高亮辅助的编辑器,可以进行代码编辑。
【例1-4】 使用IDLE编辑器运行 Python程序
打开 IDLE编辑器,在其中输入例1-1所示的 Python代码,保存为hello.py文件,如图1-16所示。按快捷键F5运行,或者在菜单中选择“Run”→“Run Module”选项运行该文件。
![](images/3e64b981eecb83b3ad9f82fd967dc794e118de973affa1ba5e07701b12af472e.jpg)
图1-16 通过 IDLE 编写并运行 Python 程序文件
IDLE是Python 安装软件包自带的内置开发工具。无论交互式运行或文件式运行,IDLE都有助于快速编写和调试代码,它是小规模Pyhon软件的主要编写工具。在本书中,对于单行代码或者通过观察输出结果讲解量较少代码的情况,将采用IDLE交互式进行描述;对于讲解整段代码的情况,则采用IDLE文件式进行描述。
# 1.2.3 Python 交互式帮助系统
交互式处理(Interactive processing)是以人机对话一问一答的方式获得最后处理结果。Python提供许多标准函数(又称内置函数),可以实现交互式帮助。直接执行内置函数 ${\mathrm{help}}$ ()可进人交互式帮助系统。
【例1-5】 Python交互式帮助系统应用示例
# Python语言程序设计
(1)进入交互式帮助系统
自先进人Python交互模式,在 Python命令提示符>>>后输入命令 help(),回车后进人交互式帮助系统,其命令提示符变成help>,如图1-17所示。
>>help()
Welcome to Python 3.7's help utility!
If this is your first time using Python, you should definitely check out
the tutorial on the Internet at https://docs.python.org/3.7/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
retuurn to the interpreter,just type quit"
To get a list of available modules, keywords, symbols, or topics, type
“modules","keywords","symbols", or"topics” Each module also comes
with a one-line summary of what it does; to list the modules whose name
cr sumary contain a given string such as spam, type modules spam
help>modules
Please wait a moment while I gather a 1ist of all available modules..
C:\Python\Python37\1ib\site-packages\scipy\init.py:140:UserWarning:A NumPy ersion >=1. 16.5 and <1.23.0 is required for this version of SciPy (detected versio 1.15.0)
Userlarning)
# 图1-17 Python 交互式帮助系统
(2)查看所有安装的模块
在帮助提示符help>后输入命令modules,列出所有安装的模块,如图1-17所示。
(3)查看具体模块的帮助信息
以查看random模块的帮助信息为例。在帮助提示符help>后输入模块名random,提供random模块应用帮助信息,如图1-18所示。还可以通过命令modules random,查看所有与random模块相关的其他安装模块信息。
C:(WINDOWS\system32\cmd.exe-python
help> modules random
Here is a list of modules whose name or summary contains random'
If there are any, enter a module name to get more help.
random - Module inplements the Mersenne Twister random number generator. ctypes.test.test_random_things
random - Random variable generators.
secrets - Generate cryptographically strong pseudo-random numbers suitable for test.test_random
nunpy.random -===
numpy.random info
numpy.random mtrand
# 图1-18 显示与random模块及相关安装模块信息
(4)查看模块中函数的帮助信息
以查看random 模块中 random 函数的相关帮助信息为例。在帮助提示符 help>后输入命令:random.random,提供random()函数的帮助信息,如图1-19所示。
(5)退出帮助系统
![](images/54f6a45c7c60642250b381167dfc2ecf2c2e9775a0a1585e18b74c2b9d7c195c.jpg)
图1-19 显示random()函数帮助信息
输人命令 ${\mathfrak{q u i t}},$ 回车即可退出Python交互模式。
![](images/865a188d118bb95bdd2623d1fdf4332b43830e0f7cbc72ae3324f318dcab63e1.jpg)
# 1.3 Python程序构成
本节以一个程序设计教学中的经典实例一温度转换问题为例,介绍基本的Python语法元素。
# 1.3.1 引例:温度转换
摄氏度和华氏度是用来计量温度的两种体系。摄氏度是瑞典人摄尔修斯于1742年提出的温标,在1标准大气压下把纯净冰的熔点定为0℃,沸点定为100℃,根据这两个固定温度点对温度区间100等分,每段间隔称为1℃。华氏度是德国人华伦海特于1714年创立的温标,在1标准大气压下定纯净冰的熔点为32℃,沸点为212℃,中间分为180等分,每一份为1华氏度。由摄氏度和华氏度的定义可知,两种温标的计算公式如下。
$$
C\ =(\ F\ -\ 32\ )\times1.8
$$
式中,C表示摄氏度,F表示华氏度。编写Python程序实现二者转换的代码如下:
![](images/7eeef1f89abd90ffbad05740ea2a610fd6ccfcd5da32db4c47312ec6ee92d2b3.jpg)
# 结果分析:
此时看不懂上述代码也没关系,后面章节将会详细介绍每句代码的含义。将上述程序保
# Python语言程序设计
存为文件 TempConvert. py。使用 IDLE运行该程序,输出和交互输入如下。输入带摄氏标志的温度值,运行结果:
请输人带有符号的温度值(例如:32c):20C转换后的温度是68.00F
输人带华氏标志的温度值,运行结果:
请输人带有符号的温度值(例如:32C):68F转换后的温度是20.00C
上述程序经过调试后符合Python语法,且执行结果正确。当执行一个较为复杂程序的时,很难保证一次编写后的程序能够直接正确运行得到正确的结果。寻找错误的调试过程是编程不容忽视的重要部分。
# 1.3.2 Python程序框架
Python 程序可分解成模块(文件)、语句、表达式和对象。程序由模块(文件)组成,模块包含语句,语句包含表达式,而表达式用于建立并处理对象。
Python语言编写的程序代码是保存在扩展名为.py的源文件中。该文件又称为模块(module),它是一个包含 Python 语句的简单文本文件。Python解释器可以多次运行.py文件中的语句。
语句是程序的构成要素,Python程序中的语句可分为非执行语句与执行语句。非执行语句包括注释语句、空语句、空行等。执行语句可分为简单语句(如赋值、import、break语句等)和复合语句(如if、while、for、try语句、函数定义和类定义等)。
Python语言采用严格的“缩进”来表明程序的格式框架。缩进指每一行代码开始前的空白区域,用来表示代码之间的包含和层次关系。缩进是Python语言中表明代码之间层次关系的唯一手段,在每一行的最开始部分不要留有空格。Python代码中,缩进可以采用Tab键,也可以采用多个空格(一般是4个空格)实现,两者不能混用。Python对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报异常错误。
IDLE开发环境中,默认以4个空格作为代码的基本缩进单位。编写程序时,可对选中的代码块进行批量缩进和反缩进。
菜单操作:Format| Indent Region,FormatIDedent Region。
键盘操作: $\mathrm{Ctrl}+1$ (批量缩进), $C_{\mathrm{trl}}+[\$ (反缩进)。
图1-20为引例代码的缩进关系,第4、5、7、8、10行存在缩进,表明这些行的代码在逻辑上属于之前紧邻的无缩进代码行的范畴。图1-20中第一个箭头表示if语句与后面的两行语句存在缩进关系,即后面两行代码属于f语句,它们是一个整体。一般来说判断、循环、函数、类等语法形式能够通过输进包含一批代码,进而表达对应的语义。
要求严格的代码缩进是Python语法的一大特色,对Python解释器而言,每行代码前的缩进都有语法和逻辑上的意义。其好处显而易见,在严格要求的代码缩进之下,代码非常整齐
# Python概述 第1章
![](images/aa5cd3aeee339514c6376d0d30403130f25972e6e5747aa3e45280b2a2b32f77.jpg)
图1-20 Python程序的框架格式
规范,提高了可读性,在一定程度上提高了可维护性。其缺点是如果代码缩进标准不统一容易出现语法错误或逻辑错误。
# 【育德悟道
Python严格的编码要求启示我们凡事要守规矩,在学校要遵守学校的各种规章制度;在实验室要遵守实验室的管理规范;团队开发时,如果每个成员都遵循规范,可以大幅降低沟通成本,提高开发效率。
# 1.3.3 Python模块与包
1. Python 模块
逻辑上来说模块就是一组功能的组合,实质上一个模块即一个包含了Python定义和声明的文件,文件名为模块名字加上.py的后缀。模块能够定义函数、类和变量等,模块里也可以包含可执行的代码段。Python包含大量的内置模块,采用内置函数dir()可以列出对象(包括模块)的所有属性及方法。
使用模块最大的好处是极大提高了代码的可维护性。模块的应用使得编写代码不必从零开始,当一个模块编写完毕,就可以被其他地方引用。Python模块可以分为三种:Python标准库、第三方模块和应用程序自定义模块。前两者的区别在于:Python标准库无须安装,通过import语句导人便可使用库中的函数;第三方库函数需要先进行安装,然后再通过import语句导人后使用。应用程序自定义模块将在第5章详细学习。
Python标准库和第三方模块需要导人后才能使用,Python模块导人主要有以下三种方式。
(1)导人模块(方法1):
import 模块名[AS标识符】
比如要引用模块math,就可以在文件最开始的地方用import math来引人。在调用math模块中的函数时,必须通过“模块名.函数名”引用。在导人模块时,有时模块名字很长,使用不方便,则可以使用别名简化模块名称,后续使用模块就可以用“别名.函数名()”
# Python语言程序设计
(2)导入模块中指定项目(方法2):
from模块名impor项目列表
这里的项目可以是函数、类或变量。与方法1的区别:因项目被直接导人本地名字空间,所以它可以直接使用。
(3)导入模块中所有项目(方法3):from模块名import
【例1-6】 math模块中内置函数使用示例。
程序代码:
![](images/7f9d035d4f5b5a0c4f69a67ba35b02f5e669d45ea6cc72c030ea76d04515371d.jpg)
注意:
(1)如果要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用方法2或方法3。
(2)如果想要有选择地导入某些属性和方法,使用方法2。
(3)如果模块包含的属性和方法与其他模块中名称相同,则必须使用方法1来避免名字冲突。
(4)尽量少用方法3,因为判定一个特殊的函数或属性来自哪一个模块有些困难,并且会造成调试和重构更困难。
2.Python 包
为了避免模块名冲突,Python引人了按目录来组织模块的方法,称为包。包体现了模块的结构化管理思想,它是一个分层次的文件目录结构,由若干个模块和子包等组成。
例如,一个 abc.py的文件是一个名字叫 abc的模块,一个xyz.py的文件是一个名字叫xyz的模块。假设新建的 abc和xyz模块名字与其他模块冲突了,就可以通过包来组织模块,避免冲突。包结构如图1-21所示。
package_ainit_.pymodule_al. pymodule_a2.py图1-21 包结构
package_a是包名。包目录下第一个文件便是_init_·Py,如果目录中存在该文件,该目录就会被识别为包;否则,Python把这个目录当成普通目录,而不是一个包。调用包就是执行包下的_init_·Ppy文件。
不同包下包含相同名称的模块时,为了区分,通过“包名.模块名”路径来指定模块,这个路径叫作命名空间。
# 1.3.4 注释与空行续行 1.注释
江样(comments)是程序员在代码中加入的一行或多行信息,用来向用户提示或解释某些代码的作用和功能,以提高代码的可读性,它可以出现在代码中的任何位置。Python解释器在执行代码时会忽略注释,不做任何处理,就好像它不存在一样。例如,图1-20中第1行就是一个注释。在调试程序的过程中,注释还可以用来临时移除无用的代码
很多程序员宁愿自已去开发一个应用,也不愿意去修改别人的代码,没有合理的注释是一个重要的原因。良好的代码可以自成文档,但你永远不清楚今后阅读这段代码的人是谁,他是否和你有相同的思路;或者一段时间以后,你自己也不清楚当时写这段代码的目的了。一般情况下,合理的代码注释应该占源代码的1/3左右
Pyhon语言注释有两种方法:单行注释和多行注释
和多行往。(1)单行注释。Python使用#作为单行注释的符号,语法格式如下。$\#$ 注释内容从#开始,直到这行结束为止的所有内容都是注释。Python解释器遇到#时,会忽略它后面的整行内容。【例1-7】使用#注释多行代码。
# 思路分析:
使用单行注释符#说明多行代码的功能时一般将注释放在代码块的上一行程序代码:
1 #使用print输出字符串
2 print("HelloWorld!")
3 print("Python语言官网")
4 print("http: //www.python.org/")
5 #使用print 输出数字
6 print(100)print( $3+100\times2$ print( $(3+200)\times2$
例1-8】 使用#注释单行代码
# 思路分析:
使用单行注释符#说明单行代码的功能时一般将注释放在代码的右侧。
# 程序代码:
print("http://www.python.org/")
print(36.7\*14.5)
print(100%7)
#输出 Python 语言官方网址
#输出乘积
#输出余数
# (2)多行注释
多行注释指的是一次性注释程序中多行的内容(包含一行)。Python使用三个连续的单
# Python语言程序设计
引号"或者三个连续的双引号"注释多行内容,格式如下
多行 Python语句【例1-9】 Python多行注释示例思路分析:
本例分别使用三个连续的单引号和三个连续的双引号"”注释多行内容程序代码:
12 使用3个单引号分别作为注释的开头和结尾3 可以一次性注释多行内容4 这里面的内容全部是注释内容5 三6使用3个双引号分别作为注释的开头和结尾可以一次性注释多行内容$9$ 这里面的内容全部是注释内容
# 注意:
多行注释通常用来为文件、模块、类或者函数等添加版权或者功能描述信息,在IDLE开发环境中编写程序时,可对选中的代码块进行批量注释和解除注释
菜单操作:Format $\rightarrow$ Comment Out,Region/Uncomment Region。
·键盘操作: $\mathrm{Alt}+3$ (批量注释), $\mathrm{Alt}\!+\!4$ (解除注释)。
使用注释时需要遵循以下原则。第一,注释不是越多越好,对于一目了然的代码,不需要添加注释。第二,对于复杂的操作,应该在操作开始前写上若干行注释。第三,对于不是一目了然的代码,应在其行尾添加注释(为了提高可读性,注释应该至少离开代码2个空格)。第四,绝不要描述代码,有可能阅读代码的人比你更懂Python,他只是不知道你的代码要做什么。编写注释的主要目的是阐述代码要做什么,以及是如何做的。
2.空行与续行
空行一般用于函数之间或类的方法之间的分隔,表示一段新代码的开始。空行与代码缩进不同,空行并不是Python语法的一部分,书写时不插人空行,Python 解释器运行也不会出错。空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
Python通常是一行写完一条语句。如果一行语句太长,可以在行尾加上反斜杠(\)来续行分成多行语句。但是,在列表([])、字典(})、元组(())或三引号定义的字符串(或“"")中的多行语句,不需要使用反斜杠。
# 1.3.5 标识符与保留字
# 1.标识符
简单地理解,标识符就是一个名字,如同每个人都有属于自己的名字,标识符的主要作用就是作为变量、函数、类、模块以及其他对象的名称。
Python标识符的命名要遵守以下的命名规则。
(1)标识符是由字符(A\~Z和a\~z)、下划线和数字组成,但第一个字符不能是数字。
(2)标识符不能和Python中的保留字相同。
(3)以双下划线开始和结束的名称具有特殊含义,一般应避免使用,如“_init二”(4)从Python3.x开始,非ASClI标识符也是允许的,但不建议使用。
【例1-10】Python标识符示例。
以下命名的标识符不合法:
在Python中,标识符中的字母是严格区分大小写的,也就是说,两个同样的单词,如果大小写格式不一样,其代表的意义也是完全不同的。例如,number、Number和NUMBER 就是三个完全独立、毫无关系的标识符,彼此之间是相互独立的个体。
标识符名称在不同场景中的,有一定的默认规范:
·当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母,例如game_main、game_register等。
·当标识符用作包的名称时,应尽量短小,并且全部使用小写字母,不推荐使用下划线例如com.mr、com.mr.book等。
·当标识符用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为Book。
模块内部的类名,可以采用“下划线 $^+$ 首字母大写”的形式,如_Book。
·函数名、类中的属性名和方法名,应全部使用小写字母,多个单词之间可以用下划线分割。
·常量命名应全部使用大写字母,单词之间可以用下划线分割
如果不遵守这些规范,程序照样可以运行,但遵循以上规范可以更加直观地了解代码所代表的含义。例如,以Book类为例,可以很容易地猜到此类与书有关,虽然将类名改为a不会影响程序运行,但通常不这么做。
2.保留字
保留字,又称关键字,指被编程语言内部定义并保留使用的标识符。程序员编写程序时不能命名与保留字相同的标识符,否则会产生编译错误。每种程序设计语言都有一套保留字,保留字一般用来构成程序整体框架、表达关键值和具有结构性的复杂语义等。掌握一门
# ython语言程序设计
编程语言首先要熟记其所对应的保留字。Pyhon 所有的保留字,如表1-1所示。
表1-1 Python 保留字一览表
![](images/d81845ee817b61382bb2efb2b2ae2d5351cbfdb68aea2be57d7533b458f48f4f.jpg)
可以通过Python标准库函数提供一个keyword模块,输出当前版本的所有保留字【例1-11】 查看Python当前版本的所有保留字
>>>import keyword>>>keyword.kwlist['False','None','True', 'and', 'as' 'assert','break','class','continue''def','del','elif','else','except','finally','for','from','global','if',import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']
注意:
由于Python是严格区分大小写的,保留字也不例外。所以,可以说if是保留字,但IF不是保留字。
# 1.3.6 常量与变量
1.常量
常量是指在程序运行过程中不会改变的量。一般分为字面常量与符号常量
字面常量:如-3、3.65、Monday等
符号常量:一般使用大写字母或下划线表示常量
【例1-12】 常量示例。
程序代码:
TAX RATE=0.16
PI=3.14
# 注意:
math包中含有两个数学常量pi、e,用来表示圆周率T与自然常数,如图1-22所示。
2.变量
变量是指程序中值可以发生改变的元素,在程序中用变量名标识。变量可以看成一个小箱子,专门用来“盛装”程序中的数据。每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据。从底层看,程序中的数据最终都要放到内存中,变量名其实就是这块内存的名字,表示一个数字、字符串或任意数据类型的数据。
![](images/06cd5712b81512c929b1b384a0156825922c4e92336d76be406939bc6feeae09.jpg)
图1-22 math包中的数学常量
Python语言变量名的命名规则与标识符命名规则相同,变量在使用之前必须被初始化否则会报错,如图1-23所示。
![](images/6122fd89753d3f2f8b9d90fab862651b3b24e8cbb296cc77e29ae1a887f16522.jpg)
图1-23 变量未初始化报错
在编程语言中,将数据放人变量的过程叫作赋值。Python语言使用等号“=”作为赋值运算符,变量赋值语法格式如下:
变量名 $=$ 字面量或表达式 将“=”右侧的值存放到左边的变量名。“=”称为赋值号,此语句也称“赋值语句”
【例1-13】 变量赋值示例。
程序代码:
$n=10$ str $\boldsymbol{\mathbf{\rho}}=$ "ABCD"
# 结果分析:
第一个赋值语句将整数10赋值给变量n,也就是说,此后n就代表整数10,使用n即使用10。同理,第二个赋值语句将字符串”ABCD"存放到一个名叫str的内存中,使用str就是使用"ABCD"
变量的值不是一成不变的,它可以随时被修改,只要重新赋值即可;另外,也可以将不同类型的数据赋值给同一个变量。
(例1-14】 变量多次赋值示例
# 程序代码:
# Python语言程序设计
3 n=200 将200赋值给变量n
4 abc =12.5 将小数赋值给变量abc
5 abc =85 #将整数赋值给变量abc
6 abc="ABCD" #将字符串赋值给变量abc
注意:
变量的值一旦被修改,之前的值就被覆盖了,不复存在了。换句话说,变量只能容纳一个值。
除了赋值单个数据,也可以将表达式的运行结果赋值给变量【例1-15】将表达式的结果赋值给变量示例。
程序代码:
sum $=100+20$ #将加法的结果赋值给变量rem=25\*30号7 #将余数赋值给变量str $=$ “安徽理工大学” $^+$ “山南校区” #将字符串拼接的结果赋值给变量
Python语言可以同时给多个变量赋相同值,语法格式如下:变量名 $1\ =$ 变量名 $2=\cdots\,=$ 变量名 $n=$ 字面量或表达式【例1-16】 给多个变量赋相同值示例。
程序代码:
$1a=b=c=1$
# 结果分析:
该语句执行后,a、b、c三个变量的值都被赋值为1。Python语言允许同时给多个变量赋不同值,语法格式如下:变量名1,,变量名 $n=$ 表达式1,,表达式 $n$
【例1-17】 给多个变量赋不同值示例。
# 程序代码:
name,age,sex=张三,23,男
# 结果分析:
该语句相当于分别执行了name =张三'、age =23、sex =男三条赋值语句。
Python语言中除赋值号“=”之外,还有复合赋值运算符,如表1-2所示。
表1-2 Python 复合运算符一览表
![](images/d6afae38ce5c65628a622621b3911d7643ef9c41ffb62c21502bd45cf9234a73.jpg)
复合赋值首先对表达式执行运算,然后才将表达式赋给左侧变量,又称增强赋值。
【例1-18】 复合赋值示例程序代码:
>>>x=100 >>>x+=200 >s>print(x) 300 5>x11-99 >>>print(x)
可以使用del语句删除不再使用的变量。格式如下delv1,v2、·,【例1-19】 变量删除示例。
>>>ans=1
>>>del ans
>>>ans
Traceback (most recent call last): File "<pyshell#6>",line 1,in<module> ans
NameError:name 'ans'is not defined
# 1.3.7 基本输入输出
1.input函数
input()函数从控制台获得用户输人,无论用户在控制台输人什么内容,input()函数都以字符串类型返回结果。在获得用户输人之前,input()函数可以包含一些提示性文字,语法格式如下:
变量名 $=$ input([提示性文字])注意,无论用户输人的是字符或是数字,input()函数统一按照字符串类型输出
例1-20】 input()函数示例。
>>>input("请输人:"
请输人:python
'python'
>>>input("请输人:")
请输人:123.4
'123.4'
# 注意:
在例1-20中,当用户输入数字123.4时,input()函数以字符串形式输出一个数字字符串。
# 2.eval函数
eval(<字符串>)函数是Python语言中一个十分重要的函数,它能够以 Python表达式的
# Python语言程序设计
方式解析并执行字符串,并将返回结果输出,其语法格式如下:eval(<字符串 $>$
【例1-21】 eval()函数示例
>>>X=
>>>eval('x+1')
8
>>>eva1('1.1+2.2)
3.3
简单地说,eval()函数的作用是将输人的字符串转变成Python语句并执行。注意合理便用eval()函数处理字符串。
【例1-22】 eval()函数错误使用示例
>>>eval("hello")
Traceback (most recent call last): File "<pyshell#9>", line 1,in <module> eval("hello") File "<string>",line l,in <module>
NameError: name 'hello'is not defined
>>>eval("hello")
'hello'
结果分析:
在例1-22中,第一次直接输入字符串“hello”,eval()函数将去掉两个引号,将其解释为一个变量。由于之前没有定义过hello变量,解释器会报错。当输入字符串hello"时,eval()函数去掉外部双引号后,内部还有一个引号,则hello被解释为字符串。
如果用户希望输入一个数字(小数或负数),并用程序对这个数字进行计算,可以采用eval(input(<输人提示字符串>))的组合。
【例1-23】 使用eval()函数与input()函数组合输入数值
>>>value = eval(input("请输人要计算的数值:"))
请输人要计算的数值:1024.64
>>>print(value\*2)
2049.28
3.print函数
使用print(<待输出字符串>)函数可输出字符信息,也能以字符形式输出变量。当输出纯字符信息时,可以直接将待输出内容传递给print()函数。当输出变量值时,需要采用格式化输出方式,通过format()方法将待输出变量整理成期望输出的格式。
【例1-24】 print()函数示例$>>>\times=12$ >>>print(x+l)
13
>>>sHe110
>y>print(s)
Hello
注意:
print()认输出是换行的,如果要实现不换行需要在变量末尾加上 $\mathrm{end}=^{\prime\prime}{}^{\prime\prime}$ 或别的非换行符字符串,例如:
print(123") #默认换行print(123',end=#") #不换行
# 本章小节
本章介绍了Python 语言简介、Python 安装与使用和 Python 语言的基本元素等内容
(1)程序设计语言分类、编译和解释。
(2)Python语言的发展和特点。
(3)Python解释器的下载和安装。
(4)Python语言的开发环境和交互式帮助系统。
(5)以温度转换程序为例,介绍了Python语言的基本元素
# 课后习题
# 单项选择题
1.以下选项中说法不正确的是
A.解释是将源代码逐条转换成目标代码并同时运行的过程
B.编译是将源代码转换成目标代码的过程
C.Python语言是解释型语言,兼有编译功能
D.静态语言采用解释方式执行,脚本语言采用编译方式执行
2.以下对Python程序缩进格式描述错误的选项是
A.不需要缩进的代码顶行写,前面不能留空白
B.缩进可以用Tab键实现,也可以用多个空格实现C.严格的缩进可以约束程序结构,可以多层缩进D.缩进是用来格式美化Python程序的
3.目前Python较新的版本是
A.1.x B.2.x C.3.x D.4.x
4.下列软件中,能编辑Python程序的是
A.Adobe Photoshop B.IDLE
# Python语言程序设计
C.Windows Media PlayerD.SQL Server
5.以下关于IDLE中字母D指的是
A.DocumentB.Development
C.Down D.Dron
A.Python具有高级的数据结构、缩进的排版、无须声明变量或参数等
B.Python 删除了C、C++的部分功能
C.Python是一种定位简单的高级语言
D.Python是一种低级语言
7.在Python中,一个命令行写多条语句时,语句之间用 分隔。
B. / D. In
8. Python文件的后缀名是
A..pdf B.. do C..pas D..D1
9.关于Python语言的注释,以下选项中描述错误的是
A.单行注释以#开头
B.单行注释以单引号开头
C.多行注释以"(三个单引号)开头和结尾
D.Python语言有两种注释方式:单行注释和多行注释
10.Python3.x中默认的文件编码类型是
1.UTF-8 B.GB2312 C.ASCII D. Unicode
11.以下选项,可以作为Python标识符的是
A.123456 B.123456 C._123456 D.+123456
12.下列标识符合法的是
A.i'm B.3q C._yang D. for
13.下列标识符合法的是
1.var-name B. ! @ #\$ % C._100 D.Elif
14. 选项不是Python语言的保留字
A.try B.None C.max D. del
15.下面不属于Python保留字的是
A.def B.if C.type D. import
16.Python语言中,表达式输出结果为11的选项是
A.print $(\,^{\prime\prime}\,]+1^{\,^{\prime\prime}}\,)$ B.print(1+1) C.print $\mathrm{(\eval{("1+1")})}$ D.print(eval("1"+"1"))
17.关于数据输入及其处理,以下说法正确的是
A.在Python 中语句 $\boldsymbol{\mathrm{x}}$ , ${\mathrm{y}}=1$ 是合法的
B.input函数从控制台获得用户的一行输入,以输入值的类型返回
C.在Python中语句 $x=y=z=1$ 不合法
D.print 函数用于输出运算结果
Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB