Python 语言程序设计3.docx

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

Python 语言程序设计3.docx

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

Python 语言程序设计3.docx

Python语言程序设计3

第三周分支与循环

     3.1程序基本结构

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

   流程图的基本元素包括:

(1)表示相应操作的框

(2)带箭头的流程线

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

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

    

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

    

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

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

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

 

(1)顺序结构:

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

温度转换程序;

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

在算法中通过对条件的判断,根据条件是否成立而选择不同流向的算法结构;

(3)循环结构:

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

3.2简单分支

        例:

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

             输入:

接受外部输入PM2.5值

             处理:

空气质量分级算法

             输出:

打印空气质量提醒

         PM2.5指数分级伪代码

             IfPM2.5值>75

                    打印空气污染警告

             IfPM2.5值<35

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

         流程图如图所示:

程序5:

[python] viewplain copy

1.#pm25.py  

2.#空气质量提醒  

3.   

4.def main():

  

5.    PM = eval(input("What is today'sPM2.5?

 "))  

6.    # 打印相应提醒  

7.    if PM > 75:

  

8.        print("Unhealthy. Becareful!

")  

9.    if PM < 35:

  

10.        print("Good. Go running!

")  

11.main()  

【运行结果】

输出:

                         输入:

Whatistoday'sPM2.5?

   90

Unhealthy.Becareful!

(1)If语句格式:

If:

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

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

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

(2)简单条件构造

  

①简单条件基本形式

  

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

=

  

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

   

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

  

是布尔表达式,为bool类型

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

    (3)二分支语法结构

If:

                                       

else:

                                       

程序6:

[python] viewplain copy

1.# quadratic.py  

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

3.import math  

4.def main():

  

5.    print("Thisprogram finds the real solutions to a quadratic\n")  

6.    a,b,c =eval(input("Please enter the coefficients(a,b,c):

 "))  

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

8.    if delta >= 0:

  

9.        discRoot =math.sqrt(delta)  

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

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

12.       print("\nThe solutions are:

", root1, root2)  

13.    else:

  

14.        print("Theequation has no real roots!

")  

15.main()  

【运行结果】

输出:

Thisprogramfindstherealsolutionstoaquadratic

                                                                            输入:

Pleaseenterthecoefficients(a,b,c):

                    1,2,3

Theequationhasnorealroots!

3.3多分支

(1)多分支决策

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

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

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

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

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

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

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

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

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

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

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

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

格式如下:

If:

                          

elif:

                          

elif:

                          

else:

                          

例:

程序7:

[python] viewplain copy

1.# quadratic.py  

2.import math  

3.def main():

  

4.              print("This program finds the realsolutions to a quadratic\n")  

5.    a,b,c =eval(input("Please enter the coefficients(a,b,c):

 "))  

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

7.              if a == 0:

  

8.                  x = -b/c  

9.                  print("\nThere is ansolution", x)  

10.    elif delta < 0:

  

11.       print("\nThe equation has no real roots!

")  

12.    elif dalta == 0:

  

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

14.                  print("\nTheere is a double rootat", x)  

15.    else:

  

16.                  discRoot = math.sqrt(delta)  

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

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

19.        print("\nThesolutions are:

", root1, root2)  

20.main()  

3.4异常处理

    

异常处理语句

              

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

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

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

格式如下:

try:

                                

except:

                                

except:

 

                               

except:

 

                               

                           else:

                                 

                           finally:

                                 

        

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

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

如:

输入非数值类型(NameError)

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

         

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

程序8:

[python] viewplain copy

1.# 异常处理测试  

2.def main():

  

3.    try:

  

4.       number1,number2 = eval(input("Enter two numbers,  

5.separated by a comma:

"))  

6.        result = number1/number2  

7.    exceptZeroDivisionError:

  

8.       print("Division by zero!

")  

9.    exceptSyntaxError:

  

10.        print("Acomma may be missing in the input")  

11.    else:

  

12.        print("Noexceptions, the result is", result)  

13.    finally:

  

14.       print("executing the final clause")  

15.main()  

【运行结果】

输出:

                                                           输入:

Entertwonumbers,separatedbyacomma:

12

Acommamaybemissingintheinput

executingthefinalclause

 

Entertwonumbers,separatedbyacomma:

3,2

Noexceptions,theresultis1.5

executingthefinalclause

 

Entertwonumbers,separatedbyacomma:

3,0

Divisionbyzero!

executingthefinalclause

【实例】三者最大值

【IPO】 

输入:

三个数值 

处理:

三者最大算法 

输出:

打印最大值

【算法比较】 

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

 

三个值的情况比较简单,如果是五值比较复杂,而且效率低 

(因为表达式没有被充分利用) 

②决策树—避免冗余比较 

 

结构更加复杂!

 

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

【程序】程序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)

main()

1

2

3

4

5

6

7

8

9

10

11

12

13

1

2

3

4

5

6

7

8

9

10

11

12

13

【运行结果】 

Howmanynumbersarethere?

Enteranumber>>9 

Enteranumber>>6 

Enteranumber>>3 

Enteranumber>>10 

Enteranumber>>20 

Thelargestvalueis20

④使用Python内置函数max() 

3.5基本循环结构

(1)for循环

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

forin:

1

2

1

2

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

例:

for循环求平均数

IPO:

 

输入:

待输入数字个数,数字 

处理:

平均数算法 

输出:

平均数 

通用设计方案:

 

o①输入数字的个数n

o②将sum初始化为0

o③循环n次:

 

o

输入数字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

4

5

6

7

【运行结果】 

Howmanynumbers?

Enteranumber>>5 

Enteranumber>>7 

Enteranumber>>6

Theaverageis6.0

for循环的缺点:

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

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

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

(2)while循环

语句格式:

while

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)交互式循环

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

(2)哨兵循环

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

设计方法:

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

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

(3)文件循环

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

(4)循环嵌套

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

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

 

3.7死循环和循环嵌套

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

死循环的使用:

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

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

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

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

 

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

例:

 

3.8布尔表达式

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

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

(1)布尔操作符:

and,or,not

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

and

or

1

2

1

2

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

not

1

1

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

not>and>or

例:

壁球比赛计分:

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

o规则1:

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

o

即:

scoreA==15orscoreB==15

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

o

即:

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

o规则2:

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

o

即:

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

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

o

即:

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

(3)布尔代数:

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

代数

布尔代数

a*0=0

aandfalse==false

a*1=a

aandtrue==a

a+0=0

aorfalse==a

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

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

③not操作符可负负抵消

④德摩根定律:

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

如:

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

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

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

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

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

②bool类型是特殊的整数

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

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

当前位置:首页 > IT计算机

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

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