《大数据分析:基于Python》 课件 第3章 流程控制_第1页
《大数据分析:基于Python》 课件 第3章 流程控制_第2页
《大数据分析:基于Python》 课件 第3章 流程控制_第3页
《大数据分析:基于Python》 课件 第3章 流程控制_第4页
《大数据分析:基于Python》 课件 第3章 流程控制_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

大数据分析:基于Python

第3章流程控制余本国3.1条件语句

条件语句也称判断语句或分支语句,使用if、elif和else关键字来执行不同的代码块,根据条件的真假来选择性地执行特定的代码。当条件分支为二分类时使用if/else结构,当多于两个分支时使用if/elif/…/else,elif按照需要使用。语法格式如下: if条件1:

条件1为真时执行代码块1 elif条件2:

条件2为真时执行代码块2 else:

条件1、2都不为真时执行代码块3

条件语句会按照代码块前后顺序进行逐一判断,当遇到条件为真时,会执行真条件下的代码块。In[1]:num=int(input("请输入一个数字:"))...:...:#使用if/else分支判断数字是奇数还是偶数

...:ifnum%2==0:...:print("您输入的是一个偶数。")...:else:...:print("您输入的是一个奇数。")请输入一个数字:7您输入的是一个奇数。例如判断输入的数的奇偶性。在这个例子中,首先通过input()函数从用户那里获取一个数字,并将其转换为整数。然后,使用if/else分支来检查这个数字是否是偶数(即当被2除时余数为0)。如果条件为真(即数字是偶数),则执行第一个代码块,打印出“您输入的是一个偶数”。如果条件为假(即数字不是偶数,也就是奇数),则执行else后面的代码块,打印出“您输入的是一个奇数”。接收变量不及格及格中良优xx<6060≤x<7070≤x<8080≤x<9090≤x再例如,现有学生成绩按照如下给出的档次,判断来自接收到的成绩属于哪个档次。In[2]:bz=['优','良','中','及格','差']#成绩层次分类...:s=int(input('请输入分数:'))#接收键盘输入...:...:ifs>=90:...:print(bz[0])...:elifs>=80:...:print(bz[1])...:elifs>=70:...:print(bz[2])...:elifs>=60:...:print(bz[3])...:else:...:print(bz[4])请输入分数:87良输出结果为:

条件语句也可以使用在行代码的表达式中,称为三元表达式。三元表达式是一种简洁的条件语句,它使用三个操作数:一个条件表达式和一个结果表达式,如果条件为真,则返回结果表达式1,否则返回结果表达式2。三元表达式的语法如下:value_if_trueifconditionelsevalue_if_false

其中,condition是一个条件表达式,如果它的值为True,则返回value_if_true,否则返回value_if_false。

例如,接收一个变量x,想要检查它是否大于10,如果是,则打印“Positive”,否则打印“Negative”,实现代码如下。In[3]:x=int(input("请输入整数:"))...:result="Positive"ifx>0else"Negative"...:print(result)请输入整数:-3Negative

接收到的x值为-3小于0,所以result的值为Negative。3.2循环语句

循环语句分为for和while两种类型,for循环用于遍历序列(如列表、元组、字符串)或其他可迭代对象;while循环在指定的条件为真时,会重复执行代码块。3.2.1for循环for循环主要用于遍历一个序列(字符串、列表、元组、字典、集合等,以及一些容器内的元素,如range()、zip()等),将序列中的每一个元素逐个取出执行for代码行下的代码块,直到取完为止。例如,将列表中的元素逐个打印出来。In[1]:fruits=['苹果','香蕉','橙子','葡萄']...:foriinfruits:...:print(i)苹果香蕉橙子葡萄

为了节省空间,可以将打印结果显示在一行,使用分号进行分割,可以使用print()函数的end参数。In[2]:fruits=['苹果','香蕉','橙子','葡萄']...:...:foriinfruits:...:print(i,end=";")苹果;香蕉;橙子;葡萄;再如使用for循环计算列表中所有数字的和。In[3]:numbers=[1,2,3,4,5]...:sum=0...:foriinnumbers:...:sum+=i#等价于sum=sum+i...:...:print("列表中所有数字的和是:",sum)列表中所有数字的和是:15在这个例子中,首先创建了一个包含五个数字的列表。然后使用一个变量sum来存储列表中所有数字的和,然后使用for循环遍历这个列表,每次迭代中,变量i会被赋予列表中的下一个元素,然后我们将这个元素加到sum中。最后,我们打印出sum的值,即列表中所有数字的和。for还可以创建列表、元组或者字典。如将上面的列表numbers中所有奇数做成一个新的列表。In[4]:numbers=[1,2,3,4,5]

In[5]:[iforiinnumbersifi%2!=0]Out[5]:[1,3,5]

在上面的[iforiinnumbersifi%2!=0]代码中,首先创建一个列表,故外面使用[],内部产生的元素用i表示(即第一个i),i来自于numbers(即foriinnumbers),当满足被2除余数不等于0时(即ifi%2!=0),这样的i才被留在该列表中。3.2.2while循环while循环主要用于条件为真时,会重复执行其下的代码块,直到给定的条件不再满足。while循环的基本语法如下:whilecondition:block

这里的condition是一个表达式,当它的结果为True时,会执行其下的block代码块,一旦condition变为False,循环就会停止。例如,使用while循环计算5!的值,并返回结果。In[1]:result=1...:i=1...:whilei<=5:...:result*=i...:i+=1...:print(result)120

在循环中,使用result变量来保存阶乘的结果,并给出初始值1,再使用i变量来迭代从1到5。每次迭代将i乘以result来计算阶乘的值,并将i增加1。最后,返回输出阶乘值。

注意,在编写while循环时,必须确保循环内的代码能够改变条件表达式的值,也称条件控制,否则可能导致无限循环。在无限循环中,程序会一直执行下去,直到手动停止。这通常不是我们想要的结果,所以在编写while循环时要特别注意条件控制。In[2]:n=0#方法1...:whilen<5:...:n_squared=n**2...:print(n_squared,end=";")...:n+=10;1;4;9;16;

In[3]:n=0#方法1...:while(n_squared:=n**2)<25:#海象表示法...:print(n_squared,end=";")...:n+=10;1;4;9;16;下面是两种输出小于5的自然数的平方的方法。海象表达式使用冒号和等于号组合(:=)来表示,即使用一个变量名后跟一个冒号和等于号,表示将一个表达式的值赋给这个变量。使用海象表达式可以简化代码,使代码更加简洁。在代码行“while(n_squared:=n**2)<25”中,海象表达式将n**2赋值给变量n_squared,节省了计算量,使代码变得更简洁。需要注意的是,海象表达式只能在Python3.8及以上版本中使用,如果使用较早的版本,则会出现语法错误。此外,虽然海象表达式可以简化代码,但也可能会降低代码的可读性。请试运行下面的代码,观察输出的结果。In[4]:rows=int(input("Enternumberofrows:"))...:k=0...:foriinrange(1,rows+1):#i控制行...:forspaceinrange(1,(rows-i)+1):#控制每行开始的空格数...:print(end="")#打印每行的*前的空格...:whilek!=(2*i-1):#控制*输出...:print("*",end="")#同行无分隔符输出*...:k+=1#输出*的个数...:k=0#下一行k从0开始...:print()#换行Enternumberofrows:5*************************3.3break与continue在Python中,break和continue都是控制循环流程的关键字。它们的作用如下:break在循环中,一旦遇到break,无论循环条件是否继续为真,都会立即停止当前循环。例如,在一个for或while循环中,如果你在某个条件下调用break,那么循环将立即结束,程序流程将继续在循环之后的下一行代码。In[5]:foriin[0,1,2,3,4,5,6,7,8,9]:...:ifi==5:...:break...:print(i)01234

在这个例子中,当i等于5时,break语句将被执行,for循环将立即停止,尽管列表中有0到9的数字。因此,这段代码只会打印出0到4,然后终止整个循环。continue是一个控制流语句,用于跳过当前循环中的剩余语句,并立即开始下一轮循环。这意味着,如果continue语句在一个循环内部(例如for或while循环),那么该循环的剩余部分将不会被执行,而是立即开始下一轮循环。In[6]:foriin[0,1,2,3,4,5,6,7,8,9]:...:ifi==5:...:continue...:print(i)012346789

在这个例子中,当i等于5时,continue语句将被执行,这会跳过输出语句,并立即开始下一轮循环。因此,这段代码会输出出0到9,但是跳过5。3.4异常处理异常处理是一种处理程序中特殊情况(即异常)的机制。在编程中,异常是程序运行时发生的问题,例如运算中出现除数是零,访问无效的内存区域等。异常处理可以帮助我们在这些问题发生时管理程序,不让程序崩溃。在Python中,异常处理通常使用try,except,else,finally等关键字,其格式如下。try:block1except:block2else:block3finally:block4try下的block1代码块是需要测试的代码(即有可能会出现异常情况),在执行程序时,首先执行block1,此时block1可能会发生意外错误,当block1发生错误时,程序将进入except下的block2;若不发生错误,则进入else下的block3。except和else的顺序不能颠倒,except必须在else之前,else也可以省略。finally代码行表示无论block1是否发生异常,都要执行block4。finally必须出现在except和else之后,也可以省略没有。In[1]:try:...:x=int(input("x="))...:y=int(input('y='))...:r=x/y...:print(r)...:except:#出现异常时执行...:print("以上代码执行时出现了异常。")...:else:...:print("没有出现异常!")x=3y=0以上代码执行时出现了异常。

有时需要将捕获到错误信息打印出来,此时可以用Exception来接收捕获到的异常信息。下面的例子是接收来自键盘输入的两个数,用这两个数做除法,可能会出现除数为0的情况,我们将这个异常捕获到,并输出这个异常信息。In[2]:try:...:x=int(input("x="))...:y=int(input('y='))...:r=x/y...:print(r)...:except(Exception)ase:#不管什么异常,都捕获给e...:print(e)#输出异常信息...:print("以上是捕获到的异常信息")...:else:...:print("没有出现异常!")...:finally:...:print("程序运行到最后了!")

x=3y=0divisionbyzero以上是捕获到的异常信息程序运行到最后了!在代码中,作为除数的y被输入了0,出现了0作为除数的异常情况,即异常信息为“ZeroDivisionError:divisionbyzero”。代码行“except(Exception)ase”表示将捕获到的异常信息(ZeroDivisionError:divisionbyzero)绑定给变量e,即被except捕获的异常信息赋值给了e,再执行其下的代码块。在上面的代码中最后有finally语句,表示无论try下的代码出现何种情况,都不会影响finally语句下代码的运行。当x除以y不产生异常时,便进入了else并执行其下的代码。In[3]:try:...:x=int(input("x="))...:y=int(input('y='))...:r=x/y...:print(r)...:except(Exception)ase:...:print(e)...:print("以上是捕获到的异常信息")...:else:...:print("没有出现异常!")x=3y=21.5没有出现异常!要注意的是,可以使用多个except语句块来处理不同类型的异常,代码如下:In[4]:try:...:#尝试执行的代码

...:x=int(input("请输入:"))+"0"#一定会出现错误...:exceptValueError:...:#当值错误发生时执行的代码

...:print("输入的不是有效的整数!")...:exceptTypeError:...:#当类型错误发生时执行的代码

...:print

温馨提示

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

评论

0/150

提交评论