Python语言程序设计3.docx

上传人:b****7 文档编号:8733002 上传时间:2023-02-01 格式:DOCX 页数:23 大小:450.25KB
下载 相关 举报
Python语言程序设计3.docx_第1页
第1页 / 共23页
Python语言程序设计3.docx_第2页
第2页 / 共23页
Python语言程序设计3.docx_第3页
第3页 / 共23页
Python语言程序设计3.docx_第4页
第4页 / 共23页
Python语言程序设计3.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Python语言程序设计3.docx

《Python语言程序设计3.docx》由会员分享,可在线阅读,更多相关《Python语言程序设计3.docx(23页珍藏版)》请在冰豆网上搜索。

Python语言程序设计3.docx

Python语言程序设计3

第三周分支与循环

3.1程序基本结构

1.程序流程图一用规定的一系列图形、流程线和文字说明算法中的基本操作和控制流程。

流程图的基本元素包括:

(1)表示相应操作的框

(2)带箭头的流程线

(3)框内外必要的文字说明

2.设计程序框图的步骤:

(1)用自然语言表述算法步骤

(2)确定步骤逻辑结构,用相应框图表示

(3)流程线连接框图,加上终端框,得到整个算法的程序框图

3.任何算法都可以由顺序、选择、循环三种基本结构组合实现:

(1)顺序结构:

按逻辑顺序自上而下依次运行的结构,如:

温度转换

程序;

(2)选择结构(分支结构):

在算法中通过对条件的判断,根据条件

是否成立而选择不同流向的算法结构;

(3)循环结构:

指在一定条件下反复执行某部分代码的操作;

3.2简单分支

PM2.5空气质量等级

0-35双

36-75良

7&115而污染

116-150中度污染~

151-250重度污染

251-500严1E台染

PM2.5指数分级程序功能IPO模式描述:

输入:

接受外部输入PM2.5值

处理:

空气质量分级算法

输出:

打印空气质量提醒

PM2.5指数分级伪代码

IfPM2.5值,75

打印空气污染警告

IfPM2.5值<35

打印空气质量优,建议户外运动

流程图如图所示:

1.#pm25.py

3.

2.

#空气质量提醒

4.

defmain():

5.

PM=eval(input("Whatistoday'sPM2.5?

"))

6.

#打印相应提醒

7.

8.

print("Unhealthy.Becareful!

")

9.

10.

print("Good.Gorunning!

")

11.

main()

if

PM>75:

if

PM<35:

PM2,5H?

7S?

PM2_5ffl<35?

程序5:

【运行结果】

Unhealthy.Becareful!

(1)If语句格式:

If:

【注】<condition>是条件表达式,<body>是一个或多个语句序列

输入PM23的值

打印空♦污染警告

as设户外运动

先判断〈condition〉条件,若true,则执行,再转向下一条语句;

若false,则直接跳过,转向下一条语句

(2)简单条件构造

①简单条件基本形式

是关系操作符<,<=,==,>=,>,!

=

③使用“="表示赋值语句,使用“==”表示等于

④除数字外,字符或字符串也可以按照字典顺序用于条件比较

是布尔表达式,为bool类型

布尔值的真假以True和False表示

(3)二分支语法结构

If:

else:

程序6:

[python]viewplaincopy

1.#quadratic.py

2.#计算二次方程的实数根程序

3.importmath

4.defmain():

5.

))

print("Thisprogramfindstherealsolutionstoaquadratic\n"

6.a,b,c=eval(input("Pleaseenterthecoefficients(a,b,c):

'

7.delta=b*b-4*a*c

8.ifdelta>=0:

9.discRoot=math.sqrt(delta)

10.root1=(-b+discRoot)/(2*a)

11.root2=(-b-discRoot)/(2*a)

12.print("\nThesolutionsare:

",root1,root2)

13.else:

14.print("Theequationhasnorealroots!

")

15.main()

【运行结果】

输出:

Thisprogramfindstherealsolutionstoaquadratic

输入:

Pleaseenterthecoefficients(a,b,c):

1,2,3

Theequationhasnorealroots!

3.3多分支

(1)多分支决策

要解决双根问题,就需要对delta等于0的情况进行处理。

语句的结构上要引入嵌套结构:

1当delta<0,处理无实根情况

2当delta=0,处理实根情况

3当delta>0,处理双根情况

一种方案是在程序中使用两个if-else语句。

把一个复合语句放到另一个语句的结构之中称为嵌套。

1.多分支决策是解决复杂问题的重要手段之一

2.一个三分之决策可以由两个二分支结构嵌套实现

3.使用if-else描述多分支决策时,

实现更多分支需要更多嵌套,影响程序易读性

Python使用if-elif-else描述多分支决策,简化分支结构的嵌套问题。

格式如下:

If:

elif:

elif:

else:

〈defaultstatements〉

例:

程序7:

[python]viewplaincopy

1.#quadratic.py

2.importmath

3.defmain():

4.

print("Thisprogramfindstherealsolutionstoaquadratic\n"

5.a,b,c=eval(input("Pleaseenterthecoefficients(a,b,c):

"))

6.delta=b*b-4*a*c

7.ifa==0:

8.x=-b/c

9.print("\nThereisansolution",x)

10.elifdelta<0:

11.print("\nTheequationhasnorealroots!

")

12.elifdalta==0:

13.x=-b/(2*a)

14.print("\nTheereisadoublerootat",x)

15.else:

16.discRoot=math.sqrt(delta)

17.root1=(-b+discRoot)/(2*a)

18.root2=(-b-discRoot)/(2*a)

19.print("\nThesolutionsare:

",root1,root2)

20.

main()

riirtimub

3.4异常处理

异常处理语句

python使用try-except…,可使程序不因运行错误而崩溃

Python的异常处理语句还可以使用else和finally关键字

(可选项,若使用则else必须在finally之前)

格式如下:

try:

except:

except:

except:

else:

finally:

try・•・except可以捕捉任何类型的错误

对于二次方程,还会有其他可能的错误

如:

输入非数值类型(NameError)

输入无效的表达式(SyntaxError)等

此时可以用一个try语句配多个except来实现

程序8:

[python]viewplaincopy

#异常处理测试

1.defmain():

2.try:

3.number1,number2=eval(input("Entertwonumbers,

4.separatedbyacomma:

"))

5.result=number1/number2

6.exceptZeroDivisionError:

7.print("Divisionbyzero!

")

8.exceptSyntaxError:

9.print("Acommamaybemissingintheinput")

10.else:

11.print("Noexceptions,theresultis",result)

12.finally:

13.print("executingthefinalclause")

14.main()

【运行结果】

输出:

输入:

Entertwonumbers,separatedbyacomma:

12

Acommamaybemissingintheinput

executingthefinalclause

Entertwonumbers,separatedbyacomma:

3,2

Noexceptions,theresultis1.5

executingthefinalclause

Entertwonumbers,separatedbyacomma:

3,0

Divisionbyzero!

executingthefinalclause

•【实例】三者最大值

•[IPO]

输入:

三个数值

处理:

三者最大算法

输出:

打印最大值

【算法比较】

①通盘比较一将每一个值与其他所有值比较以确定最大值

工士xl>=x2Hi-,xl>=x3:

max=xl

q-x2>=义1?

ax2>=:

max=x2

else1

max-x3

三个值的情况比较简单,如果是五值比较复杂,而且效率低(因为表达式没有被充分利用)

②决策树一避免冗余比较

 

结构更加复杂!

③顺序处理一逐个扫描每个值,保留最大者

【程序】程序9:

#program:

maxn.py

#寻找一组数中的最大值

defmain():

n=eval(input("Howmanynumbersarethere?

"))

#将第一个值赋值给max

max=eval(input("Enteranumber>>"))

#连续与后面n-1值进行比较

foriinrange(n-1):

x=eval(input("Enteranumber>>"))

ifx>max:

max=x

print("Thelargestvalueis",max)

•1

•2

•3

•4

•5

•6

•7

•8

•9

•10

•11

•12

•13

・1

・2

・3

・4

main()

•5

•6

•7

•8

•9

•10

•11

•12

•13

【运行结果】

Howmanynumbersarethere?

5

Enteranumber>>9

Enteranumber>>6

Enteranumber>>3

Enteranumber>>10

Enteranumber>>20

Thelargestvalueis20

max=xl

ifx2>maxrmax=x2

ifx3>max:

④使用Python内置函数max()max=k3

3.5基本循环结构

(1)for循环

Python可以使用for语句循环遍历整个序列的值,格式如下:

forin:

在for循环中,循环变量var遍历了队列中的每一个值,循环变量var遍历了队列中的每一个值,循环语句体为每个值执行一次

例:

for循环求平均数

•IPO:

输入:

待输入数字个数,数字

处理:

平均数算法

输出:

平均数

通用设计方案:

o①输入数字的个数n

o②将sum初始化为0o③循环n次:

输入数字x

将x加入sum中

o④将sum/n作为平均数输出出来

•程序10:

#average1.py

n=eval(input("Howmanynumbers?

"))sum=0.0

foriinrange(n):

x=eval(input("Enteranumber>>"))

sum=sum+x

print("\nTheaverageis",sum/n)

・1

・2

・3

・4

・5

・6

・7

・1

・2

・3

【运行结果】

Howmanynumbers?

3

Enteranumber>>5

Enteranumber>>7

Enteranumber>>6

Theaverageis6.0

for循环的缺点:

程序开始时必须提供输入数字总数,以提供固定循环次数

大规模数字则需要用户数清楚个数

为此,python提供了另一种循环模式即无限循环,不需要提前知道循环次数

(2)while循环

语句格式:

while

•4

•5

•6

•7

•1

•2

・1

•2

条件总是在循环体执行之前被判断,这种结构又被称为前测循环(当型循环)

如果循环体没有对i初始化或循环体没有累加,条件判断一直为真,循环体将一直执行,即为死循环程序,这时通常使用Ctrl+C来终止一个程序

(3)break语句退出循环

例:

程序11:

#TestBreak.py

sum=0

number=0

whilenumber<20:

number+=1

sum+=number

ifsum>100:

break

print("Thenumberis",number)

print("Thesumis",sum)

♦1

♦2

♦3

♦4

♦5

♦6

•7

・8

•9

•10

♦1

♦2

♦3

•4

•5

•6

•7

•8

•9

•10

【运行结果】

Thenumberis14

Thesumis105

(4)continue一结束本次循环

 

即跳出循环体中下面尚未执行的语句,对于while循环,继续求解循环条件;对于

for循环,继续遍历循环列表

continue语句和break语句的区别:

continue语句只结束本次循环,而不终止整个循环的执行,而break语句则是直接结束整个循环流程,不再判断循环条件是否成立

(5)循环语句中的else一不满足循环条件时执行

3.6通用循环构造方法

(1)交互式循环

交互式循环是无限循环的一种,允许用户通过交互的方式重复程序特定部分

■oredata[0]=y';

k・«val(input{1*^!

itri口g电工»L))tum=aum+、count"count+1

MOrvdata=Input(yauhavemorenuabeo(yesorno)?

H)t?

he।ithynur-bersast9ua/cQUDt>

(2)哨兵循环

执行循环直到遇到特定的值,循环语句才终止执行

设计方法:

①设定一个哨兵值作为循环终止的标志

②任何值都可以做哨兵,但要与实际数据有所区别

ALlJtS牝工I=:

k=eval(xStr)sum,sum*xcount*count+XxStr■input(<+Enteranunbertoquit)»")

(3)文件循环

面向文件的方法是数据处理的典型应用,可以事先将数据录入到文件,便于编辑修改,python中采用readline()方法中的endoffile循环模式

(4)循环嵌套

决策和循环互相嵌套可以实现复杂算法,假设数字以逗号分隔出现在文件的同一行上

(3)(4)整合程序如图:

♦average?

.pydefsainO;

flleName=inputC'WtiAtfilearethenumbersinJ')uifLie=open.(flleiNaner'rr>sm-0,0count■0line.infile*readline0rfhiLalineEp'n:

■为line中的值更新其count和simforxStrinline.split4:

sum■aw+«val(xStz)count=count+1line-Infxle.readline()

print(ig*'t!

.1;r-5二:

二上升:

」;isH,,aum/count)

main《)

3.7死循环和循环嵌套

(1)死循环一无法靠自身的控制中止的循环

先接受输入,再判断循环条件是否满足。

在Python中没有后测循环语句,但可以通过while和break语句间接实现,如:

nwnber=-1xh.enumber<0:

number-eval{input(flEnterapositivenumber:

K>10

死循环的使用:

通过死循环可以一直检测捕捉特定异常

(3)半路循环一循环判断条件在循环体的中部

print(

number-(inputCif・X。

:

break

(2)后测循环(直到型循环)

number-eval(input{Entetx>■0:

break

■如果数字有效则跳出循环

死循环

K10

a二丸BnT

3.8布尔表达式

条件语句和循环语句都使用布尔表达式作为条件

布尔值为真(True)或假(Flase)

(1)布尔操作符:

and,or,not

and和or用于组合两个布尔表达式,并产生一个布尔结果

and

or

•1

•2

•1

•2

not运算符计算一个布尔表达式的反值

not

•1

•1

(2)布尔操作符的优先级:

not>and>or

not口值表

and亘值表or真值表

 

 

例:

壁球比赛计分:

♦假设scoreA和scoreB代表两个壁球选手的分数

o规则1:

只要一个选手达到了15分,本场比赛就结束

即:

scoreA==15orscoreB==15

o在程序中构造一种循环条件,对游戏结束条件取反,只要比赛还没有

结束游戏就一直进行下去

即:

whilenot(scoreA==15orscoreB==15)#比赛继续

o规则2:

如果一方打了七分而另一方一分未得时,比赛也结束

即:

scoreA==15orscoreB==15or(a==7andb==0)or(b==

7anda==0)

o需要一个团队赢得至少两分才算赢,即其中一个队已经达到了15分,且分数差异至少为2时比赛结束(排球)

即:

(a>=15orb>=15)andabs(a-b)>=2

(3)布尔代数:

布尔表达式遵循特定的代数定律,这些规律被称为布尔逻辑或布尔代数

布尔代数

aandfalse==false

代数

a*0=0

代数布尔代数

a*1=aaandtrue==a

a+0=0aorfalse==a

①任何数据和true进行or操作都是真

②and和or操作符都符合分配率

③not操作符可负负抵消

④德摩根定律:

not放进表达式后,and和or发生变化

如:

not(aorb)==(nota)and(notb)

not(aandb)==(nota)or(notb)

⑤布尔代数的应用一用德摩根定律分析和简化表达式

(4)布尔表达式作为决策一判断退出循环

条件

①对于数字(整数和浮点数)的零值被认为是false,任何非零值都是true

②bool类型是特殊的整数

③布尔表达式具有短路求值的特性

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1