Python编程从入门到精通

978-7-115-65553-0
作者: 明日科技
译者:
编辑: 谢晓芳
分类: Python

图书目录:

详情

本书系统、全面地介绍了Python程序设计开发所涉及的各类知识。主要内容包括Python基础知识、数据类型、运算符、条件控制语句、循环结构语句、序列、字符串、列表、字典、集合、文件、I/O、函数、GUI编程和异常处理。全书内容与示例紧密结合,有助于读者理解知识、应用知识,达到学以致用的目的。 本书可作为大中专院校计算机相关专业的教材,也可作为Python自学手册,还适合开发人员参考。

图书摘要

版权信息

书名: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月

第1章 概述

1.1 初识Python

1.1.1 Python简介

Python 是一种跨平台的、开源的、免费的、解释型的高级编程语言,它具有种类丰富和功能强大的库,能够把用其他语言(尤其是C/C++)制作的各种模块很轻松地整合在一起,所以Python常被称为“胶水”语言,其标志如图1.1所示。Python 的应用领域也非常广泛,在 Web 编程、图像处理、大数据处理、网络爬虫和科学计算等领域都能找到 Python 的身影。在全球最大的编程问答社区 Stack Overflow上,Python已经成为受欢迎的编程语言之一。

图1.1 Python的标志

1.1.2 Python的应用领域

作为一种功能强大且简单易学的编程语言,Python广受好评。Python的应用领域有哪些呢?概括来说主要有以下几个领域。

Web开发。

大数据处理。

人工智能。

自动化运维开发。

云计算。

爬虫。

游戏开发。

1.2 Python的安装与问题处理

1.2.1 安装Python

1.如何查看计算机操作系统的位数

为了提高开发效率,编程软件分别对32位操作系统和64位操作系统做了优化,推出了不同的开发工具包。Python也不例外,所以在安装Python前,需要了解计算机操作系统的位数。下面介绍在Windows 10下如何查看操作系统的位数。

在桌面找到“此电脑”图标,右击该图标,在弹出的快捷菜单中选择“属性”命令,如图1.2所示。在弹出的窗口中,在“系统类型”处标记着本机是64位操作系统还是32位操作系统,如图1.3所示。

图1.2 选择“属性”命令

图1.3 查看系统类型

2.下载Python安装包

在Python的官方网站中,可以很方便地下载Python的安装程序。下载完成后,在下载位置可以看到已经下载的Python安装文件“python-3.8.2.exe”,如图1.4所示。

图1.4 下载后的python-3.8.2.exe文件

3.在Windows 64位操作系统上安装Python

在Windows 64位操作系统上安装Python 3.x的步骤可以查看安装视频。

4.检测Python是否安装成功

按照步骤安装Python后,需要检测Python是否安装成功。例如,要在Windows 10操作系统中检测Python是否成功安装,先右击Windows 10操作系统的“开始”菜单,在弹出的快捷菜单中选择“搜索”,在桌面左下角的“搜索程序和文件”文本框中输入cmd命令,然后按Enter键,启动“命令提示符”窗口(又称命令行界面、命令行窗口),在当前的“命令提示符”窗口中输入python,并且按Enter键,如果出现图1.5所示的信息,则说明Python安装成功,同时进入交互式Python解释器。

图1.5 在“命令提示符”窗口中运行的Python解释器

1.2.2 解决“ '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 查看添加的变量值

1.3 Python开发工具

通常情况下,为了提高开发效率,需要使用相应的开发工具。进行Python开发也可以使用开发工具。下面将介绍如何利用Python自带的集成开发和学习环境(IDLE)进行编程。

在安装Python后,会自动安装IDLE。它是Python Shell(可以在打开的IDLE主窗口的标题栏上看到),程序开发人员可以利用它与Python交互。

1.打开IDLE并编写代码

单击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中呈现一次。

2.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作为开发工具。

1.4 基本输出函数print()

在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参数的默认值,即输出空行。

1.4.1 使用连接符连接多个字符串

数值可以直接输出,但使用“+”连接数值和其他类型的数据时,系统会默认执行加法计算,并报错。可以使用“,”连接,或者将数值作为字符串来处理,即在两端加英文单引号或英文双引号。

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+14

1.4.2 指定位数编号输出

zfill()函数可按指定位数输出编号,如将输入的数字格式化为5位编号并输出,代码如下。

instr=input('请输入一个数字:')
print(instr.zfill(5))            # 输出5位编号

运行程序,输入一个数字,会将其格式化为5位编号,如图1.15所示。

图1.15 输出5位编号

1.5 输入函数input()

在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:                        # 如果18age<66
     print("您现在为青年人 (-_-)")                # 输出"您现在为青年人 (-_-)"
if age>=66 and age<80:                        # 如果66age<80
     print("您现在为中年人~@_@~")               # 输出"您现在为中年人~@_@~"
if age>=80:                                   # 如果age80
     print("您现在为老年人 *-_-* ")                # 输出"您现在为老年人*-_-*"

运行程序,会提示输入出生年份,如图1.16所示。输入出生年份,出生年份必须是4位数,如1981。

输入出生年份,如输入2007,按Enter键,运行结果如图1.17所示。

图1.16 提示输入出生年份

图1.17 根据输入的年份计算年龄

1.5.1 常用输入

当使用input()输入信息时,提示信息可以为空值(不提示任何信息),也可以和转义字符结合(如在提示信息后加\n,表示在提示信息后换行)。常见的示例代码如下。

name=input("")                  # 无提示型输入,不换行
name1=input("name:")            # 简洁型输入,不换行
name2=input("请输入您的姓名:")   # 提示型输入,不换行
name3=input("姓名:\n")          # 提示型输入,换行

运行结果如下。

张三丰
name:李四
请输入您的姓名:理想
姓名:
李世民     

1.5.2 去除输入的非法字符

当输入数据时,可能会输入空格等非法字符。这时,可以使用字符串的strip()、lstrip()或rstrip()等方法去除输入的非法字符。例如,使用下面的代码。

name=input("请输入您的姓名:").strip(' ')    # 去除输入数据两端的空格
age=input("请输入您的年龄:").lstrip(' ')    # 去除输入数据左侧的空格
print(name)
print(age)

运行结果如下。

请输入您的姓名: joy
请输入您的年龄: 12
joy   12

1.5.3 多数据输入

input()函数支持多个数据的输入,输入的时候通常使用字符串的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

1.5.4 强制转换输入

用户通过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 University

1.5.5 对输入数据进行验证

Python提供了一些对输入数据进行验证的方法,通过这些方法可以非常方便地判断输入内容是大写字母、小写字母、数字还是空白字符等。主要方法如下。

isalnum():用于验证指定字符是不是都是数字或者字母。

isalpha():用于验证指定字符是不是都是字母。

isdigit():用于验证指定字符是不是都是数字。

islower():用于验证指定字符是不是都是小写字母。

isupper():用于验证指定字符是不是都是大写字母。

istitle():用于验证指定字符是不是都是首字母大写,类似标题。

isspace():用于验证所有字符是不是都是空白字符,如\t、\n、\r。

使用字符串的isdigit()方法可以验证输入数据是不是数字。例如,若输入纯数字,可进入系统,否则,将退出系统,代码如下。

if input('请输入数字验证码:').isdigit():
    print('正在登录草根之家商务系统!')
else:
    print('输入非法,将退出系统!')

输入纯数字的运行结果如下。

请输入数字验证码:1314
正在登录草根之家商务系统!

输入非纯数字的运行结果如下。

请输入数字验证码:q1e2
输入非法,将退出系统!

相关图书

Python编程从新手到高手
Python编程从新手到高手
Python编程快速上手实战手册让烦琐工作自动化
Python编程快速上手实战手册让烦琐工作自动化
AI辅助编程Python实战基于GitHub Copilot和ChatGPT
AI辅助编程Python实战基于GitHub Copilot和ChatGPT
Python数字信号处理
Python数字信号处理
深入浅出数据科学:Python编程
深入浅出数据科学:Python编程
Python编程从入门到精通
Python编程从入门到精通

相关文章

相关课程