信息安全案例教程:技术与应用 第2版 课件 第1章 Python起步_第1页
信息安全案例教程:技术与应用 第2版 课件 第1章 Python起步_第2页
信息安全案例教程:技术与应用 第2版 课件 第1章 Python起步_第3页
信息安全案例教程:技术与应用 第2版 课件 第1章 Python起步_第4页
信息安全案例教程:技术与应用 第2版 课件 第1章 Python起步_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python程序设计信息学院2024教材《Python程序设计—从编程基础到专业应用(第2版)》机械工业出版社,2024年考核平时成绩(30%)+

期末考试(70%)平时成绩包含实验(作业)和考勤联系方式电子邮箱:zhangning@课程介绍Python是目前最为灵活、最接近自然语言的通用编程语言,功能强大,适合解决各类计算问题。Python轻语法重应用的特性使得它非常容易上手,有助于初学者形成良好的编程习惯和思维,对于非计算机类专业的学生来说,Python无疑成为开设程序设计语言课程的首选。同时,Python拥有功能强大的第三方库,提供了完整的数据分析框架。全世界的编程人员都在不断地为Python的第三方库贡献力量,使得Python能够通过短短几行代码就可以解决一个非常复杂的问题。课程介绍本课程主要特色和创新体现在:一是采用任务驱动的教学理念,每章章首给出本章要完成的任务(案例),所有知识点均围绕该任务(案例)实现;二是突出Python在数据分析方面的强大功能,从第2章就开始使用Python的标准库和第三方库;三是面向财经应用,具有鲜明的专业应用特色。课程介绍第一部分Python编程基础第1章Python起步第2章数值计算第3章序列

第4章非序列组合第5章

程序的控制结构第6章结构化的程序设计第7章面向对象的程序设计课程介绍第二部分Python专业应用第8章数据分析基础第9章数据可视化第10章数据分析建模32学时16学时第1章Python起步信息学院2024引言1.1案例:计算终值1.2Python的安装和运行1.3Python语言简介1.4程序的基本要素1.5编程实践:累加、累乘1.6本章小结1.7习题本章将学习如何安装Python开发环境,如何运行Python程序,了解什么是程序设计语言以及Python的特性,掌握编写程序的基本要素,包括数据类型、变量、运算符、函数、语句、控制结构等。在章首案例的指引下,本章将介绍如何创建你的第一个具有完整功能的Python程序文件并运行它。1.1案例:计算终值假设你刚开了一个新的储蓄账户,每年的利率是2%,赚的利息在年底支付,然后加到储蓄账户的余额中。编写一个程序,首先从用户那里读取存入账户的金额,然后计算并显示储蓄账户在1年、2年和3年后的金额,使其四舍五入到小数点后两位。编写程序文件并命名为ch01.py,运行:首先程序提示输入初始存入账户的金额,即本金,这里输入1000;然后程序提示输入年利率,不输入的话默认为2%,这里采用默认值。输入完毕后,程序根据输入值进行运算,并输出终值计算结果。1.2.1搭建编程环境下载和安装启动Python交互式解释器1.2.2创建并运行程序交互式文件式1.2Python的安装和运行学习一种编程语言,首先要找一款合适的集成开发工具。IDLE是Python软件包自带的一个集成开发环境,初学者可以利用它方便地创建、运行、测试和调试Python程序。初学者使用IDLE编辑器写代码,能够专注于Python本身,而不是如何使用工具,手动运行代码,可以更加直观地了解程序脚本的解释执行过程。下面就来看一下如何下载和安装Python软件包并使用其中的IDLE。1.2.1搭建编程环境打开Python官方主页,可以访问所有相关资源:/点击“downloads”,可以看到当前最新版本,比如Python3.11.1。单击“DownloadPython3.11.1”按钮,直接下载Windows操作系统的Python解释器。如果要下载其他操作系统的Python解释器,点击相应的操作系统链接,比如Linux/UNIX、macOS。下载和安装双击下载的可执行文件“python-3.11.1-amd64.exe”安装Python解释器。下载和安装勾选最下方“AddPython.exetoPATH”,选择“InstallNow”将Python安装在默认路径下,选择“Customizeinstallation”自行指定安装路径(如C:\Python311)。安装完成后,在“程序”里就可以找到Python程序。IDLE是Python集成开发环境(IntegratedDevelopmentEnvironment),也是最常使用的Python编程环境,Python3.11是Python命令行,也是常用的Python编程环境。下载和安装通过IDLE方式启动:通过命令行方式启动:启动Python交互式解释器两种界面都以三个大于号“>>>”作为提示符,可以在提示符后输入要执行的语句,按回车执行。运行Python程序有两种方式:交互式和文件式。本课程中凡是出现提示符“>>>”,表示代码在交互式下运行,不带该提示符的代码则表示以文件式的方式运行。1.2.2创建并运行程序交互式指Python解释器即时响应用户输入的每条代码,给出输出结果。比如,在IDLE中输入print("HelloWorld")语句,回车后,可以看到语句的运行结果是在屏幕上输出“HelloWorld”。交互式一般用于调试少量代码。在“>>>”后输入exit()或者quit()可以退出Python运行环境。交互式文件式是最常用的编程方式,也称为批量式。指用户将Python程序写在一个或多个文件中,然后启动Python解释器批量执行文件中的代码。在IDLE中,选择File→NewFile菜单选项或者按Ctrl+N打开一个新窗口,在其中输入Python代码,并保存为Python程序文件(后缀名为py)。文件式在新窗口中输入print("HelloWorld")语句,选择File→SaveAs菜单选项,将文件保存为“hello.py”,选择想要保存文件的路径(如C:\Python311),点击“保存”按钮保存。文件式程序文件也被称为模块(module)。按快捷键F5运行程序,或者选择Run→RunModule菜单选项,运行结果显示在Python交互界面中。文件式Python程序文件被保存并关闭后,可以通过在IDLE中选择File→Open菜单选项或者按快捷键Ctrl+O重新打开它,也可以在文件资源管理器中找到这个程序文件,点击右键,选择“EditwithIDLE”重新打开它。注意:不要通过双击打开一个Python程序文件,双击时默认会通过命令行方式执行这个程序。文件式1.3Python语言简介1.3.1程序设计语言低级语言和高级语言常用的程序设计语言通用语言和专用语言静态语言和动态语言1.3.2Python的起源和特性语法特性开源语言功能强大程序就是告诉计算机做什么的指令序列,我们需要用一种计算机能够理解的语言来表达这些指令。如果我们能用自然语言告诉计算机该做什么那是最好不过了,计算机科学家们也正在朝这个方向努力(比如苹果的Siri),但我们还没有办法让计算机完全理解人类的自然语言。同时,人类的自然语言并不非常适合描述复杂的算法,因为自然语言充满了模糊性和不精确性。为此,计算机科学家们设计了能够以精确、清晰的方式表达计算的符号来解决这个问题,这些特殊的符号就被称为程序设计语言。程序设计语言中的每一种结构都具有精确的形式(称为句法)和精确的含义(称为语义),程序员们经常把他们写出来的程序称为计算机代码。1.3.1程序设计语言机器语言和汇编语言统称为低级语言。机器语言使用二进制代码表达指令,是计算机硬件可以直接识别和执行的编程语言,用机器语言编写程序十分繁冗,程序也难以阅读和修改。汇编语言使用助记符与机器语言中的指令进行一一对应,在计算机发展早期能帮助程序员提高编程效率。高级语言是接近自然语言的编程语言,可以更容易地描述计算问题并利用计算机解决计算问题。第一个广泛应用的高级语言是诞生于1972年的C语言,之后50年来先后诞生了几千种高级语言,其中大多数语言由于应用领域狭窄而退出了历史舞台。Python作为一种高级语言,其第一个公开发行版发行于1991年。低级语言和高级语言除了Python、C之外,常用的程序设计语言还包括C++、C#、Java、JavaScript、R、PHP、Ruby、Matlab、HTML、Perl、Fortran、SQL,还有谷歌的Go语言和苹果的Swift语言,等等。从2014年开始,IEEESpectrum杂志每年都会发布编程语言排行榜,Python的排名从2016年开始持续上升,2017年跃居榜首,至今已蝉联六年冠军,2022年位于排行榜前五的编程语言分别是:Python、C、C++、C#、Java。根据TIOBE在2022年12月发布的最新编程语言指数,Python首次超越C位居榜首,排名前五的编程语言同样是:Python、C、C++、Java、C#。常用的程序设计语言通用语言是指能够用于编写多种用途程序的编程语言,语法中没有专门用于特定应用的程序元素,如Python、C、C++、C#、Java,等等。Python是目前最为灵活、最接近自然语言的通用编程语言,功能强大,适合解决各类计算问题,是数据科学、数据分析、人工智能(artificialintelligence)、区块链(blockchain)等领域的首选语言。专用语言是指包含针对特定应用的程序元素,或者应用领域比较狭窄的编程语言,如HTML(用来描述网页的标记语言)、JavaScript(适用于Web客户端开发的脚本语言)、PHP(适用于Web服务器端开发的脚本语言)、Matlab(科学计算语言)、SQL(数据库操作语言),等等。通用语言和专用语言高级语言按照计算机执行方式的不同可以分成两类:采用解释执行的动态语言和采用编译执行的静态语言。编译是将源代码(高级语言代码)转换成目标代码(机器语言代码)的过程,执行编译的计算机程序称为编译器。解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程,执行解释的计算机程序称为解释器。解释和编译的区别在于:编译是一次性地翻译,一旦程序被编译,就不再需要编译器或者源代码;解释则在每次程序运行时都需要解释器和源代码。这两者的区别类似于外语资料的翻译和实时的同声传译。静态语言和动态语言C、C++、Java等语言是采用编译执行的静态语言,而JavaScript、PHP等语言则是采用解释执行的动态语言。Python是采用解释执行方式的现代动态语言,但其解释器保留了编译器的部分功能,随着程序运行,解释器也会生成一个完整的目标代码,从而提升了计算机性能。静态语言和动态语言Python的始创者是荷兰人吉多(GuidovonRossum)。1982年,吉多从阿姆斯特丹大学获得了数学和计算机硕士学位。1989年圣诞节期间,他为了打发圣诞节的无趣,决心开发一个新的脚本解释程序。Python这一名称来自英国肥皂剧《MontyPython》,吉多之所以选中Python作为语言的名字,是因为他太喜欢这部肥皂剧了。但Python经常用“巨蟒”(Python的原义)的图标。1.3.2Python的起源和特性Python的第一个公开发行版发行于1991年。2000年,Python2.0正式发布,开启了其广泛应用的新时代。2008年,Python3.0正式发布,3.0版本无法向下兼容2.0版本的既有语法。2010年,Python2.x系列发布了最后一版,即2.7版,从此终结了2.x系列版本的发展。1.3.2Python的起源和特性语法特性简洁易学:Python语言关键字少、结构简单、语法清晰,实现相同功能的代码行数仅相当于其它语言的1/10~1/5,初学者可以在短时间内轻松上手。强制可读:Python语言通过强制缩进(类似文章段落的首行空格)来体现语句间的逻辑关系,显著提高了程序的可读性。支持中文:Python3.0解释器采用UTF-8编码表达所有字符,可以表达英文、中文、韩文、法文等各类语言。开源语言开源指的是开放源代码,即源代码公开,任何人都可以访问、学习、修改甚至是发布。Python语言是开源项目的优秀代表,其解释器的全部代码都是开放的,任何计算机高手都可以为不断推动Python语言的发展做出贡献。Python软件基金会作为一个非营利组织,拥有Python2.1版本之后所有版本的版权,该组织致力于更好地推进并保护Python语言的开放性。世界各地的程序员通过开源社区贡献了十几万个第三方函数库,几乎覆盖了计算机技术的各个领域。Python标准库和第三方库众多,功能强大,既可以用来开发小工具,也可以用来开发企业级应用。Python提供了完整的数据分析框架,本课程第二部分(第8-10章)将予以介绍。其中:NumPy是一个用于多维数组和矩阵运算的数学库;Pandas是一个基于NumPy的专门处理分析表格型数据的库;Matplotlib是Python中使用最多的2D图像绘制工具包,可以非常简单地将数据可视化;Scikit-Learn是用Python开发的机器学习库,包括大量的机器学习算法和数据集,是一个简单高效的数据挖掘工具。功能强大1.4程序的基本要素1.4.1数据类型1.4.2变量1.4.3运算符1.4.4函数1.4.5语句1.4.6控制结构一种数据类型(type)是一系列值以及为这些值定义的一系列操作方法的集合。Python的基本数据类型包括数字和字符串,还有像列表、元组、字典、集合这样的组合数据类型。1.4.1数据类型数据类型类(型)名类别示例整型int数字10浮点型float10.0布尔型boolTrue字符串str序列"HelloWorld"列表list[1,2,3,4,5]元组tuple(1,2,3,4,5)字典dict非序列组合{"principal":100,"futurevalue":110}集合set{1,2,3,4,5}字符串类型是Python最常见的数据类型,字符串就是字符的序列。在Python里,字符串可以用单引号、双引号或三引号括起,但必须配对,其中三引号既可以是三个单引号,也可以是三个双引号。单引号和双引号的作用相同,而用三引号括起来的字符串支持换行。比如,"HelloWorld"就是一个字符串,也可以用'HelloWorld'或'''HelloWorld'''表示。注意:编写程序过程中所使用的符号必须是英文符号。空串即空字符串,是一个不包含任何内容的字符串,可以表示为''、""、''''''。需要注意的是,空串并不是包含空格的字符串(表示为''、""、''''''),空格也是一个字符。字符串整型一般以十进制(decimal)表示,但Python也支持八进制、十六进制或二进制来表示整型。八进制(octal)整数以“0o”或“0O”开始,十六进制(hexadecimal)整数则以“0x”或“0X”开始,二进制(binary)整数以“0b”或“0B”开始。整型八进制十六进制二进制int()是整型的转换函数,可以将其他数据类型转换为整型,其最为常见的用法是将包含整数的字符串转换为整型,比如int('1000'),其结果为整数1000。注意:'1000'是包含整数的字符串,如果想对它进行数值运算,必须先转换为整型。如果想将整型转换为字符串类型,可以使用字符串转换函数str(),如str(1000)的结果为'1000'。整型转换函数的完整形式为:int(x,base=10)。参数base表示是几进制,默认是十进制,即不指定base参数时,默认转换为十进制整数。整型浮点数也称为小数,可以用直接的十进制或科学计数法表示。浮点数通常都有一个小数点和一个可选的后缀e(大写或小写,表示科学计数法),在e和指数之间可以用“+”或“-”表示正负,正数可以省略。float()是浮点型的转换函数,可以将其他数据类型转换为浮点型,最为常见的用法是将包含小数的字符串转换为浮点型。若要将整型转换为浮点型,后面加个“.0”即可。浮点型十进制表示法科学计数法float()0.04.3e25float(10)3.14159.384e-23float(True)-777.4.2E-10float('10.0')-5.5555671196.022E16float(0x10)也可以使用int()函数将浮点型转换为整型,直接舍去小数部分截取整数部分。使用int()或float()将字符串转换为数字类型时,该字符串必须包含数字,否则程序会报错,错误类型为“ValueError”(值错误)。注意:浮点数在运算过程中会出现误差,通常,浮点型的精度为15~17位有效数字。浮点型布尔型只有两个值:True或False。对于值为零的数字或空集(空串、空列表、空元组、空字典),在Python中的布尔值都是False,而对于值不为零的任何数字或非空集(非空串、非空列表、非空元组、非空字典),其布尔值均为True。bool()是布尔型的转换函数,可以将其他数据类型转换为布尔型。在数学运算中,True和False分别对应于1和0,float(True)结果为1.0。布尔型变量(variable)是编程语言中能存储计算结果或能表示值的抽象概念。在使用变量前,需要对其进行赋值,之后可以根据需要随时对变量重新赋值。1.4.2变量变量的名字也称为标识符(identifier),与其他大多数高级语言一样,Python中变量命名规则如下:以字母或下划线(_)开头;其他的字符可以是数字、字母或下划线;不能将Python关键字作为变量名。变量的命名FalseNoneTrueandasassertasyncawaitbreakclasscontinuedefdelelifelseexceptfinallyforfromglobalifimportinislambdanonlocalnotorpassraisereturntrywhilewithyield我们已经了解了True和False这两个关键字,本章后续还会学习if、else、for、in等关键字。除以上必须遵守的命名规则以外,我们还给出如下建议:应既简短又具有描述性,例如name比n好,student_name比s_n好。慎用小写字母l和大写字母O,因为可能被人错看成数字1和0。避免用下划线开头,在Python里下划线开头的变量有特殊含义。在本章案例中,我们使用了如下4个变量:principal:用来存储初始存入账户的金额,也就是本金。future_value:用来存储计算出来的终值。interest_rate:用来表示年利率。year:用来表示年份。变量的命名变量赋值通过等号(=)来执行。Python是一种动态语言,因此不需要预先声明变量的类型,变量的类型和值在赋值那一刻被初始化;同时变量的类型也是可以随时变化的,也就是说,可以先将某个变量赋值为一个字符串,然后又将其赋值为一个数字。变量的赋值假设在本章案例中,我们初始存入账户的金额为1000元、年利率为2%,那么我们可以给变量principal赋值为1000、给变量interest_rate赋值为0.02。变量的赋值在交互式解释器中,可以用变量名查看该变量的原始值。注意与print()函数输出结果的不同,直接用变量名查看,字符串带引号,而用print()函数输出时不带引号。运算符(operator)也称为操作符,在程序中用于计算。Python支持单目运算符和双目运算符:单目运算符带一个操作数,操作数在运算符的右边;双目运算符带两个操作数,操作数在运算符的两边。操作数(operand)可以是变量、常量、函数调用的返回值等。表达式(expression)是运算符和操作数的有效组合,通常有一个计算结果。1.4.3运算符算数运算符运算符功能expr1**expr2求幂+exprexpr的结果符号不变-expr对expr的结果符号取负expr1*expr2乘法expr1/expr2除法expr1//expr2整除expr1%expr2取余expr1+expr2加法expr1-expr2减法用于数字的算数运算符:整除运算符“//”返回比真正的商小的最接近的整数,比如2//3的结果为0,而-2//3的结果为-1。本章案例中计算终值的表达式需要用到加法(+)、乘法(*)和求幂(**)三种算数运算符:principal*(1+interest_rate)**year。注意求幂的优先级最高,其次是乘法,最后是加法,为了先进行加法运算,需要加括号。当principal为1000、interest_rate为0.02、year为2时,终值计算结果为1040.4。算数运算符格式化运算符用于指定字符串的格式,用“%”表示左边的操作数是格式化字符串,其中包含格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式;右边的操作数是一个元组,将多个值传递给格式化字符串,每个值对应一个格式符。格式化运算符格式符格式格式符格式%c单个字符%s字符串%d或%i十进制整型%f或%F浮点型%e或%E浮点型的科学计数法%%输出一个单一的%辅助符号作用m.nm是显示的最小总宽度,n是小数点后的位数(如果有的话)0位数显示不够m时,前面用0填充,而不是默认的空格格式化运算符本章案例中在计算出终值后,要将结果显示在屏幕上。格式化输出的字符串包括年份和终值,其中年份用十进制整型的格式符“%d”,终值用浮点型的格式符“%f”,同时对于终值保留两位小数,最小总宽度为7(包括小数点),加入辅助符号后的格式符为“%7.2f”,表达式如下:"year%d:%7.2f"%(year,future_value)格式化运算符“%”右边的元组中第一个元素year对应第一个格式符“%d”,第二个元素future_value对应第二个格式符“%7.2f”。当year为2、future_value为1040.4时,格式化字符串为"year2:1040.40"。注意:格式化字符串中除了格式符之外的字符,都原样输出。函数(function)就像小程序一样,可以用来实现特定的功能。Python有很多函数,程序员也可以自己定义函数。调用函数时,应使用它的名称,后跟圆括号。许多函数在调用时需要值,这些值称为参数,在调用函数时放在括号内。当一个函数调用有多个参数时,参数之间用逗号分隔。内置函数(built-infunction)是Python自带的函数,可供程序员直接使用,如str()、int()、float()、bool()等类型转换函数,下面介绍内置的输入输出函数。1.4.4函数print()函数可以用来输出字符串,比如print(“HelloWorld”);也可以以字符串形式输出变量的值,如果要输出多个变量的值,则用逗号分隔,比如print(year,future_value)。虽然year和future_value都不是字符串类型,但在输出的时候,print()函数会自动将他们转换为字符串输出,用逗号分隔的多个变量,在输出时默认的分隔符是空格,可以通过指定sep参数来改变。本章案例中我们可以输出格式化后的字符串,即:print("year%d:%7.2f"%(year,future_value))。print()函数print()函数的完整形式为:print(*args,sep='',end='\n',file=None,flush=False)参数*args表示要输出的内容,可以包括多项;参数sep指定输出多项内容时如何分隔,默认是空格;参数end指定输出以什么结尾,默认是换行符;参数file指定输出到哪个文件,默认是输出到系统的标准输出(屏幕);参数flush指定是否刷新输出流,默认是否。print()函数从用户那里得到数据输入的最简单的方法是用input()函数,它读取系统的标准输入(键盘输入),并将读取到的数据赋值给指定的变量。无论用户输入什么内容,input()函数都以字符串类型返回结果。在获得用户输入之前,可以给用户一些提示性文字,放在字符串内,作为input()函数的参数。input()函数在本章案例中,初始存入账户的金额和年利率都是由用户输入,而不是直接由程序员进行赋值,这就需要用到input()函数。以输入本金为例,我们调用如下函数:input("Theinitialprincipalis:")如果用户输入1000,返回的结果是字符串'1000'。由于需要对本金进行数值运算,必须将其转换为数字类型,假设本金都是整数,我们可以用int()函数进行转换,即:int(input("Theinitialprincipalis:"))input()函数语句(statement)就是告诉计算机做某件事情的一条代码。如下一行代码就是一条告诉计算机要输出终值计算结果的语句:print("year%d:%7.2f"%(year,future_value))本小节主要介绍赋值语句和注释语句。1.4.5语句前面提到,赋值是创建变量的一种方法。Python语言中,“=”表示赋值,即将等号右侧的结果赋给左侧变量,包含等号的语句称为赋值语句。赋值语句的右侧可以是任何复杂的表达式,如下语句计算终值并将结果赋值给变量future_value:future_value=principal*(1+interest_rate)**year赋值语句与输出语句不同,输入语句通过调用input()函数接收用户输入,返回的结果需要赋值给指定的变量,这就需要用到赋值语句。仍然以输入初始存入账户的金额为例,用户通过键盘输入的数据需要赋值给变量principal,即:principal=int(input("Theinitialprincipalis:"))当程序调用input()函数时会停下来,等待用户输入,当用户按下Enter键时,表示输入完毕,程序将用户输入的内容作为字符串返回,继续执行赋值语句。赋值语句此外,还有一种同步赋值语句,可以同时给多个变量赋值。如果想交换两个变量的值,在其他编程语言里,需要用到一个中间变量(t)来保存其中一个变量的值(t=a),然后将另一个变量的值赋给这个变量(a=b),最后再将中间变量的值赋给另一个变量(b=t),但在Python语言里,同步赋值语句可以实现无需中间变量直接交换两个变量的值。同步赋值语句可以使赋值过程变得更简洁,通过减少变量使用,简化语句表达,增加程序的可读性。赋值语句对于编写程序来说,注释是一项非常有用的功能,它能够让你使用自然语言在程序中添加说明,从而提升代码的可读性。。Python使用“#”标示注释,从“#”开始直到此行结束的内容都是注释,“#”可以在一行的任何地方开始,解释器会忽略掉“#”之后的所有内容,比如,我们可以为接收本金输入的语句添加如下注释(中文说明):principal=int(input("Theinitialprincipalis:"))#输入本金注释语句编写注释的主要目的是阐述代码要做什么,以及是如何做的。在程序的编写过程中,程序员对每条语句都很清楚,但过段时间以后,有些细节可能会遗忘,这时候注释就很有用。另外,编写的程序需要被别人阅读,注释能够帮助其他人快速理解你的程序。作为初学者,最值得养成的习惯之一就是,在代码中编写清晰、简洁的注释。此外,在编写和调试程序的过程中,有的时候暂时不想让某些语句被执行,但又不想把它们从程序中删除,就可以在这些语句之前加上“#”,让它们成为注释语句。在以后又想使用它们的时候,只要把“#”删掉即可。比如,我们可以暂时把计算终值的语句改为注释语句,去尝试更好的计算并输出不同年份终值的方法。注释语句一般情况下,程序中的语句是按顺序逐条执行的,从第一条一直执行到最后一条。仅使用顺序结构可以用来解决一些小问题,但不足以解决大多数有趣的问题。我们需要用到其他两种控制结构——分支结构和循环结构。1.4.6控制结构分支结构允许程序包含的语句在程序运行时可能执行,也可能不执行。程序仍然从顶部开始后向底部执行,但是可能跳过程序中的某些语句。和大多数程序设计语言一样,Python使用if关键字来构成分支语句,包括单分支语句、双分支语句和多分支语句,这里介绍双分支语句,即if-else语句,其语法形式如下:if<condition>:<statements>else:<statements>分支结构<statements>是一个语句块,可以包含一到多条语句。<condition>为条件表达式,其值为布尔型,即True或False。如果值为True,则执行if下的语句块,跳过else部分;如果值为False,则跳过if下的语句块,执行else下的语句块。

强制缩进使得程序逻辑分明,非常容易看出每条语句属于哪个语句块。缩进一般为4个空格,也可以使用Tab键。Python初学者刚开始编写程序时,经常会出现缩进错误(IndentationError),仔细检查语句是否缩进正确,也可以使用IDLE的自动缩进来避免错误,比如输入if语句后回车,下一行语句开始的位置自动缩进。分支结构本章案例的年利率也由用户输入,但提供了2%的默认值,即如果用户什么也不输入,年利率默认为0.02,如果用户输入了值,则采用用户输入的值。这就需要使用一个双分支结构来进行处理。判断条件就是用户是否输入了值,如果输入了,则将其转换为浮点型,以便用来进行数值运算;如果什么也没输入,则默认为0.02。代码如下:interest_rate=input("Theannualinterestrateis(defaultis2%):")ifinterest_rate:

interest_rate=float(interest_rate)else:

interest_rate=0.02分支结构执行到input()函数时,程序停下来等待用户输入。如果用户直接按下Enter键,那么返回的字符串就是一个空串,空串的布尔值为False,跳过if下的语句块,执行else下的语句块,即赋值为默认值。

循环结构允许程序多次重复执行相同的语句。虽然不采用循环结构,通过多次复制粘贴相同的语句也可以实现多次执行,但这样只能执行固定次数,且语句一旦有修改,对每个副本都要进行修改。Python提供了for和while两种循环结构,都允许程序中只出现一次的语句在程序运行时多次重复执行,这里介绍用来形成指定循环次数的for语句,其语法形式如下:for<var>in<sequence>:<statements>循环结构<sequence>是序列,可以是字符串、列表或元组,<var>是循环变量,会遍历<sequence>中的所有值,也就是说,<sequence>中有多少个值,for下的语句块(循环体)就会循环多少次。

for语句经常与Python的内置函数range()一起使用,用来指定循环次数,range()函数返回一个可迭代的范围对象。比如,range(1,4)返回一个从1到3的整数范围,循环变量遍历这个整数范围,即第一次执行循环体时赋值为1,第二次执行时赋值为2,第三次执行时赋值为3,然后循环结束,执行for语句之后的语句。range()函数的完整形式为:range(start,stop[,step])。start指定起始的整数,默认是0;stop指定终止的整数为stop(不含stop);step指定序列增长的步长,默认是1。循环结构本章案例需要计算1年、2年和3年后的终值,可以写三条语句分别进行计算,再写三条语句分别输出结果。我们来尝试一下采用循环结构,将之前已经写好的计算终值的语句和输出终值计算结果的语句放入循环体内,year作为循环变量,如下所示:foryearinrange(1,4):

future_value=principal*(1+interest_rate)**yearprint("year%d:%7.2f"%(year,future_value))至此,本章案例已编写完成,将程序文件保存为ch01.py,运行程序,如果有错误则进行修正。输入本金1000、年利率不输入,检查程序运行结果是否正确;输入本金2000、年利率0.03,再次检查程序运行结果是否正确。循环结构采用循环结构的好处显而易见,循环体内的两条语句被重复执行三次。

累加或累乘(accumulator)是一种常见的算法模式,需要使用一个累加或累乘变量以及一个循环结构。首先给累加或累乘变量赋初值,然后在循环体中不断更新累加或累乘变量的值,循环结束后得到终值。1.5编程实践:累加、累乘用户输入一个整数,程序计算该数的阶乘,并输出结果。比如,用户输入6,程序计算6的阶乘,输出结果720。【例1-1】求阶乘注意:赋值语句fact=fact*i也可以写作fact*=i。

借助于这个例子,我们来看一下Python的赋值过程。在Python中,给变量fact赋值就像是给一个值贴上黄色的小便笺,上面写着“这就是fact”。【例1-1】中给fact赋值n次,假设用户输入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论