Python——分支和循环

发布于:2024-08-22 ⋅ 阅读:(82) ⋅ 点赞:(0)

在Python中,分支和循环是控制程序流程的基本结构,它们允许程序根据条件执行不同的代码块,或者重复执行某个代码块直到满足特定条件。下面将详细解释这两种结构。

分支结构

分支结构根据条件的不同来执行不同的代码块。Python中主要通过ifelif(else if的缩写)、else语句来实现分支。

基本语法
if 条件表达式:  
    # 条件为真时执行的代码块  
elif 条件表达式2:  
    # 条件表达式为假,且条件表达式2为真时执行的代码块  
else:  
    # 所有前面的条件都为假时执行的代码块

除了基本语法外,还有一个特殊的用法:

条件为真时执行的语句 if condition else 条件为假时执行的语句
示例
age = 20  
  
if age < 18:  
    print("未成年")  
elif age == 18:  
    print("刚成年")  
else:  
    print("已成年")

循环结构

循环结构允许你重复执行一段代码块直到满足某个条件。Python提供了几种循环结构,包括for循环和while循环。

For循环

for循环用于遍历任何序列(如列表、元组或字符串)或其他可迭代对象

基本语法
for 变量 in 可迭代对象:  
    # 循环体
示例
fruits = ["apple", "banana", "cherry"]  
for fruit in fruits:  
    print(fruit)

可迭代对象

Python中的可迭代对象(Iterable)是一个核心概念,它允许你遍历(即一个接一个地访问)容器中的元素,而无需了解容器的内部结构。

常见的可迭代对象

Python中大多数内置容器类型都是可迭代对象,包括:

  • 列表(List)
    • 迭代元素:列表中的项(items),按插入顺序进行迭代。
  • 元组(Tuple)
    • 迭代元素:元组中的元素(elements),也按它们在元组中的顺序进行迭代。
  • 字典(Dictionary)
    • 迭代元素:默认情况下,字典的迭代是基于它的键(keys)进行的。但是,你也可以使用.values().items()方法来分别迭代值(values)和键值对(key-value pairs)。
  • 集合(Set)
    • 迭代元素:集合中的元素(elements),迭代顺序通常是不确定的,因为它依赖于哈希表的实现。
  • 字符串(String)
    • 迭代元素:字符串中的字符(characters),按从左到右的顺序进行迭代。
  • 范围(Range)
    • 迭代元素:通过range(start, stop[, step])创建的整数序列中的数字。默认步长为1,从start(包含)开始到stop(不包含)结束。
  • 文件对象(在读取模式下)
    • 迭代元素:文件中的行(lines),每次迭代返回一个文件的一行(包括末尾的换行符,如果有的话)。注意,当文件迭代完成后,迭代器会耗尽,再次迭代同一个文件对象将不会返回任何内容,除非文件指针被重置(例如,使用file.seek(0))。

当我们想要根据一个范围来重复执行某些操作时,Python提供了一个内置函数range(),它与for循环配合使用非常方便。

range() 函数

range() 函数生成一个整数序列,这个序列通常用于for循环中的迭代。range() 函数可以接受一到三个参数:

  • start(可选): 序列的起始值,默认为0。
  • stop(必需): 序列的结束值,但不包括此值。
  • step(可选): 两个值之间的间隔,默认为1。

range() 函数返回的是一个迭代器,这意味着它返回的对象是一个支持迭代操作的对象,即它可以被遍历以获取其内部的元素。然而,在实际使用中,我们很少直接对range()的结果进行迭代,而是将它直接用作for循环的迭代对象。

for 循环与 range() 的结合使用

for循环与range()结合使用时,可以非常方便地基于一个给定的范围进行迭代。例如,如果你想打印从0到4的数字,你可以这样做:

for i in range(5):  # 注意这里用5,因为range不包括结束值  
    print(i)  
# 输出:  
# 0  
# 1  
# 2  
# 3  
# 4
注意事项
  • range()生成的序列是从startstop-1的整数序列,即stop值是不包括在内的。
  • 如果step是正数,则序列是从startstop-1的升序序列;如果step是负数,则序列是从startstop+1的降序序列(但请注意,这意味着stop值必须大于start,否则序列将是空的)。
  • 虽然在很多情况下range()用于for循环,但它也可以用在其他需要迭代整数的场合,比如列表推导式或生成器表达式中。

总的来说,for循环与range()的结合是Python中处理基于范围的迭代的一种非常强大且灵活的方式。

While循环

while循环会在给定的条件为真时重复执行一段代码块。

基本语法
while 条件表达式:  
    # 循环体
示例
count = 0  
while count < 5:  
    print(f"Count is {count}")  
    count += 1

循环控制语句

在循环中,你可能会需要提前结束循环或跳过循环的剩余部分。Python提供了breakcontinue语句来实现这些功能。

  • break:立即退出循环,不再执行循环中剩余的语句。
  • continue:跳过当前循环的剩余语句,并继续下一次循环。
示例
for i in range(1, 10):  
    if i == 5:  
        break  # 当i等于5时,退出循环  
    print(i)  
  
print("\nAfter break")  
  
for i in range(1, 10):  
    if i == 5:  
        continue  # 当i等于5时,跳过当前循环的剩余部分  
    print(i)

while-else结构

在Python中,while 循环可以搭配一个可选的 else 子句,这种结构称为 while-else 结构。while-else 结构允许你在 while 循环正常结束(即不是通过 break 语句退出的)后执行一些代码。如果 while 循环是通过 break 语句退出的,那么 else 子句中的代码将不会被执行。

基本语法
while 条件表达式:  
    # 循环体  
    # 如果需要,可以使用 break 语句退出循环  
else:  
    # 当循环正常结束时执行的代码
示例 :通过 break 退出循环
count = 0  
while True:  
    print(f"Count is {count}")  
    count += 1  
    if count >= 5:  
        break  
else:  
    print("This will not be printed")  
  
print("Exited the loop")

在这个例子中,虽然 while 循环的条件是 True,但由于在循环体内使用了 break 语句,当 count 达到 5 时,循环会提前退出。因此,else 子句中的代码不会被执行,而 "Exited the loop" 会被打印出来。

使用场景

while-else 结构在需要知道循环是正常结束还是被 break 语句中断时非常有用。例如,在搜索列表中某个元素时,如果找到了元素,则使用 break 退出循环;如果遍历完整个列表都没有找到,则 else 子句中的代码会执行,可能表示需要执行一些默认操作或报告未找到元素。


网站公告

今日签到

点亮在社区的每一天
去签到