《Python语言程序设计》课件 第3、4章 分支结构、循环结构_第1页
《Python语言程序设计》课件 第3、4章 分支结构、循环结构_第2页
《Python语言程序设计》课件 第3、4章 分支结构、循环结构_第3页
《Python语言程序设计》课件 第3、4章 分支结构、循环结构_第4页
《Python语言程序设计》课件 第3、4章 分支结构、循环结构_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

第3章分支结构第3章

分支结构逻辑判断单分支结构双分支结构多分支结构分支结构的嵌套

实际问题中,很多时候需要根据给定的条件来决定做什么:条件满足时做什么,条件不满足时做什么。如果外面正在下雨,那么出门的时候需要带雨伞。根据体质指数,判断身体状态(偏瘦、正常、偏胖等)。

这些问题的特点是需要对给定的条件进行分析、比较和判断,并根据判断结果采取不同的操作。

顺序结构程序是无法解决类似的问题。计算科学中用来描述这种选择现象的重要手段是分支结构,也称选择结构。3.1.1关系运算符3.1逻辑判断

相等

==不等

!=大于

>小于

<大于等于

>=小于等于

<=比较的结果是bool类型:True或FalseTrue和1完全等价,False和0完全等价相当于False:""[]None相当于True:非0的数,非空的字符串,非空列表True==1 #TrueFalse==0 #True""==False #False2==True #False5print(3<5) #>>Trueprint(2<4<6<8) #>>True关系运算符允许连续使用print(2<4>5) #>>Falseb=4<6print(b) #>>Trueprint(b==2) #>>False6用关系运算符将两个式子连接起来的式子称为关系表达式。关系运算符也能比较字符串(按字典序,大小写相关)print(’A’>’a’) #>>False

a="abc"

print(a=="abc") #>>True

print(a=="Abc") #>>False73.1.2逻辑运算1.逻辑运算符notx:x值为True(或相当于True)时,结果为False(或相当于False)x值为False(或相当于False)时,结果为True(或相当于True) not4<5 #False not5 #False not0 #True优先级由高到低:not、and、or100>50and100<200

#>>True100<50and300<200

#>>False

短路计算100>50or100<200

#>>True

短路计算100<50or300<200

#>>Falsenot100<200

#>>FalsenotFalse

#>>TruenotTrue

#>>False6and9

#>>90and9

#>>06or9

#>>60or9

#>>9写出下列条件(1)判断年份year是否为闰年。(year%4==0andyear%100!=0)oryear%400==0(2)判断ch是否为小写字母。'a'<=ch<='z'(3)判断m能否被n整除。m%n==0简单的分支情况,Python语言提供了条件运算符:表达式1

if

表达式

else

表达式23.1.3条件运符例3.1输入两个整数,输出最大值。a=int(input("请输入a的值:"))b=int(input("请输入b的值:"))max=aifa>belsebprint(max)关于Python二分支精简结构的表示,正确的选项是()。A、条件

if表达式1else表达式2B、表达式1if表达式2else条件C、表达式1if条件else表达式2D、表达式1if条件:表达式2else执行以下程序,输入60,输出的结果是()。s=eval(input())k='合格'ifs>=60else'不合格’print(s,k)A、合格B、不合格C、60D、60合格3.1.4身份运算符测试两个变量是否指向同一个对象(占用的内存地址),一样返回True,否则返回False。>>>a=[1,2,3,4]>>>b=[1,2,3,4]>>>id(a)1768334769992>>>id(b)1768333183944>>>aisbFalse>>>a==bTrue3.2.1单分支结构语法(如果...则...)if表达式:

语句块3.2单分支结构注意:(1)表达式后面必须加冒号。(2)可以是任意表达式。(3)句块必须向右缩进,语句块可以是单个语句,也可以是多个语句。当包含多条语句时,多条语句的缩进必须一致即语句块中的语句必须上下对齐。当输入为95、65时,以下2段代码的结果如何?score=int(input("score="))ifscore>=90:

print("Congratuations!")print("Yourscoreis%d"%score)score=int(input("score="))ifscore>=90:

print("Congratuations!")print("Yourscoreis%d"%score)输入95时,程序显示结果:Congratuations!Yourscoreis95输入65时,程序显示结果:Yourscoreis65输入95时,程序显示结果:Congratuations!Yourscoreis95输入65时,没有显示结果例3-2输入一个非零整数,如果其大于零,则输出“正数”;如果小于零,则输出“负数”。程序如下:x=int(input("请输入一个非零整数:"))ifx>0:print("正数")ifx<0:print("负数")键盘输入数字5,以下代码的输出结果是()。n=eval(input("请输入一个整数:"))s=0ifn>=5:

n-=1

s=4ifn<5:

n-=1

s=3print(s)答案:33.2.2双分支结构if表达式:

语句块1else:

语句块2例3-2输入一个非零整数,如果其大于零,则输出“正数”;如果小于零,则输出“负数”。用if...else....改写程序如下:x=int(input("请输入一个非零整数:"))ifx>0:print("正数")ifx<0:print("负数")else:例3.4

输入年份x,判断是否是闰年。分析:年份只要满足下列两个条件之一,就是闰年:(1)年份是4的倍数,且不是100的倍数。(2)年份是400的倍数。如1900年、2022年不是闰年,而2000年、2024年是闰年。x=int(input("请输入年份:"))if(x%100!=0andx%4==0)or(x%400==0):print("%d年是闰年"%x)else:print("%d年不是闰年"%x)例3.5

输入一个整数,判断这个整数是奇数还是偶数。分析:能被2整除的数是偶数,不能被2整除的数是奇数。x=int(input("请输入1个整数:"))ifx%2==0:print("%d是偶数"%x)else:print("%d是奇数"%x)a="123"ifa>"Python":print("再学Python")else:print("初学Python")A、初学PythonB、再学PythonC、没有输出D、执行出错

if表达式1:

语句块1elif表达式2:

语句块2elif表达式3:

语句块3……elif表达式m:

语句块m3.4

多分支结构if...elif...

else是多分支选择结构,从中选择第一个满足条件的情况操作,即多选一。例3.6

输入一个整数,判断是正数、负数或是0。x=int(input("请输入一个整数:"))ifx>0:print("x是正数")elifx<0:print("x是负数")else:print("x是0")例3.7

根据体质指数,判断身体状态(偏瘦、正常、偏胖)。按照中国人的体质特征,BMI指数小于18.5为偏瘦,在18.5到23.9之间为正常,超过在23.9为偏胖。weight=eval(input('请输入以kg为单位的体重值:'))height=eval(input('请输入以m为单位的身高值:'))bmi=weight/pow(height,2)print("你的BMI数值为:{:.2f}".format(bmi),end=",")ifbmi<18.5:print("属于偏瘦")elif18.5<=bmi<=23.9:print("属于正常")else:print("属于偏胖")运行结果:请输入以kg为单位的体重值:70请输入以m为单位的身高值:1.80你的BMI数值为:21.60,属于正常以下代码的执行结果是()。a=75ifa>60:print("ShouldWorkHard!")elifa>70:print("Good")else:print("Excellent")A、执行出错B、ExcellentC、GoodD、ShouldWorkHard!3.5分支结构的嵌套if语句中可以再嵌套if语句。一定要注意不同级别代码块的缩进量,因为缩进量决定了代码的从属关系。if条件

1:

if条件2:

语句块2

#当条件1、2同时为真时,执行语句块2

else:

语句块3

#当条件1为真,条件2为假时,执行语句块3else:

语句块4

#当条件1为假时,执行语句块4考虑一下执行流程:mark=eval(input("请输入成绩:"))if0<=mark<=100:

ifmark<60:

print("不及格")

else:

print("及格")else:

print("输入的成绩格式错误!")例3.9

输入3个整数,输出最大值。算法不唯一,此处用嵌套a=int(input("请输入a的值:"))b=int(input("请输入b的值:"))c=int(input("请输入c的值:"))ifa>b:

ifa>c:

max=a

else:

max=celifb>c:

max=belse:

max=cprint("最大值为:%d"%max)1.输入一个整数,判断它是否为水仙花数。所谓水仙花数,是指这样的一些三位整数:各位数字的立方和等于该数本身,例如153=13+53+33,因此153是水仙花数。

2.输入年月,求该月的天数。分支结构练习第4章循环结构第4章

循环结构for语句while语句breakcontinuepasselse循环结构的嵌套循环结构程序举例循环语句有时需要重复多次执行一系列语句,因此需要循环语句Python中循环包括两种:遍历循环和无限循环。遍历循环:for...in依次提取遍历结构各元素进行处理;无限循环:while根据判断条件执行程序。for循环语句34for

<循环变量>

in<遍历结构>

:

<语句块>-由关键字字for和in组成,完整遍历所有元素后结束-遍历结构:range(..)、字符串、列表、元组、字典、集合-每次循环,所获得元素放入循环变量,并执行一次语句块for循环语句(计数循环)35foriinrange(2):#[0,2)print(i)01foriinrange(2,5):#[2,5)print(i)234foriinrange(2,5,2):#步长2print(i)24AAforiinrange(3,12,3):print(i,"",end="")输出结果是:36936912345678910113456789101112BCDfor循环遍历字符串37for循环遍历列表–写法138a=['banana','apple','mango']foriina: print(i)bananaapplemango下面程序的输出结果是()。s=["橘子","芒果","草莓","西瓜","水蜜桃"]forkins:print(k,end="")A、橘子芒果草莓西瓜水蜜桃B、橘子芒果草莓西瓜水蜜桃c、西瓜D、"橘子""芒果""草莓""西瓜""水蜜桃"for循环遍历列表–写法239a=['banana','apple','mango']foriinrange(len(a)): #len求列表长度(元素个数)print(i,a[i])0banana1apple2mangolen用来求字符串长度,元组、集合、字典元素个数print(len("abc"))#>>3为了使以下代码的执行结果是:中国,韩国,日本,巴基斯坦,蒙古country=['中国','韩国','日本','巴基斯坦','蒙古']n=1forcincountry:ifn<len(country):print(____)else:print(c)n=n+1在横线处要补充的代码是()

。A、c,end=","B、cC、c,”,”D、c,sep=","for循环遍历元组41Python使用for和in的组合表达遍历循环,不能被遍历的数据类型是()。A、复数类型B、元组类型c、字典类型D、字符串类型4.1.2for循环程序举例【例4.1】求1+2+3+…+100的和。s=0s+1→ss+2→ss+3→s…..s+100→ss=s+通项【例4.1】求1+2+3+…+100的和。程序代码s=0foriinrange(1,101):s=s+iprint("1+2+3+...+100=%d"%s)【例4.2】求n!,即1×2×3×4×…×ns=1n=int(input("请输入1个整数:"))foriinrange(1,n+1):s=s*iprint("%d!=%d"%(n,s))【例4.3】输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,153=1*1*1+5*5*5+3*3*3foriinrange(100,1000):a=i%10b=i//10%10

c=i//100ifa**3+b**3+c**3==i:

print("%d是水仙花数"%i)4.2.1while循环的结构while表达式:

语句块语句块(循环体):重复做的事,用相同的代码写出来4.2while循环i=1whilei<5:print(i)i=i+14812345i=1whilei<5:print(i)i=i+1whilea=0:print("Hello")

SyntaxError:invalidsyntax4.2.2while循环程序举例【例4.4】使用while循环实现”猜数字”小游戏。猜数字游戏的规则是:随机生成一个1到100之间的数,玩家输入自己猜的数字,计算机给出对应的提示信息(再大一点、再小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。importrandomanswer=random.randint(1,100)number=int(input('猜一个1-100的数:'))n=1whilenumber!=answer:ifnumber<answer:print('再大一点')else:print('再小一点')number=int(input('再猜:'))

n+=1print(f'恭喜你猜对了!共猜了{n}次')【例4.5】斐波那契数列:0、1、1、2、3、5、8、13、21、34、…根据斐波那契数列的定义,F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2),输出不大于50的序列元素。分析:从第三项开始,每一项都等于前两项之和。 0 1 第一次:

a b 第二次:

a

第三次:...... 1bb=a+ba=ba,b=b,a+bprint(a)程序代码:a,b=0,1whilea<=50:print(a,end=',')a,b=b,a+b4.3.1break语句通常和if语句连用,用于满足某条件时,执行到break语句,结束循环。534.3循环中的break、continue、pass和elseforiinrange(1,10):print("*")if(i==5):print("循环结束")break*****循环结束【例4.6】输入一个整数,判断是否是素数。算法分析:

素数即质数,是指在大于1的自然数中,除了1和它自身外,不能被其他自然数整除的数。使用穷举法,遍历求模进行判断。将flag作为素数标识,初值为True(认为n是素数)。穷举n可能的因子2到n-1,遍历进行求模运算。一旦整除,将flag赋值为False,同时执行break语句,跳出循环。最后通过判断flag的值,输出结果。n=int(input("请输入一个数:"))flag=True

foriin

range(2,n):

ifn%i==0:flag=Falsebreak

ifflag=True:

print(n,"是素数。")else:

print(n,"不是素数。")以下代码的输出结果是()。forsin"PythonNice!"":ifs==“i":breakprint(s,end=“")A、PythonB、PythonNc、PythonNiD、PythonNice4.3.2continue语句

结束当次循环,继续执行后续次数循环foriinrange(1,10):

if(i<=5):

continue

print(i)

****以下代码的输出结果是()。foriinrange(1,6):ifi%4==0:continueelse:print(i.end=",")A、1,2,3,B、1,2,3,4,c、1,2,3,5,D、1,2,3,5,6以下代码的输出结果是()。forsin"grandfather":ifs=="d"ors=='h':continueprint(s,end=")A、grandfatherB、granfaterC、grandD、father4.3.3pass语句空语句,它不做任何操作。forxinrange(10):pass

循环的确10次,但是除了循环本身之外,它什么也没做。while

表达式:

语句组1else:

语句组2........判断表达式

是否为真,若为真转2),若为假转3)执行语句组1,回到1)执行语句组2继续往下执行........61else中的语句会在循环正常执行完的情况下执行4.3.4else语句x=0whilex<5:print(x,"小于5")x=x+1else:print(x,"大于或等于5")620小于51小于52小于53小于54小于55大于或等于5【例4.7】输入一个整数,判断是否是素数。n=int(input("请输入一个整数:"))foriinrange(2,n):ifn%i==0:print("{}不是素数".format(n))breakelse:print("{}是素数".format(n))下面代码的输出结果是()。x=10whilex:x=x-1ifx%2:print(x,end=")else:passA、86420B、975311c、97531D、8642004.4循环语句的嵌套(多重循环)如果一个循环结构的循环体又包括一个循环结构foriinrange(5):forjinrange(10):print("*",end="")print()

实现一个5行10列的星号图:**************************************************下面代码的输出结果是()。foriin"PYTHON":forkinrange(2):print(i,end="")A、PPYYTTHHOONNB、PPYYTTOONNc、PPYYTTHOONND、PPYYTTH【例4.8】输入整数n,输出一个n-1行的数字三角形阵列。该阵列每行包含的整数序列为从该行序号开始到n-1,例如第1行包含

温馨提示

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

评论

0/150

提交评论