描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302526575丛书名: 计算机系列教材
产品特色
编辑推荐
本书以全国计算机等级考试二级Python语言程序设计考试大纲为依据,系统地介绍Python 3.x程序设计基础知识。全书共14章,内容包括Python语言概述、基本数据类型、组合数据类型、顺序与选择结构、循环结构、函数与模块、文件与数据组织、面向对象程序设计、使用tkinter的GUI设计、图形绘制、爬虫与正则表达式、SQLite数据库、异常处理和Python计算生态。附录给出了全国计算机等级考试二级 Python语言程序设计考试大纲(2018年版)和上海市计算机等级考试二级Python大纲(2016年版),以及Python的内置数据类型、函数和集成开发工具IDLE。
本书适合作为高等院校相关专业Python程序设计课程的教材或教学参考书,也可作为全国计算机等级考试、全国计算机技术与软件专业技术资格(水平)考试的培训教材,还可供计算机应用开发领域的各类技术人员参考。
本书适合作为高等院校相关专业Python程序设计课程的教材或教学参考书,也可作为全国计算机等级考试、全国计算机技术与软件专业技术资格(水平)考试的培训教材,还可供计算机应用开发领域的各类技术人员参考。
内容简介
本书以全国计算机等级考试二级Python语言程序设计考试大纲为依据,系统地介绍Python 3.x程序设计基础知识。全书共14章,内容包括Python语言概述、基本数据类型、组合数据类型、顺序与选择结构、循环结构、函数与模块、文件与数据组织、面向对象程序设计、使用tkinter的GUI设计、图形绘制、爬虫与正则表达式、SQLite数据库、异常处理和Python计算生态。附录给出了全国计算机等级考试二级 Python语言程序设计考试大纲(2018年版)和上海市计算机等级考试二级Python大纲(2016年版),以及Python的内置数据类型、函数和集成开发工具IDLE。
本书适合作为高等院校相关专业Python程序设计课程的教材或教学参考书,也可作为全国计算机等级考试、全国计算机技术与软件专业技术资格(水平)考试的培训教材,还可供计算机应用开发领域的各类技术人员参考。
本书适合作为高等院校相关专业Python程序设计课程的教材或教学参考书,也可作为全国计算机等级考试、全国计算机技术与软件专业技术资格(水平)考试的培训教材,还可供计算机应用开发领域的各类技术人员参考。
目 录
目录
第1章Python语言概述 1
1.1Python概述1
1.1.1Python的发展历程1
1.1.2Python的特点1
1.1.3Python的应用场合2
1.2Python的安装2
1.2.1在Linux下安装Python2
1.2.2在Windows下安装Python3
1.3Python的开发环境5
1.3.1IDLE 5
1.3.2PyCharm6
1.3.3Anaconda8
1.4学习建议14
1.5习题15第2章基本数据类型16
2.1数据类型16
2.1.1数字类型16
2.1.2字符串18
2.2变量18
2.2.1标识符18
2.2.2变量定义和赋值19
2.3运算符20
2.3.1算术运算符20
2.3.2关系运算符21
2.3.3赋值运算符22
2.3.4逻辑运算符23
2.3.5位运算符23
2.3.6成员运算符25
2.3.7身份运算符252.4表达式26
2.4.1表达式组成规则26
2.4.2表达式计算26
2.4.3注意事项27
2.5数据类型的转换27
2.5.1隐式类型转换 27
2.5.2显式类型转换28
2.6Python的关键字和转义符29
2.6.1关键字29
2.6.2转义符29
2.7内置函数30
2.7.1数学函数30
2.7.2随机数函数31
2.7.3时间函数32
2.8习题33第3章组合数据类型35
3.1列表35
3.1.1定义35
3.1.2列表的成员运算符、索引和切片38
3.1.3操作方法39
3.1.4操作函数40
3.2元组41
3.2.1定义41
3.2.2操作方法42
3.3字符串43
3.3.1操作函数43
3.3.2字符串举例45
3.4字典46
3.4.1定义46
3.4.2字典操作47
3.5集合50
3.5.1定义50
3.5.2集合操作50
3.5.3集合运算51
3.6数据类型转换52
3.7习题52第4章顺序与选择结构55
4.1程序设计流程55
4.1.1算法55
4.1.2程序流程图57
4.1.33种控制结构58
4.2顺序结构58
4.2.1输入、处理和输出59
4.2.2输入输出函数59
4.3顺序结构程序设计举例62
4.4选择结构63
4.4.1单分支结构63
4.4.2双分支结构64
4.4.3多分支结构65
4.4.4分支嵌套 67
4.5选择结构程序设计举例68
4.6程序书写格式69
4.6.1缩进69
4.6.2多行语句70
4.6.3空行70
4.6.4注释71
4.7语句构造注意事项71
4.8习题72第5章循环结构73
5.1循环概述73
5.1.1循环结构73
5.1.2循环分类74
5.2while语句74
5.2.1基本形式74
5.2.2else 语句76
5.2.3死循环76
5.3for语句77
5.3.1遍历循环77
5.3.2内置函数range()77
5.3.3循环嵌套实现78
5.4转移语句 80
5.4.1break语句81
5.4.2continue语句82
5.4.3pass语句83
5.5迭代器84
5.5.1iter()方法84
5.5.2next()方法84
5.6循环语句举例84
5.7语句构造注意事项88
5.8习题89第6章函数与模块91
6.1函数概述91
6.1.1函数引例91
6.1.2函数分类92
6.2函数的定义与使用92
6.2.1函数的定义92
6.2.2函数的使用93
6.2.3函数的返回值94
6.3参数传递95
6.3.1实参与形参95
6.3.2传对象引用95
6.4参数分类96
6.4.1必备参数96
6.4.2默认参数97
6.4.3关键参数97
6.4.4可变长参数98
6.5两类特殊函数98
6.5.1匿名函数98
6.5.2递归函数99
6.6变量作用域103
6.6.1局部变量103
6.6.2全局变量104
6.7模块104
6.7.1命名空间104
6.7.2模块定义与导入105
6.8第三方包管理工具105
6.8.1pip105
6.8.2安装wheel文件106
6.8.3将py文件打包成exe文件107
6.9习题108第7章文件与数据组织109
7.1文件109
7.1.1字符编码109
7.1.2文本文件和二进制文件110
7.2文件操作110
7.2.1打开和关闭文件110
7.2.2读写文件112
7.2.3文件相关函数114
7.3文件操作举例116
7.4数据组织117
7.4.1维度117
7.4.2CSV格式118
7.5习题119第8章面向对象程序设计120
8.1面向对象概述120
8.1.1类与对象120
8.1.2三大特性 121
8.2类属性与实例属性122
8.2.1类属性122
8.2.2实例属性123
8.3方法124
8.3.1对象方法124
8.3.2类方法125
8.3.3静态方法126
8.4构造函数与析构函数126
8.4.1构造函数126
8.4.2析构函数127
8.5继承性127
8.6多态性129
8.7习题131第9章tkinter的GUI设计132
9.1概述132
9.1.1界面设计原则132
9.1.2Python的GUI工具132
9.2tkinter概述133
9.3常用控件134
9.3.1标签134
9.3.2文本框135
9.3.3输入框136
9.3.4单选按钮137
9.3.5复选框137
9.3.6按钮138
9.3.7列表框139
9.3.8滚动条139
9.3.9对话框和消息框140
9.4布局141
9.4.1pack()方法141
9.4.2grid()方法143
9.4.3place()方法144
9.4.4Frame()方法145
9.5事件响应146
9.6习题147第10章图形绘制148
10.1绘图简介148
10.2turtle148
10.2.1turtle简介148
10.2.2绘图步骤150
10.2.3绘图实例150
10.3Canvas154
10.3.1Canvas简介154
10.3.2绘图步骤155
10.3.3绘制基本图形155
10.3.4绘图实例159
10.4习题161第11章爬虫与正则表达式162
11.1网络爬虫162
11.1.1概述162
11.1.2爬虫流程162
11.2正则表达式162
11.2.1基本语法163
11.2.2re模块164
11.3Python爬虫库167
11.3.1urllib库167
11.3.2requests库168
11.3.3BeautifulSoup库169
11.3.4jieba 库173
11.4网络爬虫举例177
11.4.1需求177
11.4.2实现思路177
11.4.3实现步骤178
11.5习题183第12章SQLite数据库184
12.1关系型数据库184
12.2SQLite数据库简介185
12.3sqlite3模块操作数据库的步骤186
12.4SQLite命令187
12.5SQLite数据库举例189
12.6习题191第13章异常处理192
13.1错误类型192
13.1.1语法错误192
13.1.2运行时错误192
13.1.3逻辑错误193
13.2捕获和处理异常193
13.2.1try…except…else语句 193
13.2.2try…except…finally语句195
13.2.3raise语句196
13.2.4自定义异常类196
13.3习题198第14章Python计算生态199
14.1数据分析199
14.1.1NumPy 199
14.1.2SciPy203
14.1.3Pandas 206
14.2数据可视化209
14.2.1Matplotlib简介209
14.2.2绘制图形210
14.3Web开发214
14.3.1Web开发技术发展历程214
14.3.2Django框架215
14.4游戏开发217
14.4.1Pygame简介217
14.4.2Pygame的模块219
14.5习题224附录A全国计算机等级考试二级Python语言程序设计考试大纲(2018年版)225
A.1基本要求225
A.2考试内容225
A.3考试方式226附录B上海市计算机等级考试二级Python大纲(2016年版)227
B.1考试性质227
B.2考试目标227
B.3考试细则227
B.4试卷结构228
B.5考试内容和要求228附录CPython的内置数据类型231附录DPython的内置函数232
D.1数学函数232
D.2转换函数232
D.3随机数函数233
D.4时间函数234
D.5列表函数236
D.6元组函数236
D.7字符串函数236
D.8字典函数238
D.9集合函数238附录EPython内置的集成开发工具IDLE239
E.1IDLE简介239
E.2IDLE的两种运行方式239
E.2.1命令行运行方式239
E.2.2图形用户界面运行方式240
E.3IDLE的调试方法240附录FPython程序调试器pdb244
F.1pdb简介244
F.2pdb的调用方式244
F.2.1在命令行调用pdb244
F.2.2在Python交互环境中调用pdb244
F.2.3pdb模块的set_trace方法245
F.3调试命令246附录GPyCharm编辑器247
G.1PyCharm简介247
G.2PyCharm调试步骤247参考文献249
第1章Python语言概述 1
1.1Python概述1
1.1.1Python的发展历程1
1.1.2Python的特点1
1.1.3Python的应用场合2
1.2Python的安装2
1.2.1在Linux下安装Python2
1.2.2在Windows下安装Python3
1.3Python的开发环境5
1.3.1IDLE 5
1.3.2PyCharm6
1.3.3Anaconda8
1.4学习建议14
1.5习题15第2章基本数据类型16
2.1数据类型16
2.1.1数字类型16
2.1.2字符串18
2.2变量18
2.2.1标识符18
2.2.2变量定义和赋值19
2.3运算符20
2.3.1算术运算符20
2.3.2关系运算符21
2.3.3赋值运算符22
2.3.4逻辑运算符23
2.3.5位运算符23
2.3.6成员运算符25
2.3.7身份运算符252.4表达式26
2.4.1表达式组成规则26
2.4.2表达式计算26
2.4.3注意事项27
2.5数据类型的转换27
2.5.1隐式类型转换 27
2.5.2显式类型转换28
2.6Python的关键字和转义符29
2.6.1关键字29
2.6.2转义符29
2.7内置函数30
2.7.1数学函数30
2.7.2随机数函数31
2.7.3时间函数32
2.8习题33第3章组合数据类型35
3.1列表35
3.1.1定义35
3.1.2列表的成员运算符、索引和切片38
3.1.3操作方法39
3.1.4操作函数40
3.2元组41
3.2.1定义41
3.2.2操作方法42
3.3字符串43
3.3.1操作函数43
3.3.2字符串举例45
3.4字典46
3.4.1定义46
3.4.2字典操作47
3.5集合50
3.5.1定义50
3.5.2集合操作50
3.5.3集合运算51
3.6数据类型转换52
3.7习题52第4章顺序与选择结构55
4.1程序设计流程55
4.1.1算法55
4.1.2程序流程图57
4.1.33种控制结构58
4.2顺序结构58
4.2.1输入、处理和输出59
4.2.2输入输出函数59
4.3顺序结构程序设计举例62
4.4选择结构63
4.4.1单分支结构63
4.4.2双分支结构64
4.4.3多分支结构65
4.4.4分支嵌套 67
4.5选择结构程序设计举例68
4.6程序书写格式69
4.6.1缩进69
4.6.2多行语句70
4.6.3空行70
4.6.4注释71
4.7语句构造注意事项71
4.8习题72第5章循环结构73
5.1循环概述73
5.1.1循环结构73
5.1.2循环分类74
5.2while语句74
5.2.1基本形式74
5.2.2else 语句76
5.2.3死循环76
5.3for语句77
5.3.1遍历循环77
5.3.2内置函数range()77
5.3.3循环嵌套实现78
5.4转移语句 80
5.4.1break语句81
5.4.2continue语句82
5.4.3pass语句83
5.5迭代器84
5.5.1iter()方法84
5.5.2next()方法84
5.6循环语句举例84
5.7语句构造注意事项88
5.8习题89第6章函数与模块91
6.1函数概述91
6.1.1函数引例91
6.1.2函数分类92
6.2函数的定义与使用92
6.2.1函数的定义92
6.2.2函数的使用93
6.2.3函数的返回值94
6.3参数传递95
6.3.1实参与形参95
6.3.2传对象引用95
6.4参数分类96
6.4.1必备参数96
6.4.2默认参数97
6.4.3关键参数97
6.4.4可变长参数98
6.5两类特殊函数98
6.5.1匿名函数98
6.5.2递归函数99
6.6变量作用域103
6.6.1局部变量103
6.6.2全局变量104
6.7模块104
6.7.1命名空间104
6.7.2模块定义与导入105
6.8第三方包管理工具105
6.8.1pip105
6.8.2安装wheel文件106
6.8.3将py文件打包成exe文件107
6.9习题108第7章文件与数据组织109
7.1文件109
7.1.1字符编码109
7.1.2文本文件和二进制文件110
7.2文件操作110
7.2.1打开和关闭文件110
7.2.2读写文件112
7.2.3文件相关函数114
7.3文件操作举例116
7.4数据组织117
7.4.1维度117
7.4.2CSV格式118
7.5习题119第8章面向对象程序设计120
8.1面向对象概述120
8.1.1类与对象120
8.1.2三大特性 121
8.2类属性与实例属性122
8.2.1类属性122
8.2.2实例属性123
8.3方法124
8.3.1对象方法124
8.3.2类方法125
8.3.3静态方法126
8.4构造函数与析构函数126
8.4.1构造函数126
8.4.2析构函数127
8.5继承性127
8.6多态性129
8.7习题131第9章tkinter的GUI设计132
9.1概述132
9.1.1界面设计原则132
9.1.2Python的GUI工具132
9.2tkinter概述133
9.3常用控件134
9.3.1标签134
9.3.2文本框135
9.3.3输入框136
9.3.4单选按钮137
9.3.5复选框137
9.3.6按钮138
9.3.7列表框139
9.3.8滚动条139
9.3.9对话框和消息框140
9.4布局141
9.4.1pack()方法141
9.4.2grid()方法143
9.4.3place()方法144
9.4.4Frame()方法145
9.5事件响应146
9.6习题147第10章图形绘制148
10.1绘图简介148
10.2turtle148
10.2.1turtle简介148
10.2.2绘图步骤150
10.2.3绘图实例150
10.3Canvas154
10.3.1Canvas简介154
10.3.2绘图步骤155
10.3.3绘制基本图形155
10.3.4绘图实例159
10.4习题161第11章爬虫与正则表达式162
11.1网络爬虫162
11.1.1概述162
11.1.2爬虫流程162
11.2正则表达式162
11.2.1基本语法163
11.2.2re模块164
11.3Python爬虫库167
11.3.1urllib库167
11.3.2requests库168
11.3.3BeautifulSoup库169
11.3.4jieba 库173
11.4网络爬虫举例177
11.4.1需求177
11.4.2实现思路177
11.4.3实现步骤178
11.5习题183第12章SQLite数据库184
12.1关系型数据库184
12.2SQLite数据库简介185
12.3sqlite3模块操作数据库的步骤186
12.4SQLite命令187
12.5SQLite数据库举例189
12.6习题191第13章异常处理192
13.1错误类型192
13.1.1语法错误192
13.1.2运行时错误192
13.1.3逻辑错误193
13.2捕获和处理异常193
13.2.1try…except…else语句 193
13.2.2try…except…finally语句195
13.2.3raise语句196
13.2.4自定义异常类196
13.3习题198第14章Python计算生态199
14.1数据分析199
14.1.1NumPy 199
14.1.2SciPy203
14.1.3Pandas 206
14.2数据可视化209
14.2.1Matplotlib简介209
14.2.2绘制图形210
14.3Web开发214
14.3.1Web开发技术发展历程214
14.3.2Django框架215
14.4游戏开发217
14.4.1Pygame简介217
14.4.2Pygame的模块219
14.5习题224附录A全国计算机等级考试二级Python语言程序设计考试大纲(2018年版)225
A.1基本要求225
A.2考试内容225
A.3考试方式226附录B上海市计算机等级考试二级Python大纲(2016年版)227
B.1考试性质227
B.2考试目标227
B.3考试细则227
B.4试卷结构228
B.5考试内容和要求228附录CPython的内置数据类型231附录DPython的内置函数232
D.1数学函数232
D.2转换函数232
D.3随机数函数233
D.4时间函数234
D.5列表函数236
D.6元组函数236
D.7字符串函数236
D.8字典函数238
D.9集合函数238附录EPython内置的集成开发工具IDLE239
E.1IDLE简介239
E.2IDLE的两种运行方式239
E.2.1命令行运行方式239
E.2.2图形用户界面运行方式240
E.3IDLE的调试方法240附录FPython程序调试器pdb244
F.1pdb简介244
F.2pdb的调用方式244
F.2.1在命令行调用pdb244
F.2.2在Python交互环境中调用pdb244
F.2.3pdb模块的set_trace方法245
F.3调试命令246附录GPyCharm编辑器247
G.1PyCharm简介247
G.2PyCharm调试步骤247参考文献249
前 言
前言
Python 已经成为继Java、C 之后的第三大编程语言,作为一种面向对象的解释型计算机程序设计语言,它具有简单易学、免费开源、有丰富和强大的库等特点。本书以全国计算机等级考试二级Python语言程序设计考试大纲为依据,系统地介绍Python程序设计基础知识。全书共14章,内容包括Python语言概述、基本数据类型、组合数据类型、顺序与选择结构、循环结构、函数与模块、文件与数据组织、面向对象程序设计、使用tkinter的GUI设计、图形绘制、爬虫与正则表达式、SQLite数据库、异常处理和Python计算生态。附录给出了全国计算机等级考试二级 Python语言程序设计考试大纲(2018年版)和上海市计算机等级考试二级Python大纲(2016年版),以及Python的内置数据类型、函数和集成开发工具IDLE。
学习Python,最重要的是学习其编程思想,Python 2和Python 3只存在少量的语法差异,它们的编程思想基本相同。本书的作者多年从事计算机编程语言的教学,编写了C语言、VB 6.0、VB.NET、Python和程序基本算法等相关教材,一直致力于培养学生掌握编程思想及方法,以提高学生的编程应用开发能力。学习编程语言必须进行实践。希望读者注重读代码和写代码的异同点,注重编写代码能力的提高。本书的所有程序都在Anaconda中进行了调试和运行。
ACMICPC亚洲区第一训练委员会主任吴永辉、清华大学出版社张民、西安邮电大学刘有耀、李晓戈、孟伟君、张庆生阅读了本书的部分手稿,提出了很多宝贵的意见。作者在写作本书过程中参阅了大量中英文的专著、教材、论文、报告及网络资料,在此一并向有关的作者表示衷心的感谢。
本书内容精练,结构合理,文字简洁,实训题目经典实用、综合性强,明确定位于面向初、中级读者,由零基础起步,侧重提高,特别适合作为高等院校相关专业Python程序设计课程的教材或教学参考书,也可以作为全国计算机等级考试、全国计算机技术与软件专业技术资格(水平)考试的培训教材,还可以供从事计算机应用开发的各类技术人员参考。
由于作者水平有限,时间紧迫,本书难免有疏漏之处,恳请广大读者批评指正。作者的电子信箱是[email protected]。
Python 已经成为继Java、C 之后的第三大编程语言,作为一种面向对象的解释型计算机程序设计语言,它具有简单易学、免费开源、有丰富和强大的库等特点。本书以全国计算机等级考试二级Python语言程序设计考试大纲为依据,系统地介绍Python程序设计基础知识。全书共14章,内容包括Python语言概述、基本数据类型、组合数据类型、顺序与选择结构、循环结构、函数与模块、文件与数据组织、面向对象程序设计、使用tkinter的GUI设计、图形绘制、爬虫与正则表达式、SQLite数据库、异常处理和Python计算生态。附录给出了全国计算机等级考试二级 Python语言程序设计考试大纲(2018年版)和上海市计算机等级考试二级Python大纲(2016年版),以及Python的内置数据类型、函数和集成开发工具IDLE。
学习Python,最重要的是学习其编程思想,Python 2和Python 3只存在少量的语法差异,它们的编程思想基本相同。本书的作者多年从事计算机编程语言的教学,编写了C语言、VB 6.0、VB.NET、Python和程序基本算法等相关教材,一直致力于培养学生掌握编程思想及方法,以提高学生的编程应用开发能力。学习编程语言必须进行实践。希望读者注重读代码和写代码的异同点,注重编写代码能力的提高。本书的所有程序都在Anaconda中进行了调试和运行。
ACMICPC亚洲区第一训练委员会主任吴永辉、清华大学出版社张民、西安邮电大学刘有耀、李晓戈、孟伟君、张庆生阅读了本书的部分手稿,提出了很多宝贵的意见。作者在写作本书过程中参阅了大量中英文的专著、教材、论文、报告及网络资料,在此一并向有关的作者表示衷心的感谢。
本书内容精练,结构合理,文字简洁,实训题目经典实用、综合性强,明确定位于面向初、中级读者,由零基础起步,侧重提高,特别适合作为高等院校相关专业Python程序设计课程的教材或教学参考书,也可以作为全国计算机等级考试、全国计算机技术与软件专业技术资格(水平)考试的培训教材,还可以供从事计算机应用开发的各类技术人员参考。
由于作者水平有限,时间紧迫,本书难免有疏漏之处,恳请广大读者批评指正。作者的电子信箱是[email protected]。
作者2019年1月
免费在线读
第5章循 环 结 构
循环是指程序反复执行某一语句块。本章首先介绍Python的while循环和for循环,然后介绍break、continue和pass等转移语句。
5.1循环概述
【例5.1】求1~5之和。
程序代码如下:i=1
sum=0
sum =i;i =1
sum =i;i =1
sum =i;i =1
sum =i;i =1
sum =i
print(sum)【解析】sum =i重复写了5次。若本例改为求1~100之和,则sum =i需要写100次。针对这种需要多次重复执行语句的有规律的操作,应使用循环结构。
5.1.1循环结构
循环结构由循环体及循环控制条件两部分组成。反复执行的语句或语句块称为循环体。循环体能否继续执行,取决于循环控制条件。
构造循环结构的关键是确定与循环控制变量有关的3个表达式:
表达式1: 用于给循环控制变量赋初值,作为循环开始的初始条件。
表达式2: 用于判断是否执行循环体。当表达式2为真时,循环体反复被执行;反之,当表达式2为假时,退出循环体,不再反复执行。如果表达式2始终为真,循环体将一直执行,成为死循环。那么,如何终止循环呢?也就是说,如何让表达式2为假?答案是改变循环控制变量,于是就需要表达式3。
表达式3: 用于改变循环控制变量,防止死循环。每当循环体执行一次,表达式3也被计算一次,循环控制变量的改变最终导致表达式2结果为假,从而终止循环。
图5.1给出了循环结构的流程图。
图5.1循环结构的流程图
5.1.2循环分类
循环分为确定次数循环和不确定次数循环。确定次数循环是指在循环开始之前就可以确定循环体执行的次数。不确定次数循环是指只知道循环结束的条件,其循环体所重复执行的次数事先并不知道,往往需要用户参与循环执行的流程控制,实现交互式循环。
Python提供了while和for两种循环结构。
5.2while语句〖*4/5〗5.2.1基本形式while循环,只要条件满足,就不断循环,条件不满足时退出循环。while语句的书写格式如下:while 循环控制条件:
循环体【例5.2】计算1~100的整数之和。
【解析】计算一系列数的和称为累加,是一种典型的循环计算过程。通常引入变量sum存放部分和,变量i存放累加项,通过部分和 累加项实现累加。counter是循环控制变量,和它有关的3个表达式分别是counter=1(表达式1)、counter<=N(表达式2)和counter =1(表达式3) 。
程序代码如下:N=100
counter=1#表达式1,counter为循环控制变量
sum=0#sum表示累加的部分和
while counter<=N:#表达式2,counter的变化范围为1~100
sum=sum counter #部分和累加
counter =1#表达式3,counter的步长为1
print(“1到%d 之和为%d” % (n,sum))程序运行结果如下:1到100 之和为5050【例5.3】求1~100之和循环的单步分析如表5.1所示。表5.1求1~100之和循环的单步分析
循环变量
(counter)表达式2
(counter<=100)是否执行循环体循环体
(sum=sum+counter)表达式3
(counter =1)1True执行122True执行333True执行6499True执行4950100100True执行5050101101False不执行5050101【例5.4】计算1~100的奇数之和,两种方法如下。
方法一: 改变步长,每次递增值为2。i=1;sum=0
while i<=100:
sum=sum i
i =2#步长为2
print(“sum:”,sum)方法二: 遍历100以内的所有数,如果是奇数,进行累加。i=1;sum=0
while i<=100:
if i%2!=0:#是奇数
sum=sum i
i=i 1
print(“sum:”,sum)
5.2.2else 语句
while…else语法格式如下:while 循环控制条件:
循环体
else:
语句块当while结构中存在可选部分else时,其循环体执行结束后,会执行else语句块。
【例5.5】猜数游戏。在0~9范围内猜数。如果大于预设数,显示“bigger!”;如果小于预设数,显示“smaller!”;如此循环,直至猜中该数,显示“right!”。
程序代码如下:num=7#预设数
while True:
guess=int(input(“please input a number:”))
if guess==num:
print(“right!”)
break;
elif guess>num:#大于预设数
print(“bigger!”)
else:#小于预设数
print(“smaller!”)程序运行结果如下:please input a number:8
bigger!
please input a number:4
smaller!
please input a number:7
right!
5.2.3死循环
死循环又称无限循环,当while语句的条件表达式永远为真时,循环将永远不会结束。使用while语句构成无限循环的格式通常为while True:
循环体一般采用在循环体内使用break语句强制结束死循环。如果程序陷入死循环,可以按Ctrl C键退出程序,或者强制结束Python进程。
【例5.6】求2 4 6 … n<100成立的最大的n值。
【解析】遍历过程以递增的方式进行,当找到第一个能使此不等式成立的n值,循环过程立即停止,可使用break语句提前终止循环。
程序代码如下:i=2; sum=0
while True:
sum =i
if sum>=100:
break
else:
i =2
print(“the max number is “,i)程序运行结果如下:the max number is 20
5.3for语句〖*4/5〗5.3.1遍历循环for语句的遍历循环是指依次访问序列中的全体元素,主要应用序列数据类型,如列表、元组、字符串等。for语句书写格式如下:for变量in序列:
语句块
else:
语句块【例5.7】for循环应用于列表。fruits=[‘banana’, ‘apple’, ‘mango’] #列表
for fruit in fruits:
print(‘fruits have:’, fruit)程序运行结果如下:fruits have: banana
fruits have: apple
fruits have: mango
5.3.2内置函数range()
内置函数range()返回一个迭代器,可以生成指定范围的数字。
range()的一般格式如下:range([start,]stop[,step])range()共有3个参数,其中start和step是可选的。start表示开始,默认值为0;end表示结束;step表示每次跳跃的步长,默认值为1。该函数功能是生成一个从start开始、到end结束(不包括end)的数字序列。
【例5.8】range()函数举例。>>>for i in range(1,5)#代表1~5(不包含5)
print(i,” “, end=””)
1 2 3 4
>>>for i in range(1,10,2): #表示从1开始、步长为2、到10为止(不包括10)的数字序列
print(i,” “, end=””)
1 3 5 7 9
>>>for i in range(5) #代表0~5(不包含5)
print(i,” “, end=””)
0 1 2 3 4
5.3.3循环嵌套实现
一个循环体中嵌入另一个循环,这种情况称为多重循环,又称循环嵌套。较常用的是二重循环。二重循环结构需要确定外层循环控制变量和内层循环控制变量,以及内外层循环控制变量之间的关系。一般具有如下两个步骤。
步骤1: 使其中一个循环控制变量为定值,实现单重循环。
步骤2: 将此循环控制变量从定值变为变值,将单重循环转变为二重循环。
【例5.9】打印九九乘法表。
【解析】九九乘法表涉及乘数i和被乘数j两个变量,变化范围为1~9。
步骤1: 先假设被乘数j的值不变,假设为1,实现单重循环。
程序代码如下:for i in range(1,10):
j=1
print(i ,”” ,j , “=” ,i j ,” “,end=””)程序运行结果如下:11=121=231=341=451=561=671=781=891=9步骤2: 将被乘数j的定值1改为变值,让其从1到9变化。
程序代码如下:for i in range(1,10):
for j in range(1,10):
print(‘{0}{1}={2:2}’.format(i,j ,ij),end=””)#格式化输出
print()程序运行结果如下:11=112=213=314=415=516=617=718=819=9
21=222=423=624=825=1026=1227=1428=1629=18
31=332=633=934=1235=1536=1837=2138=2439=27
41=442=843=1244=1645=2046=2447=2848=3249=36
51=552=1053=1554=2055=2556=3057=3558=4059=45
61=662=1263=1864=2465=3066=3667=4268=4869=54
71=772=1473=2174=2875=3576=4277=4978=5679=63
81=882=1683=2484=3285=4086=4887=5688=6489=72
91=992=1893=2794=3695=4596=5497=6398=7299=81【例5.10】鸡兔同笼问题。鸡兔共有30只,脚共有90个,鸡、兔各有多少只?
【解析】设鸡为x只,兔为y只,根据题目要求,列出方程组为x y=30
2x 4y=9采用试凑法解决方程组的求解问题,将x和y变量的每一个值都带入方程中进行尝试。
方法一: 利用二重循环来实现。
程序代码如下:for x in range(0,31):
for y in range(0,31):
if(x y==30 and 2 x 4 y==90):
print(“Chicken is ” ,x)
print(“rabbit is ” , y)程序运行结果如下:Chicken is 15
rabbit is 15注意: 采用二重循环,循环体执行了31×31=961次。
方法二: 利用单重循环来实现。
程序代码如下:for x in range(0,31):
y=30-x
if 2x 4y==90:
print(“Chicken is “, x)
print(“rabbit is ” , y)注意: 采用单重循环,循环体执行了31次。
方法三: 假设鸡兔共有a只,脚共有b个,a为30,b为90。那么方程组为x y=a
2x 4y=bx=(4a-b)/2
y=(b-2a)/2程序代码如下:a=30;b=90
x=(4a-b)//2
y=(b-2a)//2
print(“Chicken is “, x)
print(“rabbit is “, y)循环语句while和for可以相互嵌套。
在使用循环嵌套时,应注意以下几个问题:
(1) 外层循环和内层循环的控制变量不能同名,以免造成混乱。
(2) 循环嵌套应逐层缩进,以保证逻辑关系的清晰。
(3) 循环嵌套不能交叉,即在一个循环体内必须完整地包含另一个循环。下面的循环嵌套形式都是合法的。
形式一:while表达式:
for变量in序列:
语句
语句形式二:while表达式:
while表达式:
语句
语句形式三:for变量in序列:
for变量in序列:
语句
语句形式四:for变量in序列:
while表达式:
语句
语句
5.4转移语句
如果需要在循环体中提前跳出循环,或者在某种条件满足时不执行循环体中的某些语句而立即从头开始新一轮循环,就要用到循环控制语句break、continue和pass语句。
5.4.1break语句
break语句可以提前跳出循环。break语句对循环控制的影响如图5.2所示。
图5.2break语句对循环控制的影响
说明:
(1) break语句只能出现在循环语句的循环体中。
(2) 在循环语句嵌套使用的情况下,break语句只能跳出它所在的循环,而不能跳出多层循环。
【例5.11】用for语句判断从键盘上输入的整数是否为素数。
程序代码如下:i=2
IsPrime=True
num=int(input(“a number:”))
for i in range(2,num-1):
if num % i==0:
IsPrime=False
break
if IsPrime==True:
print(num,”is prime”)
else:
print(num,”is not prime”)从键盘输入9,程序运行过程如表5.2所示。表5.2有break语句的程序运行过程
变量i表达式num%i 布尔值 IsPrime21True30False如果没有break语句,程序将按表5.3所示的过程运行。表5.3没有break语句的程序运行过程
变量i表达式num%i布尔值IsPrime21True30False41False54False63False72False81False5.4.2continue语句
在循环过程中,也可以通过continue语句跳过本轮循环,直接开始下一轮循环,即只结束本轮循环的执行,并不终止整个循环的执行。
说明:
(1) continue语句只能出现在循环语句的循环体中。
(2) continue语句往往与if 语句联用。
(3) 若continue语句出现在while语句中,则跳过循环体中continue语句后面的语句,直接转去判别下一轮循环控制条件;若continue语句出现在for语句中,则执行continue语句就是跳过循环体中continue语句后面的语句,转而执行for语句的表达式3。
continue语句对循环控制的影响如图5.3所示。
图5.3continue语句对循环控制的影响
【例5.12】求200以内能被17整除的所有正整数。
程序代码如下:print(”’The numbers less than 200 and divisible by 17:”’)
for i in range(1, 201, 1):
if i%17!=0:
continue
print(i,” “,end=””)
循环是指程序反复执行某一语句块。本章首先介绍Python的while循环和for循环,然后介绍break、continue和pass等转移语句。
5.1循环概述
【例5.1】求1~5之和。
程序代码如下:i=1
sum=0
sum =i;i =1
sum =i;i =1
sum =i;i =1
sum =i;i =1
sum =i
print(sum)【解析】sum =i重复写了5次。若本例改为求1~100之和,则sum =i需要写100次。针对这种需要多次重复执行语句的有规律的操作,应使用循环结构。
5.1.1循环结构
循环结构由循环体及循环控制条件两部分组成。反复执行的语句或语句块称为循环体。循环体能否继续执行,取决于循环控制条件。
构造循环结构的关键是确定与循环控制变量有关的3个表达式:
表达式1: 用于给循环控制变量赋初值,作为循环开始的初始条件。
表达式2: 用于判断是否执行循环体。当表达式2为真时,循环体反复被执行;反之,当表达式2为假时,退出循环体,不再反复执行。如果表达式2始终为真,循环体将一直执行,成为死循环。那么,如何终止循环呢?也就是说,如何让表达式2为假?答案是改变循环控制变量,于是就需要表达式3。
表达式3: 用于改变循环控制变量,防止死循环。每当循环体执行一次,表达式3也被计算一次,循环控制变量的改变最终导致表达式2结果为假,从而终止循环。
图5.1给出了循环结构的流程图。
图5.1循环结构的流程图
5.1.2循环分类
循环分为确定次数循环和不确定次数循环。确定次数循环是指在循环开始之前就可以确定循环体执行的次数。不确定次数循环是指只知道循环结束的条件,其循环体所重复执行的次数事先并不知道,往往需要用户参与循环执行的流程控制,实现交互式循环。
Python提供了while和for两种循环结构。
5.2while语句〖*4/5〗5.2.1基本形式while循环,只要条件满足,就不断循环,条件不满足时退出循环。while语句的书写格式如下:while 循环控制条件:
循环体【例5.2】计算1~100的整数之和。
【解析】计算一系列数的和称为累加,是一种典型的循环计算过程。通常引入变量sum存放部分和,变量i存放累加项,通过部分和 累加项实现累加。counter是循环控制变量,和它有关的3个表达式分别是counter=1(表达式1)、counter<=N(表达式2)和counter =1(表达式3) 。
程序代码如下:N=100
counter=1#表达式1,counter为循环控制变量
sum=0#sum表示累加的部分和
while counter<=N:#表达式2,counter的变化范围为1~100
sum=sum counter #部分和累加
counter =1#表达式3,counter的步长为1
print(“1到%d 之和为%d” % (n,sum))程序运行结果如下:1到100 之和为5050【例5.3】求1~100之和循环的单步分析如表5.1所示。表5.1求1~100之和循环的单步分析
循环变量
(counter)表达式2
(counter<=100)是否执行循环体循环体
(sum=sum+counter)表达式3
(counter =1)1True执行122True执行333True执行6499True执行4950100100True执行5050101101False不执行5050101【例5.4】计算1~100的奇数之和,两种方法如下。
方法一: 改变步长,每次递增值为2。i=1;sum=0
while i<=100:
sum=sum i
i =2#步长为2
print(“sum:”,sum)方法二: 遍历100以内的所有数,如果是奇数,进行累加。i=1;sum=0
while i<=100:
if i%2!=0:#是奇数
sum=sum i
i=i 1
print(“sum:”,sum)
5.2.2else 语句
while…else语法格式如下:while 循环控制条件:
循环体
else:
语句块当while结构中存在可选部分else时,其循环体执行结束后,会执行else语句块。
【例5.5】猜数游戏。在0~9范围内猜数。如果大于预设数,显示“bigger!”;如果小于预设数,显示“smaller!”;如此循环,直至猜中该数,显示“right!”。
程序代码如下:num=7#预设数
while True:
guess=int(input(“please input a number:”))
if guess==num:
print(“right!”)
break;
elif guess>num:#大于预设数
print(“bigger!”)
else:#小于预设数
print(“smaller!”)程序运行结果如下:please input a number:8
bigger!
please input a number:4
smaller!
please input a number:7
right!
5.2.3死循环
死循环又称无限循环,当while语句的条件表达式永远为真时,循环将永远不会结束。使用while语句构成无限循环的格式通常为while True:
循环体一般采用在循环体内使用break语句强制结束死循环。如果程序陷入死循环,可以按Ctrl C键退出程序,或者强制结束Python进程。
【例5.6】求2 4 6 … n<100成立的最大的n值。
【解析】遍历过程以递增的方式进行,当找到第一个能使此不等式成立的n值,循环过程立即停止,可使用break语句提前终止循环。
程序代码如下:i=2; sum=0
while True:
sum =i
if sum>=100:
break
else:
i =2
print(“the max number is “,i)程序运行结果如下:the max number is 20
5.3for语句〖*4/5〗5.3.1遍历循环for语句的遍历循环是指依次访问序列中的全体元素,主要应用序列数据类型,如列表、元组、字符串等。for语句书写格式如下:for变量in序列:
语句块
else:
语句块【例5.7】for循环应用于列表。fruits=[‘banana’, ‘apple’, ‘mango’] #列表
for fruit in fruits:
print(‘fruits have:’, fruit)程序运行结果如下:fruits have: banana
fruits have: apple
fruits have: mango
5.3.2内置函数range()
内置函数range()返回一个迭代器,可以生成指定范围的数字。
range()的一般格式如下:range([start,]stop[,step])range()共有3个参数,其中start和step是可选的。start表示开始,默认值为0;end表示结束;step表示每次跳跃的步长,默认值为1。该函数功能是生成一个从start开始、到end结束(不包括end)的数字序列。
【例5.8】range()函数举例。>>>for i in range(1,5)#代表1~5(不包含5)
print(i,” “, end=””)
1 2 3 4
>>>for i in range(1,10,2): #表示从1开始、步长为2、到10为止(不包括10)的数字序列
print(i,” “, end=””)
1 3 5 7 9
>>>for i in range(5) #代表0~5(不包含5)
print(i,” “, end=””)
0 1 2 3 4
5.3.3循环嵌套实现
一个循环体中嵌入另一个循环,这种情况称为多重循环,又称循环嵌套。较常用的是二重循环。二重循环结构需要确定外层循环控制变量和内层循环控制变量,以及内外层循环控制变量之间的关系。一般具有如下两个步骤。
步骤1: 使其中一个循环控制变量为定值,实现单重循环。
步骤2: 将此循环控制变量从定值变为变值,将单重循环转变为二重循环。
【例5.9】打印九九乘法表。
【解析】九九乘法表涉及乘数i和被乘数j两个变量,变化范围为1~9。
步骤1: 先假设被乘数j的值不变,假设为1,实现单重循环。
程序代码如下:for i in range(1,10):
j=1
print(i ,”” ,j , “=” ,i j ,” “,end=””)程序运行结果如下:11=121=231=341=451=561=671=781=891=9步骤2: 将被乘数j的定值1改为变值,让其从1到9变化。
程序代码如下:for i in range(1,10):
for j in range(1,10):
print(‘{0}{1}={2:2}’.format(i,j ,ij),end=””)#格式化输出
print()程序运行结果如下:11=112=213=314=415=516=617=718=819=9
21=222=423=624=825=1026=1227=1428=1629=18
31=332=633=934=1235=1536=1837=2138=2439=27
41=442=843=1244=1645=2046=2447=2848=3249=36
51=552=1053=1554=2055=2556=3057=3558=4059=45
61=662=1263=1864=2465=3066=3667=4268=4869=54
71=772=1473=2174=2875=3576=4277=4978=5679=63
81=882=1683=2484=3285=4086=4887=5688=6489=72
91=992=1893=2794=3695=4596=5497=6398=7299=81【例5.10】鸡兔同笼问题。鸡兔共有30只,脚共有90个,鸡、兔各有多少只?
【解析】设鸡为x只,兔为y只,根据题目要求,列出方程组为x y=30
2x 4y=9采用试凑法解决方程组的求解问题,将x和y变量的每一个值都带入方程中进行尝试。
方法一: 利用二重循环来实现。
程序代码如下:for x in range(0,31):
for y in range(0,31):
if(x y==30 and 2 x 4 y==90):
print(“Chicken is ” ,x)
print(“rabbit is ” , y)程序运行结果如下:Chicken is 15
rabbit is 15注意: 采用二重循环,循环体执行了31×31=961次。
方法二: 利用单重循环来实现。
程序代码如下:for x in range(0,31):
y=30-x
if 2x 4y==90:
print(“Chicken is “, x)
print(“rabbit is ” , y)注意: 采用单重循环,循环体执行了31次。
方法三: 假设鸡兔共有a只,脚共有b个,a为30,b为90。那么方程组为x y=a
2x 4y=bx=(4a-b)/2
y=(b-2a)/2程序代码如下:a=30;b=90
x=(4a-b)//2
y=(b-2a)//2
print(“Chicken is “, x)
print(“rabbit is “, y)循环语句while和for可以相互嵌套。
在使用循环嵌套时,应注意以下几个问题:
(1) 外层循环和内层循环的控制变量不能同名,以免造成混乱。
(2) 循环嵌套应逐层缩进,以保证逻辑关系的清晰。
(3) 循环嵌套不能交叉,即在一个循环体内必须完整地包含另一个循环。下面的循环嵌套形式都是合法的。
形式一:while表达式:
for变量in序列:
语句
语句形式二:while表达式:
while表达式:
语句
语句形式三:for变量in序列:
for变量in序列:
语句
语句形式四:for变量in序列:
while表达式:
语句
语句
5.4转移语句
如果需要在循环体中提前跳出循环,或者在某种条件满足时不执行循环体中的某些语句而立即从头开始新一轮循环,就要用到循环控制语句break、continue和pass语句。
5.4.1break语句
break语句可以提前跳出循环。break语句对循环控制的影响如图5.2所示。
图5.2break语句对循环控制的影响
说明:
(1) break语句只能出现在循环语句的循环体中。
(2) 在循环语句嵌套使用的情况下,break语句只能跳出它所在的循环,而不能跳出多层循环。
【例5.11】用for语句判断从键盘上输入的整数是否为素数。
程序代码如下:i=2
IsPrime=True
num=int(input(“a number:”))
for i in range(2,num-1):
if num % i==0:
IsPrime=False
break
if IsPrime==True:
print(num,”is prime”)
else:
print(num,”is not prime”)从键盘输入9,程序运行过程如表5.2所示。表5.2有break语句的程序运行过程
变量i表达式num%i 布尔值 IsPrime21True30False如果没有break语句,程序将按表5.3所示的过程运行。表5.3没有break语句的程序运行过程
变量i表达式num%i布尔值IsPrime21True30False41False54False63False72False81False5.4.2continue语句
在循环过程中,也可以通过continue语句跳过本轮循环,直接开始下一轮循环,即只结束本轮循环的执行,并不终止整个循环的执行。
说明:
(1) continue语句只能出现在循环语句的循环体中。
(2) continue语句往往与if 语句联用。
(3) 若continue语句出现在while语句中,则跳过循环体中continue语句后面的语句,直接转去判别下一轮循环控制条件;若continue语句出现在for语句中,则执行continue语句就是跳过循环体中continue语句后面的语句,转而执行for语句的表达式3。
continue语句对循环控制的影响如图5.3所示。
图5.3continue语句对循环控制的影响
【例5.12】求200以内能被17整除的所有正整数。
程序代码如下:print(”’The numbers less than 200 and divisible by 17:”’)
for i in range(1, 201, 1):
if i%17!=0:
continue
print(i,” “,end=””)
评论
还没有评论。