【python二级等考】python语言程序设计(四)

本文深入讲解程序设计中的基本控制结构,包括顺序、分支与循环结构,探讨Python中的if、for、while语句及其异常处理机制,辅以实例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【第四章】程序的控制结构

在这里插入图片描述

一、程序的基本结构

  • 程序的流程图

与数学模型中的流程图相似。
起止框:表示程序逻辑的开始或结束;
判断框:表示一个判断条件,并根据判断结果选择不同的执行路径;
处理框:表示一组处理过程,对应于顺序执行的程序逻辑;
输入输出框:表示程序中的数据输入或结果输出;
注释框:表示程序的注释;
流向线:表示程序的控制流,以带箭头直线或曲线表达程序的执行路径;
连接点:表示多个流程图的连接方式,常用于将多个较小流程图组织成较大流程图。

程序由三种基本结构组成:顺序结构分支结构循环结构
任何程序都由这三种基本结构组合而成,这些基本结构都有一个入口和一个出口。

  • try-except保留字
    异常处理机制,以程序的正常运行作为判定条件,根据一段代码执行的正确性,进行程序逻辑选择,它是分支结构的一种扩展。
  • break和continue
    循环控制符
    beak:跳出整个循环,用来终止整个循环。
    continue:跳出最内层循环,用来控制循环次数。

二、程序的分支结构

  • 单分支结构

python中的单分支使用if保留字来对条件进行判断控制,使用方式如下:

if<条件>:
	语句块

其中,if、:和<语句块>前的缩进都是语法的一部分。<语句块>是if条件满足后执行的一个或多个语句序列,缩进表达<语句块>与if的包含关系。<条件>是一个产生True或False结果的语句,当结果为True时,执行<语句块>,否则跳过<语句块>。

<条件>是一个或多个条件,多个条件间采用and或or进行逻辑组合。and表示多个条件“与”的关系,or表示多个条件“或”的关系

  • 二分支结构
    Python的二分支结构使用if-else保留字对条件进行判断,语法格式如下:
if  <条件>:
  	<语句块1>
else:
   	<语句块2>

其中,if、:和语句块前的缩进都是语法的一部分。
<语句块1>在if中<条件>满足即为True时执行,<语句块2>在if中<条件>不满足即为False时执行。简单说,二分支结构根据条件的True或False结果产生两条路径。

# 判断用户输入数字的某个属性
s = eval(input("请输出一个整数:"))
if s % 3 == 0 and s % 5 == 0:
	print("这个数字能够同时被3和5整除")
else:
	print("这个数字不能够同时被3和5整除")

二分支结构还有一种更简洁的表达方式,适合<语句块1>和<语句块2>都只包含简单表达式的情况,语法格式如下:

<表达式1>  if  <条件>  else  <表达式2>

例:

# 判断用户输入数字的某个属性
s = eval(input("请输出一个整数:"))
token = "" if s % 3 == 0 and s % 5 == 0  else "不"
print("这个数字{}能够同时被3和5整除".format(token))

Python的if-elif-else描述多分支结构,语句格式如下:

if <条件1>:
    <语句块1>
elif <条件2>:
    <语句块2>
... 
else: 
     <语句块N>  

多分支结构通常用于判断同一个条件或一类条件的多个执行路径。要注意,Python会按照多分支结构的代码顺序依次评估判断条件,寻找并执行第一个结果为True条件对应的语句块,当前语句块执行后跳过整个if-elif-else结构。
利用多分支结构编写代码时要注意多个逻辑条件的先后关系。

经典例题:
获取用户输入的一个百分制成绩,转换成五分制,给出对应的A、B、C、D、E等级。

# 将百分制成绩转换为五分制成绩
score = eval(input("请输出一个百分制成绩:"))
if score >= 60.0:
	grade = "D"
elif score >= 70.0:
	grade = "C"
elif score >= 80.0:
	grade = "B"
elif score >= 90.0:
	grade = "A"
else:
grade = "E"
print("对应的五分制成绩是:{}".format(grade))

>>>请输出一个百分之成绩:80
D

很显然,上面的程序的运行结果是错误的。代码本身运行并没有什么错误,但是逻辑出现了错误。正确如下:

# 将百分制成绩转换为五分制成绩
score = eval(input("请输出一个百分制成绩:"))
if score >= 90.0:
	grade = "A"
elif score >= 80.0:
	grade = "B"
elif score >= 70.0:
	grade = "C"
elif score >= 60.0:
	grade = "D"
else:
grade = "E"
print("对应的五分制成绩是:{}".format(grade))

  • 判断条件及组合
    分支结构中的判断条件可以使用任何能够产生True或False的语句或函数。形成判断条件最常见的方式是采用关系操作符
    在这里插入图片描述

Python语言中,任何非零的数值、非空的数据类型都等价于True,0或空类型等价于False,可以直接用作判断条件。

Python语言使用保留字not、and和or对条件进行逻辑运算或组着。

保留字not表示单个条件的“否”关系,and表示多个条件之间的“与”关系,保留字or表示多个条件之间的“或”关系。

>>>4 < 5
True 
>>>"Python" > "python"
False

>>>0 == False
True 
>>>"" == True
False

>>>not True
False
>>>a = 80
>>>( a > 100) or ( a > 50 and a < 90)
True

三、程序的循环结构

  • 程序的循环结构
    Python语言的循环结构包括两种:遍历循环无限循环
    遍历循环使用保留字for依次提取遍历结构各元素进行处理;
    无限循环使用保留字while根据判断条件执行程序。

  • 遍历循环:for
    遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,对于每个所提取的元素执行一次语句块。for语句的循环执行次数是根据遍历结构中元素个数确定的。

for  <循环变量>  in  <遍历结构>:
	 <语句块> 

遍历结构可以是字符串、文件、range()函数或组合数据类型等。

对于字符串,可以逐一遍历字符串的每个字符,基本使用方式如下:

for  <循环变量>  in  <字符串变量>:
  		<语句块> 

使用range()函数,可以指定语句块的循环次数,基本使用方式如下:

for  <循环变量>  in  range(<循环次数>):      		
 	<语句块> 

遍历循环还有一种扩展模式,使用方法如下:

for  <循环变量>  in  <遍历结构>:
		<语句块1>
else:
	 <语句块2>

当for循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行之后才执行并结束,因此,可以在<语句块2>中放置判断循环执行情况的语句。

  • 无限循环:while
    Python通过保留字while实现无限循环
while  <条件>:
       <语句块>

当程序执行到while语句时,判断条件如果为True,执行循环体语句,语句结束后返回再次判断while语句的条件;当条件为False时,循环终止,执行与while同级别缩进的后续语句。
无限循环也有一种使用保留字else的扩展模式,使用方法如下:

while  <条件>:
   	 <语句块1>
else:
     <语句块2>

在这种扩展模式中,当while循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行后才执行,因此,可以在语句块2中放置判断循环执行情况的语句。

  • 循环控制: break和continue

循环结构有两个辅助循环控制的保留字:break和continue。break用来跳出最内层for或while循环,脱离该循环后程序从循环后代码继续执行。
如果有2层或多层循环,break退出最内层循环。

continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。

continue语句和break语句的区别是:continue语句只结束本次循环,不终止整个循环的执行,而break具备结束循环的能力。

四、程序的异常处理

Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。

>>>n = eval(input("请输入一个数字: "))
请输入一个整数: python
 
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    n = eval(input("请输入一个数字: "))
  File "<string>", line 1, in <module>
NameError: name 'python' is not defined

由于使用了eval()函数,如果用户输入不是一个数字则可能报错。这类由于输入与预期不匹配造成的错误有很多种可能,不能逐一列出可能性进行判断。为了保证程序运行的稳定性,这类运行错误应该被程序捕获并合理控制。

Python语言使用保留字try和except进行异常处理,基本的语法格式如下:。

try:
	<语句块1>
except:
	<语句块2>

语句块1是正常执行的程序内容,当执行这个语句块发生异常时,则执行except保留字后面的语句块2。

除了输入之外,异常处理还可以处理程序执行中的运行异常。

>>>for i in range(5):
print(10/i, end=" ")
Traceback (most recent call last):
  File "<pyshell#12>", line 2, in <module>
    print(10/i, end=" ")
ZeroDivisionError: division by zero

try:
    for i in range(5):
    print(10/i, end=" ")
except:
    print("某种原因,出错了!")

>>> 
某种原因,出错了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值