书名:Python编程从入门到精通
ISBN:978-7-115-65553-0
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 明日科技
责任编辑 谢晓芳
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书系统、全面地介绍了Python程序设计开发所涉及的各类知识。主要内容包括Python基础知识、数据类型、运算符、条件控制语句、循环结构语句、序列、字符串、列表、字典、集合、文件、I/O、函数、GUI编程和异常处理。全书内容与示例紧密结合,有助于读者理解知识、应用知识,达到学以致用的目的。
本书可作为大中专院校计算机相关专业的教材,也可作为Python自学手册,还适合开发人员参考。
Python自问世以来,发展得越来越快,和Python相关的应用也越来越多。当前,示例教学是计算机程序语言教学最有效的方法之一。本书将Python知识和实用的示例有机结合起来:一方面,追踪Python的发展方向,适应市场需求,精心选择内容,突出重点,强调实用性,使知识讲解全面、系统;另一方面,将知识融入示例讲解,使知识与示例相辅相成,既有利于读者学习知识,又有利于指导读者实践。
如果您在学习或使用本书的过程中遇到问题或疑惑,可以通过如下方式与我们联系,我们会尽快提供解答。
服务网站:mingrisoft网站。
服务电话:0431-84978981/84978982。
企业QQ:4006751066。
服务信箱:mingrisoft@mingrisoft.com。
由于编者水平有限,书中难免存在疏漏和不足之处,敬请广大读者批评指正,以便本书得以改进和完善。
明日科技
2024年9月
Python 是一种跨平台的、开源的、免费的、解释型的高级编程语言,它具有种类丰富和功能强大的库,能够把用其他语言(尤其是C/C++)制作的各种模块很轻松地整合在一起,所以Python常被称为“胶水”语言,其标志如图1.1所示。Python 的应用领域也非常广泛,在 Web 编程、图像处理、大数据处理、网络爬虫和科学计算等领域都能找到 Python 的身影。在全球最大的编程问答社区 Stack Overflow上,Python已经成为受欢迎的编程语言之一。
图1.1 Python的标志
作为一种功能强大且简单易学的编程语言,Python广受好评。Python的应用领域有哪些呢?概括来说主要有以下几个领域。
Web开发。
大数据处理。
人工智能。
自动化运维开发。
云计算。
爬虫。
游戏开发。
为了提高开发效率,编程软件分别对32位操作系统和64位操作系统做了优化,推出了不同的开发工具包。Python也不例外,所以在安装Python前,需要了解计算机操作系统的位数。下面介绍在Windows 10下如何查看操作系统的位数。
在桌面找到“此电脑”图标,右击该图标,在弹出的快捷菜单中选择“属性”命令,如图1.2所示。在弹出的窗口中,在“系统类型”处标记着本机是64位操作系统还是32位操作系统,如图1.3所示。
图1.2 选择“属性”命令
图1.3 查看系统类型
在Python的官方网站中,可以很方便地下载Python的安装程序。下载完成后,在下载位置可以看到已经下载的Python安装文件“python-3.8.2.exe”,如图1.4所示。
图1.4 下载后的python-3.8.2.exe文件
在Windows 64位操作系统上安装Python 3.x的步骤可以查看安装视频。
按照步骤安装Python后,需要检测Python是否安装成功。例如,要在Windows 10操作系统中检测Python是否成功安装,先右击Windows 10操作系统的“开始”菜单,在弹出的快捷菜单中选择“搜索”,在桌面左下角的“搜索程序和文件”文本框中输入cmd命令,然后按Enter键,启动“命令提示符”窗口(又称命令行界面、命令行窗口),在当前的“命令提示符”窗口中输入python,并且按Enter键,如果出现图1.5所示的信息,则说明Python安装成功,同时进入交互式Python解释器。
图1.5 在“命令提示符”窗口中运行的Python解释器
在“命令提示符”窗口中输入“python”命令后,可能会显示“‘python’不是内部或外部命令,也不是可运行的程序或批处理文件”,如图1.6所示。
图1.6 输入“python”命令后出错
出现该问题的原因是,在当前的路径中找不到Python.exe可执行程序,具体的解决方法是配置环境变量。这里以Windows 10操作系统为例介绍配置环境变量的方法,具体如下。
(1)在“此电脑”图标上右击,在弹出的快捷菜单中选择“属性”命令,并在弹出的“系统”窗口中单击“高级系统设置”超链接,将出现图1.7所示的“系统属性”对话框。
(2)单击“环境变量”按钮,将弹出“环境变量”对话框,如图1.8所示。
图1.7 “系统属性”对话框
图1.8 “环境变量”对话框
(3)在“mingribccd的用户变量”中,选择“Path”环境变量,单击“编辑”按钮,将弹出“编辑环境变量”对话框,单击“新建”按钮,在新建的文本框中输入“G:\Python\Python38”,再次单击“新建”按钮,在新建的文本框中输入“G:\Python\Python38\Scripts\”,单击“确定”按钮,如图1.9所示,回到“环境变量”对话框。(注意G 盘为编者安装Python的路径,读者可以根据实际情况进行修改。)
图1.9 编辑环境变量
(4)单击“环境变量”对话框中的“Path”环境变量,可以看到刚添加的变量值,如图1.10所示。单击“确定”按钮,完成环境变量的配置。
(5)在“命令提示符”窗口中,输入 Python 命令,如果Python解释器可以成功运行,说明配置成功。如果已经正确配置了环境变量,仍无法启动Python解释器,建议重新安装Python。
图1.10 查看添加的变量值
通常情况下,为了提高开发效率,需要使用相应的开发工具。进行Python开发也可以使用开发工具。下面将介绍如何利用Python自带的集成开发和学习环境(IDLE)进行编程。
在安装Python后,会自动安装IDLE。它是Python Shell(可以在打开的IDLE主窗口的标题栏上看到),程序开发人员可以利用它与Python交互。
单击Windows 10操作系统的“开始”菜单,依次选择“所有程序”→“Python 3.8”→“IDLE(Python 3.8 64-bit)”命令,即可打开IDLE主窗口,如图1.11所示。
图1.11 IDLE主窗口
编写代码的步骤如下。
(1)在IDLE主窗口的菜单栏中,选择“File”→“New File”命令,将打开一个新窗口。在该新窗口中,可以直接编写Python代码,输入一行代码后,再按Enter键,将自动换到下一行,等待继续输入,如图1.12所示。
图1.12 新创建的Python文件窗口
(2)在代码编辑区中,编写“hello world”程序,代码如下。
print("hello world")(3)编写完成的代码效果如图1.13所示。按Ctrl +S快捷键,保存文件,这里将其保存为demo.py,其中.py是Python文件的扩展名。
图1.13 代码效果
(4)运行程序。从菜单栏中选择“Run”→“Run Module”命令(或按F5键),运行结果如图1.14所示。
图1.14 运行结果
说明
程序运行结果会在IDLE中呈现,每运行一次程序,程序运行结果就会在IDLE中呈现一次。
在程序开发过程中,合理地使用快捷键,不但可以降低代码的错误率,而且可以提高开发效率。因此,掌握IDLE常用的快捷键很有必要的。在IDLE中,可通过选择菜单栏中的“Options”→“Configure IDLE”命令,在打开的“Settings”对话框的“Keys”选项卡中查看快捷键,但该界面是英文的,不便于查看,所以表1.1列出IDLE常用的快捷键。
表1.1 IDLE常用的快捷键
|
快 捷 键 |
说 明 |
使 用 范 围 |
|---|---|---|
|
F1 |
打开Python帮助文档 |
在Python文件窗口和Python Shell窗口中均可用 |
|
Alt+P |
浏览历史命令(上一条) |
仅在Python Shell窗口中可用 |
|
Alt+N |
浏览历史命令(下一条) |
仅在Python Shell窗口中可用 |
|
Alt+/ |
自动补全前面曾经出现过的单词。如果之前的多个单词具有相同的前缀,可以连续按该快捷键,在多个单词中循环来选择 |
在Python文件窗口和Python Shell窗口中均可用 |
|
Alt+3 |
注释代码块 |
仅在Python文件窗口中可用 |
|
Alt+4 |
取消代码块注释 |
仅在Python文件窗口中可用 |
|
Alt+G |
转到某一行 |
仅在Python文件窗口中可用 |
|
Ctrl+Z |
撤销操作 |
在Python文件窗口和Python Shell窗口中均可用 |
|
Ctrl+Shift+Z |
恢复上一次的撤销操作 |
在Python文件窗口和Python Shell窗口中均可用 |
|
Ctrl+S |
保存文件 |
在Python文件窗口和Python Shell窗口中均可用 |
|
Ctrl+] |
缩进代码块 |
仅在Python文件窗口中可用 |
|
Ctrl+[ |
取消代码块缩进 |
仅在Python文件窗口中可用 |
|
Ctrl+F6 |
重新启动Python Shell |
仅在Python Shell窗口中可用 |
说明
由于IDLE使用起来简单、方便,因此我们将以IDLE作为开发工具。
在Python中,使用内置的print()函数可以将结果输出到IDLE或者标准控制台上。print()函数的语法格式如下。
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)参数说明如下。
value:表示要输出的值;可以是数字、字符串、各种类型的变量等。
…:值列表,表示可以一次性输出多个值;在输出多个值时,需要使用“,”(英文逗号)分隔,输出的值之间默认用空格隔开。
sep:表示输出的值之间的间隔符,默认是一个空格,也可以设置为其他的分隔符。
end:表示输出完最后一个值后需要添加的字符串,用来设定输出语句以什么结尾,默认是换行符“\n”,即输出完会跳到新行;可以换成其他字符串,如end='\t' 或end=' '等。
file:表示输出的目标对象,可以是文件,也可以是数据流,默认是sys.stdout。另外,也可以设置“file = 文件存储对象”,把内容存到该文件中。
flush:表示是否立刻将输出语句输出到目标对象,flush的值为False或者True,默认flush=False,表示输出值会存放在缓存中;当flush=True时,输出值会被强制写入文件。
其中,输出内容可以是数字和字符串(字符串需要使用引号括起来),此类内容将直接输出;输出内容也可以是包含运算符的表达式,此类内容将计算结果输出。例如:
a=100 # 变量a的值为100
b=5 # 变量b的值为5
print(9) # 输出数字9
print(a) # 输出变量a的值
print(a*b) # 输出a*b的结果
print("go big or go home") # 输出"go big or go home"
多学两招
在Python中,默认情况下,使用print()语句输出结果后会自动换行,如果想要一次输出多项内容,而且不换行,可以将要输出的内容使用英文逗号分隔。下面的代码将在一行中输出变量a和b的值,以及字符串。
print(a,b,'要么出众,要么出局') # 输出结果:100 5 要么出众,要么出局
注意
sep、end、file、flush都必须以命名参数的方式传参,否则会被当作需要输出的对象。
提示
如果print()函数不传递任何参数,将会输出end参数的默认值,即输出空行。
数值可以直接输出,但使用“+”连接数值和其他类型的数据时,系统会默认执行加法计算,并报错。可以使用“,”连接,或者将数值作为字符串来处理,即在两端加英文单引号或英文双引号。
print(1314) # 直接输出整数,可不带英文双引号或英文单引号
1314
print(12.22) # 直接输出浮点数
12.22
print(10/3) # 可以包含运算表达式,输出运算结果
3.3333333333333335
print(100*3.13 + 60) # 可以包含运算表达式,输出运算结果
373
print(2, 0, 2, 0) # 使用","连接要输出的数值,输出结果之间用空格分隔
2 0 2 0
print(192, 168, 1, 1, sep='.') # 使用"."连接输出数值,数值之间用"."分隔
192.168.1.1
print("广州恒大" + 43) # 不能直接使用"+"连接字符串和数值
TypeError: can only concatenate str (not "int") to str
print("广州恒大" + str(43)) # 使用"+"连接字符串和数值时,数值要转换为字符串
广州恒大43
print("广州恒大", 43) # 使用","连接字符串和数值,字符串和数值之间用空格分隔
广州恒大 43
print("%e" % 120563332111098) # 使用操作符“"%e"%”格式化数值为科学记数法
1.205633e+14zfill()函数可按指定位数输出编号,如将输入的数字格式化为5位编号并输出,代码如下。
instr=input('请输入一个数字:')
print(instr.zfill(5)) # 输出5位编号运行程序,输入一个数字,会将其格式化为5位编号,如图1.15所示。
图1.15 输出5位编号
在Python中,使用内置函数input()可以接收用户从键盘输入的信息。input()函数的基本用法如下。
variable=input("提示文字")其中,variable为保存输入结果的变量,双引号内的提示文字用于提示要输入的内容。例如,要接收用户输入的内容并保存到变量tip中,可以使用下面的代码。
tip=input("请输入文字:")在Python 3.x中,无论输入的是数字还是字符,都将被当作字符串读取。如果要接收数值,需要对接收到的字符串进行类型转换。例如,要接收整型的数字并保存到变量num中,可以使用下面的代码。
num=int(input("请输入您的幸运数字:"))要获得字符对应的ASCII值,该如何实现呢?使用ord()函数可以将字符的ASCII值转换为数字。下面的代码用于根据输入字符,输出相应的ASCII值。
name=input("输入字符:") # 输入字母或数字,不能输入汉字
print(name+" 的ASCII值:",ord(name)) # 显示字符对应的ASCII值如果输入字符“A”,则输出结果为“A的ASCII值为65”;如果输入数字5,则输出结果为“5的ASCII值为53”。
编写程序,根据输入的年份,计算年龄大小。
根据输入的年份(4位数字,如1981),计算目前的年龄。程序中使用input()函数输入年份,使用datetime模块获取当前年份,用当前年份减去输入的年份,就是年龄,代码如下。
import datetime # 导入时间模块
imyear=input("请输入您的出生年份:") # 输入的出生年份必须是4位数
nowyear=datetime.datetime.now().year # 计算当前年份
age=nowyear-int(imyear) # 用于计算实际年龄
print("您的年龄:"+str(age) +"岁") # 输出年龄
# 根据计算的年龄判断所处的年龄阶段
if age<18: # 如果年龄小于18岁
print("您现在为未成年人 ~@_@~") # 输出"您现在为未成年人 ~@_@~"
if age>=18 and age<66: # 如果18≤age<66
print("您现在为青年人 (-_-)") # 输出"您现在为青年人 (-_-)"
if age>=66 and age<80: # 如果66≤age<80
print("您现在为中年人~@_@~") # 输出"您现在为中年人~@_@~"
if age>=80: # 如果age≥80
print("您现在为老年人 *-_-* ") # 输出"您现在为老年人*-_-*"运行程序,会提示输入出生年份,如图1.16所示。输入出生年份,出生年份必须是4位数,如1981。
输入出生年份,如输入2007,按Enter键,运行结果如图1.17所示。
图1.16 提示输入出生年份
图1.17 根据输入的年份计算年龄
当使用input()输入信息时,提示信息可以为空值(不提示任何信息),也可以和转义字符结合(如在提示信息后加\n,表示在提示信息后换行)。常见的示例代码如下。
name=input("") # 无提示型输入,不换行
name1=input("name:") # 简洁型输入,不换行
name2=input("请输入您的姓名:") # 提示型输入,不换行
name3=input("姓名:\n") # 提示型输入,换行运行结果如下。
张三丰
name:李四
请输入您的姓名:理想
姓名:
李世民 当输入数据时,可能会输入空格等非法字符。这时,可以使用字符串的strip()、lstrip()或rstrip()等方法去除输入的非法字符。例如,使用下面的代码。
name=input("请输入您的姓名:").strip(' ') # 去除输入数据两端的空格
age=input("请输入您的年龄:").lstrip(' ') # 去除输入数据左侧的空格
print(name)
print(age)运行结果如下。
请输入您的姓名: joy
请输入您的年龄: 12
joy 12input()函数支持多个数据的输入,输入的时候通常使用字符串的split()方法进行分割,如同时输入某一地点的坐标值等。示例代码如下。
# 在一行输入两个不限定类型的值
x,y=input("请输入出发地点的横、纵坐标值,用英文逗号分隔:").split(',')
name,age,height=input('请输入你的姓名、年龄和身高,用英文逗号分隔:\n').split(',')
# 在一行输入两个限定类型为整型的值
a,b=map(int,input('请输入两个数,用空格分隔:\n').split())
print(x,y)
print(age)
print(a,b)运行结果如下。
请输入出发地点的横、纵坐标值,用英文逗号分隔:123,210
请输入你的姓名、年龄和身高,用英文逗号分隔:
joy,22,1.68
请输入两个数,用空格分隔:
27 89
123 210
22
27 89
说明
如果不按指定规则输入,将输出错误提示信息“ValueError: not enough values to unpack”。
通过循环语句也可以实现多个数据的输入,这也需要使用字符串的split()方法对输入的数据进行分割。代码如下。
sum=0
for x in input('请输入多个加数,中间用空格分隔:').split(' '):
sum=sum+int(x)
print(sum)运行结果如下。
请输入多个加数,中间用空格分隔:
1 2 3 4 5 6 7 8
36用户通过input()函数输入的数据都是字符串类型的,有时程序要求输入的数据为某种特定数据类型,如整型、浮点型或日期型等。这时,就需要在输入后进行强制转换。例如,使用int()函数将用户输入的字符串类型的数据转换为整型数据。示例代码如下。
age=int(input('age:'))
print(age)
print(type(age))运行结果如下。
age:30
30
<class 'int'>有时对输入的数据是有一定要求的,如首字母大写、全部小写等。这时,可以使用字符串的lower()、upper()、capitalize()或title()等方法对输入的数据进行强制转换。示例代码如下。
password=input('请输入您的密码:').upper() # 将输入的数据转换为全部大写
name=input('请输入您的姓名:').capitalize() # 将输入的数据转换为首字母大写
school=input('请输入您的学校:').title() # 将输入的数据全部转换为首字母大写
print(password,name,school) # 输出以上转换后的内容运行结果如下。
请输入您的密码:abcdefg
请输入您的姓名:joy
请输入您的学校:harvard university
ABCDEFG Joy Harvard UniversityPython提供了一些对输入数据进行验证的方法,通过这些方法可以非常方便地判断输入内容是大写字母、小写字母、数字还是空白字符等。主要方法如下。
isalnum():用于验证指定字符是不是都是数字或者字母。
isalpha():用于验证指定字符是不是都是字母。
isdigit():用于验证指定字符是不是都是数字。
islower():用于验证指定字符是不是都是小写字母。
isupper():用于验证指定字符是不是都是大写字母。
istitle():用于验证指定字符是不是都是首字母大写,类似标题。
isspace():用于验证所有字符是不是都是空白字符,如\t、\n、\r。
使用字符串的isdigit()方法可以验证输入数据是不是数字。例如,若输入纯数字,可进入系统,否则,将退出系统,代码如下。
if input('请输入数字验证码:').isdigit():
print('正在登录草根之家商务系统!')
else:
print('输入非法,将退出系统!')输入纯数字的运行结果如下。
请输入数字验证码:1314
正在登录草根之家商务系统!输入非纯数字的运行结果如下。
请输入数字验证码:q1e2
输入非法,将退出系统!