第 3 章 控制结构与函数

本文详细介绍了Python编程中的控制结构,包括单分支、二分支、多分支结构和条件判断组合,以及循环结构的遍历循环、无限循环、循环控制和循环中的else子句。此外,还探讨了函数的基本使用,如函数概念、参数传递、返回值以及编写规范,包括如何定义、调用和控制函数的行为。
摘要由CSDN通过智能技术生成

3.1 分支结构

3.1.1 单分支结构

Python 的单分支结构使用 if 保留字对条件进行判断,使用方式如下:

if <条件>:
    <语句块>

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

3.1.2 二分支结构

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

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

<语句块 1> 在 if 中 <条件> 满足即为 True 时执行,<语句块 2> 在 if 中 <条件> 不满足即为 False 时执行。简单来说,二分支结构根据条件的 True 或 False 结果产生两条路径。

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

<变量> = <表达式 1> if <条件> else <表达式 2>

如果 <条件> 为 True,则将 <表达式 1> 的结果赋值给 <变量>,否则将 <表达式 2> 的结果赋值给 <变量>。

first_num = eval(input('请输入第一个数:'))
second_num = eval(input('请输入第二个数:'))
bigger_num = first_num if first_num >= second_num else second_num
print(f'较大的数是{bigger_num}。')
------------------------------------------------------------------------
请输入第一个数:50
请输入第二个数:25
较大的数是50

3.1.3 多分支结构

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

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

多分支结构通常用于判断同一个条件或一类条件的多个执行路径。Python 会按照多分支结构的代码顺序依次评估判断条件,寻找并执行第一个结果为 True 的条件所对应的语句块。当 if-elif-else 中的某个语句块执行后,Python 就会跳过整个 if-elif-else 结构。即使后续的条件测试为真,其对应的语句块也不会被执行。

此外,Python 并不要求 if-elif 结构后面的代码必须有 else 代码块。else 代码块是一个包罗万象的语句,只要不满足任何 if 或 elif 中的条件测试,else 中的代码就会被执行。这可能会引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个 elif 代码块代替 else 代码块。这样就可以肯定,仅当满足相应的条件时,代码才会执行。

3.1.4 条件判断及组合

分支结构中的条件判断可以使用任何能够产生 True 或 False 的语句或函数。形成判断条件最常见的方式是采用关系操作符:<<=>>===!=

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

Python 语言使用保留字 not、and 和 or 对条件进行逻辑运算或组合。保留字 not 表示单个条件的“否”关系,and 表示多个条件之间的“与”关系,保留字 or 表示多个条件之间的“或”关系。

3.1.5 测试多个条件

if-elif-else 结构功能强大,但仅适用于只有一个条件满足的情况:遇到了通过了的测试后,Python 便会跳过余下的测试。这种设定效率很高,但只能测试一个特定的条件。

如果需要检查多个条件,应使用一系列不包含 elif 和 else 代码块的简单 if 语句。在可能有多个条件为 True 且需要在每个条件为 True 时都采取响应措施时,这种方法将非常适合。

3.2 循环结构

3.2.1 遍历循环

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

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

<遍历结构> 可以是字符串、range() 函数或组合数据类型、文件等。对于字符串,可以逐一遍历字符串的每个字符,基本使用方式如下:

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

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

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

除了在 range() 函数里直接指定循环次数,也可以使用如下用法:range(start, stop[, step])。表示计数从 start 开始,到 stop 结束,但不包括 stop。step 为步长,缺省时步长为 1。

3.2.2 无限循环

Python 通过保留字 while 实现无限循环:

while <条件>:
    <语句块>

当程序执行到 while 语句时,条件测试如果为 True,执行循环体语句,语句结束后返回再次判断 while 语句的条件;当条件测试为 False 时,循环终止,执行与 while 同级别缩进的后续语句。

while 定义的是无限循环,让其在恰当的时候停止运行是很重要的。如果让 while 循环停止的条件不多时,通过简单的条件测试即可结束它的运行。但在更复杂的程序当中,很可能会有众多的事件将导致循环的停止,在这种情况下如果在一条 while 语句中检查所有的这些条件,将既复杂又困难。

一种很好的方法是定义一个变量将其作为标志(flag),用于判断整个程序是否处于活动状态。它相当于程序的交通信号灯,当所有的条件满足时,它的值为 True,循环继续执行;一旦循环条件不满足时就为 False,以此来结束程序的运行。

prompt = "\n我是一个复读机。"
prompt += "\n我会重复你的话,输入 quit 结束程序。"

active = True
while active:
    message = input(prompt)
    
    if message == 'quit':
        active = False
    else:
        print(message)
------------------------------------------------------------------------
我是一个复读机。
我会重复你的话,输入 quit 结束程序。你好
你好

我是一个复读机。
我会重复你的话,输入 quit 结束程序。你是只鹦鹉
你是只鹦鹉

我是一个复读机。
我会重复你的话,输入 quit 结束程序。quit

上述程序中,变量 active 被设置成了标志位,用于判断输入的内容是不是 quit 以确定程序是否继续执行。

3.2.3 循环控制

循环结构有两个辅助循环控制的保留字:break 和 continue。

break 用来跳出 for 或 while 循环,脱离该循环后程序从循环后的代码继续执行。如果有 2 层或多层循环,break 只能退出最内层循环。

利用 break 可将上述代码改写:

prompt = '\n我是一个复读机。'
prompt += '\n输入 quit 结束程序。'

while True:
    message = input(prompt)

    if message == 'quit':
        break
    else:
        print(message)
------------------------------------------------------------------------
我是一个复读机。
我会重复你的话,输入 quit 结束程序。你好
你好

我是一个复读机。
我会重复你的话,输入 quit 结束程序。你是只鹦鹉
你是只鹦鹉

我是一个复读机。
我会重复你的话,输入 quit 结束程序。quit

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

current_number = 0
while current_number < 10:
    current_number += 1
    if current_number % 2 == 0:
        continue
    
    print(current_number
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值