news 2026/8/19 16:38:26

Python从入门到精通 第四章(程序的控制结构)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python从入门到精通 第四章(程序的控制结构)

一、逻辑运算

1、逻辑运算符回顾

运算符

逻辑表达式

描述

and

x and y

只有x和y的值都为True,才会返回True,否则返回False

or

x or y

只要x或y的值为True,就会返回True,否则返回False

not

not x

如果x为True,则返回False,否则返回True

2、举例

(1)例1:

# 练习1: 定义一个整数变量 age,编写代码判断年龄是否正确 age = 100 # 要求人的年龄在 0-120 之间 if age >= 0 and age <= 120: print("年龄正确") else: print("年龄不正确") # 练习2: 定义两个整数变量 python_score、c_score,编写代码判断成绩 python_score = 50 c_score = 50 # 要求只要有一门成绩 > 60 分就算合格 if python_score > 60 or c_score > 60: print("考试通过") else: print("再接再厉!")

(2)例2:

# 练习: 定义一个布尔型变量 `is_employee`,编写代码判断是否是本公司员工 is_employee = True # 如果不是提示不允许入内 if not is_employee: print("非公勿内")

二、分支语句

1、多分支语句

(1)多分支语句的基本结构:

if 条件表达式1:

条件1满足执行的代码

……

elif 条件表达式2:

条件2满足时,执行的代码

……

elif 条件表达式3:

条件3满足时,执行的代码

……

else:

以上条件都不满足时,执行的代码

……

①elif和else都必须和if联合使用,而不能单独使用。

②可以将if、elif 和else以及各自缩进的代码,看成一个完整的代码块。

③下图所示的是多分支语句的控制结构示意图。

(2)举例:

holiday_name = "平安夜" if holiday_name == "情人节": print("买玫瑰") print("看电影") elif holiday_name == "平安夜": print("买苹果") print("吃大餐") elif holiday_name == "生日": print("买蛋糕") else: print("每天都是节日啊……")

2、if语句的嵌套

(1)嵌套if语句的基本结构:

if 条件表达式1:

条件1满足执行的代码

……

if 条件表达式2:

条件1和条件2均满足时,执行的代码

……

# 条件2不满足的处理

else:

条件1满足但条件2不满足时,执行的代码

# 条件1不满足的处理

else:

条件1不满足时,执行的代码

……

(2)举例:

①例1:

# 定义布尔型变量 has_ticket 表示是否有车票 has_ticket = True # 定义整数型变量 knife_length 表示刀的长度,单位:厘米 knife_length = 20 # 首先检查是否有车票,如果有,才允许进行 安检 if has_ticket: print("有车票,可以开始安检...") # 安检时,需要检查刀的长度,判断是否超过 20 厘米 # 如果超过 20 厘米,提示刀的长度,不允许上车 if knife_length >= 20: print("不允许携带 %d 厘米长的刀上车" % knife_length) # 如果不超过 20 厘米,安检通过 else: print("安检通过,祝您旅途愉快……") # 如果没有车票,不允许进门 else: print("大哥,您要先买票啊")

②例2:

""" 1. 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3) 2. 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能 3. 比较胜负 """ # 在Python中,要使用随机数,首先需要导入随机数的模块 —— “工具包”(建议在导入工具包时应该将导入的语句放在文件顶部) # ● 导入模块后,可以直接在模块名称后面敲一个 . 然后按 Tab 键,会提示该模块中包含的所有函数 # ● random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b import random # 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3) print("石头(1)/剪刀(2)/布(3)") player =int(input("请出拳:")) # 电脑随机出拳 computer = random.randint(1,3) # 比较胜负 # 如果条件判断的内容太长,可以在最外侧的条件增加一对大括号 # 再在每一个条件之间,使用回车,PyCharm 可以自动增加 8 个空格 if((player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1)): print("用户胜出!") elif player == computer: print("平局") else: print("电脑胜出!") # 另一种写法 if (computer == player % 3 + 1 ): print("用户胜出!") elif player == computer: print("平局") else: print("电脑胜出!")

三、循环语句——条件循环

1、while循环基本使用

(1)while循环最常用的应用场景就是让指定的代码按照指定的次数重复执行。

(2)死循环:由于程序员的原因,忘记在循环内部修改循环的判断条件,导致循环持续执行,程序无法终止。

2、条件循环

(1)条件循环的基本结构:

while(<条件>):

<语句块1> # while语句以及缩进部分是一个完整的代码块

<语句块2>

①当条件为True(真)时,执行语句块1,然后再次判断条件,当条件为False(假)时,退出循环执行语句块2。

②举例:

# 1. 定义重复次数计数器 i = 1 # 2. 使用 while 判断条件 while i <= 5: # 要重复执行的代码 print("Hello Python") # 处理计数器 i i = i + 1 print("循环结束后的 i = %d" % i)

3、循环计算

(1)在程序开发中,通常会遇到利用循环重复计算的需求,遇到这种需求,可以在while语句上方定义一个变量,用于存放最终计算结果,然后在循环体内部,每次循环都用最新的计算结果,更新之前定义的变量。

(2)例1:

# 计算 0 ~ 100 之间所有数字的累计求和结果 # 0. 定义最终结果的变量 result = 0 # 1. 定义一个整数的变量记录循环的次数 i = 0 # 2. 开始循环 while i <= 100: print(i) # 每一次循环,都让 result 这个变量和 i 这个计数器相加 result += i # 处理计数器 i += 1 print("0~100之间的数字求和结果 = %d" % result)

(3)例2:

# 0. 最终结果 result = 0 # 1. 计数器 i = 0 # 2. 开始循环 while i <= 100: # 判断偶数 if i % 2 == 0: print(i) result += i # 处理计数器 i += 1 print("0~100之间偶数求和结果 = %d" % result)

4、break和continue

(1)在循环体中,如果某一个条件满足后,不再希望循环继续执行,可以使用break关键字退出循环(仅退出一层循环体)。

i = 0 while i < 10: # break 某一条件满足时,退出循环体,不再执行循环体后续的代码 # i == 3 if i == 3: break print(i) i += 1 print("over")

(2)在循环体中,如果某一个条件满足后,希望本轮循环不执行循环体后续的语句,然后马上开始判断下一轮循环是否继续,可以使用continue关键字提前结束本轮循环。

i = 0 while i < 10: # 当 i == 7 时,不希望执行需要重复执行的代码 if i == 7: # 在使用 continue 之前,同样应该修改计数器 # 否则会出现死循环 i += 1 continue # 重复执行的代码 print(i) i += 1

5、while循环嵌套

(1)while嵌套就是——while里面还有while。

while 条件1表达式:

条件1满足时,做的事情1

条件1满足时,做的事情2

条件1满足时,做的事情3

...(省略)...

while 条件2表达式:

条件2满足时,做的事情1

条件2满足时,做的事情2

条件2满足时,做的事情3

...(省略)...

处理条件2

处理条件1

(2)循环嵌套演练——九九乘法表:

# 定义起始行 row = 1 # 最大打印 9 行 while row <= 9: # 定义起始列 col = 1 # 最大打印 row 列 while col <= row: # end = "",表示输出结束后,不换行 # "\t" 可以在控制台输出一个制表符,协助在输出文本时对齐 print("%d * %d = %d" % (col, row, row * col), end="\t") # 列数 + 1 col += 1 # 一行打印完成的换行 print("") # 行数 + 1 row += 1

四、循环语句——遍历循环

1、遍历循环的格式

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

<语句块>

①遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,对于每个所提取的元素执行一次语句块。

②for语句的循环执行次数是根据遍历结构中的元素个数确定的。

③遍历结构可以是字符串、文件、range函数或组合数据类型等,比较常见的是列表和元组。

2、逐一遍历字符串的每个字符

for c in "字符串": print(c)

3、使用range函数指定循环次数

range(a,b,s):从a到b(不含b)以s为步长产生一个序列。

①当只有一个参数x时,range返回序列(0,1,…,x-1)。

②当只有两个参数x、y(x<y)时,range返回序列(x,x+1,…,y-1)。

for i in range(4): print("第%d次循环" % (i + 1)) print("",end="\n") for i in range(1,5): print("第%d次循环" % i)

4、遍历循环的扩展模式

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

<语句块1>

else:

<语句块2>

①当for循环正常执行之后,程序会继续执行else语句中的内容。

②else语句只在循环正常执行没有被break打断的情况下才执行,因此可以在<语句块2>中放置判断循环执行情况的语句。

for i in range(4): print("第%d次循环" % (i + 1)) else: print("循环正常结束") print("",end="\n") for i in range(1,5): print("第%d次循环" % i) if i == 3: break else: print("循环正常结束")

五、程序的异常处理

1、异常的概念

(1)程序在运行时,如果Python解释器 遇到到一个错误(比如缩进错误、除数为0的错误),会停止程序的执行,并且提示一些错误信息,这就是异常。

(2)程序停止执行并且提示错误信息这个动作,我们通常称之为:抛出(raise)异常

(3)程序开发时,很难将所有的特殊情况都处理的面面俱到,不过通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性。

2、捕获异常

(1)在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try(尝试)来捕获异常。

(2)捕获异常最简单的语法格式:

try:

尝试执行的代码

except:

出现错误的处理

①尝试执行的代码是不确定是否能够正常执行的代码。

尝试执行的代码发生异常(有错误)时,执行except保留字后面的语句,程序不会因为该错误而停止运行。

try: n = eval(input("请输入一个数字:")) print("输入数字的4次方值为:%d" % n ** 4) except: print("输入错误!") # 如果输入的不是数字,n ** 4将会出错,产生异常 # 此时程序不会终止,而是转来执行except的语句

3、错误类型捕获

(1)在程序执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常做出不同的响应,这个时候就需要捕获错误类型了。

(2)语法如下:

try:

# 尝试执行的代码

pass

except 错误类型1:

# 针对错误类型1,对应的代码处理

pass

except (错误类型2, 错误类型3):

# 针对错误类型2 和 3,对应的代码处理

pass

except Exception as result:

print("未知错误 %s" % result)

注:当Python解释器抛出异常时,最后一行错误信息的第一个单词,就是错误类型。(见第一章中“认识错误”一节)

try: num = int(input("请输入整数:")) result = 8 / num print(result) except ValueError: print("请输入正确的整数") # 输入字符串会产生ValueError except ZeroDivisionError: print("除 0 错误") # 输入数字0会产生ZeroDivisionError

4、捕获未知错误

(1)在开发时,要预判到所有可能出现的错误,还是有一定难度的。

(2)如果希望程序无论出现任何错误,都不会因为Python解释器抛出异常而被终止,可以再增加一个except(如下所示)。

except Exception as result:

print("未知错误 %s" % result)

5、异常捕获完整语法

try:

# 尝试执行的代码

pass

except 错误类型1:

# 针对错误类型1,对应的代码处理

pass

except 错误类型2:

# 针对错误类型2,对应的代码处理

pass

except (错误类型3, 错误类型4):

# 针对错误类型3 和 4,对应的代码处理

pass

except Exception as result:

# 打印错误信息

print(result)

else:

# 没有异常才会执行的代码

pass

finally:

# 无论是否有异常,都会执行的代码

print("无论是否有异常,都会执行的代码")

try: # 提示用户输入一个整数 num = int(input("输入一个整数:")) # 使用 8 除以用户输入的整数并且输出 result = 8 / num print(result) except ValueError: print("请输入正确的整数") except Exception as result: print("未知错误 %s" % result) else: print("尝试成功") finally: print("无论是否出现错误都会执行的代码") print("-" * 50)

6、异常的传递

(1)当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方,如果传递到主程序后仍然没有异常处理,程序才会被终止。

(2)在开发中,可以在主函数中增加异常捕获,而在主函数中调用的其它函数,只要其它函数出现异常,都会传递到主函数的异常捕获中,这样就不需要在代码中增加大量的异常捕获,能够保证代码的整洁。

(3)例:

①定义函数 demo1() 提示用户输入一个整数并且返回

②定义函数 demo2() 调用 demo1()

③在主程序中调用 demo2()

def demo1(): return int(input("请输入一个整数:")) def demo2(): return demo1() try: print(demo2()) except ValueError: print("请输入正确的整数") except Exception as result: print("未知错误 %s" % result)

7、抛出异常

(1)在开发中,除了代码执行出错Python解释器会抛出异常之外,还可以根据应用程序特有的业务需求主动抛出异常(程序上没有任何代码错误,但是应用到实际中会出错,这时就需要主动抛出异常)。

(2)Python中提供了一个Exception异常类,在开发时,如果满足特定业务需求时,希望抛出异常,可以创建一个Exception的对象,然后使用raise关键字抛出异常对象。

(3)例:

①定义 input_password 函数,提示用户输入密码

②如果用户输入长度 < 8,抛出异常

③如果用户输入长度 >=8,返回输入的密码

def input_password(): # 1. 提示用户输入密码 pwd = input("请输入密码:") # 2. 判断密码长度 >= 8,返回用户输入的密码 if len(pwd) >= 8: return pwd # 3. 如果 < 8 主动抛出异常 print("主动抛出异常") # 1> 创建异常对象 - 可以使用错误信息字符串作为参数 ex = Exception("密码长度不够") # 2> 主动抛出异常 raise ex # 提示用户输入密码 try: print(input_password()) except Exception as result: print(result)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 16:37:06

Qt实现UDP单播、组播和广播功能

一、UDP单播、广播和组播的说明 UDP是不可靠、无连接的&#xff0c;所以划分为发送方和接收方更好理解 1、单播 UDP是无连接的&#xff0c;进行单播通信时&#xff0c;必须要绑定接收方端口&#xff0c;发送方直接通过接收方的ip和绑定的端口进行通信。发送方可以绑定端口也…

作者头像 李华
网站建设 2026/8/19 16:29:26

C/C++开发工具CLion v2022.3全新发布——支持C++ 20

CLion是一款专为开发C及C所设计的跨平台IDE。它是以IntelliJ为基础设计的&#xff0c;包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OS X和Windows上来开发C/C&#xff0c;同时它还使用智能编辑器来提高代码质量、自动代码重构并且深度整合CM…

作者头像 李华
网站建设 2026/8/19 16:29:14

激励错位下的重复博弈:信息与契约设计如何驱动长期合作

1. 项目概述&#xff1a;当激励错位的代理反复相遇在现实世界的合作与博弈中&#xff0c;一个核心且无处不在的难题是&#xff1a;当参与各方的目标不完全一致&#xff0c;甚至存在冲突时&#xff0c;如何设计一套有效的规则&#xff0c;使得长期合作成为可能&#xff1f;这正是…

作者头像 李华