从零开始学Python编程之循环

大家好,我是岛上程序猿,欢迎关注

循环是编程语言中的核心概念之一,Python语言也不例外。本文将介绍Python编程中的循环主题,包括for循环和while循环的基本概念、语法、应用场景以及常见问题等。

目录

for循环

基本语法

range函数的使用

应用场景

while循环

基本语法

应用场景

break和continue语句

break语句的作用和用法

continue语句的作用和用法

break和continue语句的区别和联系

嵌套循环

基本语法和应用场景

常见问题及解决思路

1.如何避免多层嵌套循环的复杂性?

2.如何避免死循环以及控制循环次数?

3.如何在循环中修改列表元素?

4.如何避免遍历空列表?


for循环

基本语法

for循环的基本语法如下:

for variable_name in sequence:
    # 循环体代码块

其中,variable_name 是用来存放每次循环中从 sequence 中取出的元素的变量名,sequence 则是需要被遍历的序列(如列表、元组、字符串等)。

range函数的使用

当需要循环一定次数时,可以使用 range() 函数生成一个指定范围的整数序列。

for i in range(5):
    print(i)

输出结果为:

0
1
2
3
4

应用场景

# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# 遍历元组
colors = ("red", "green", "blue")
for color in colors:
    print(color)

# 遍历字符串
message = "hello world"
for char in message:
    print(char)

# 遍历字典的键值对
person = {"name": "Alice", "age": 30, "gender": "female"}
for key, value in person.items():
    print(key, value)

# 使用enumerate()函数同时遍历列表元素和索引
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(index, fruit)

# 嵌套循环遍历二维列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for num in row:
        print(num)

while循环

基本语法

while循环的基本语法如下:

while condition:
    # 循环体代码块

其中,condition 是一个返回布尔值的表达式,当表达式的值为 True 时,循环会一直执行下去。

应用场景

# 循环执行某个任务,直到用户输入'quit'为止
while True:
    task = input("请输入任务名称:")
    if task == 'quit':
        break
    print("任务名为 %s 的任务正在执行..." % task)

# 循环获取用户输入,直到输入合法的数字
while True:
    try:
        num = int(input("请输入一个整数:"))
        break
    except ValueError:
        print("输入错误,请重新输入。")

# 循环获取用户输入,直到输入合法的字符串
while True:
    name = input("请输入您的姓名:")
    if name.isalpha():
        break
    print("输入错误,请重新输入。")

break和continue语句

break语句的作用和用法

在循环中使用 break 语句可以立即结束循环。

for i in range(5):
    if i == 3:
        break
    print(i)

输出结果为:

0
1
2

continue语句的作用和用法

在循环中使用 continue 语句可以跳过当前循环中的代码,直接进入下一次循环。

for i in range(5):
    if i == 3:
        continue
    print(i)

输出结果为:

0
1
2
4

break和continue语句的区别和联系

使用 break 语句会立即结束整个循环,而使用 continue 语句只会跳过当前循环中的代码,并进入下一次循环。

嵌套循环

基本语法和应用场景

嵌套循环的语法如下:

for i in range(3):
    for j in range(3):
        print(i, j)

输出结果为:

0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2

嵌套循环通常用于处理多维数组、矩阵等数据类型。

常见问题及解决思路

1.如何避免多层嵌套循环的复杂性?

在使用嵌套循环时,应该尽量避免多层嵌套的复杂性,可以考虑使用函数或者其他数据结构来简化代码逻辑。例如,可以将嵌套循环中的操作封装为一个函数,然后在循环中调用该函数来完成操作。另外,可以使用生成器表达式、列表推导式等语法糖来简化循环代码,例如:

# 使用生成器表达式遍历二维列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for num in (num for row in matrix for num in row):
    print(num)

# 使用列表推导式遍历二维列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
nums = [num for row in matrix for num in row]
print(nums)

以上两个例子分别演示了如何使用生成器表达式、列表推导式等语法糖来遍历二维列表,避免多层嵌套循环的复杂性。需要注意的是,生成器表达式和列表推导式等语法糖在某些情况下可能会影响代码可读性和性能,应该根据具体情况进行选择。

另外,还可以使用其他数据结构来简化嵌套循环的代码逻辑,例如:

  • 使用字典或集合来去重或统计元素出现次数
  • 使用zip函数、map函数等高阶函数来处理多个列表的元素
  • 使用numpy、pandas等科学计算库来处理多维数组、矩阵等数据类型

总之,在使用嵌套循环时,应该尽量避免多层嵌套的复杂性,使用函数、语法糖、其他数据结构等方式来简化代码逻辑,提高代码可读性和性能。

2.如何避免死循环以及控制循环次数?

在使用while循环时,应该确保循环条件最终会变为False,否则就会陷入死循环。可以使用 break 语句或者其他控制流语句来跳出循环,或者使用计数器等方式限制循环次数。

可以使用 break 或者计数器等方式来控制循环次数。例如,在使用for循环时,可以结合 range() 函数来控制循环次数:

for i in range(5):
    # 循环体代码块

上述代码会循环执行5次,因为 range(5) 会生成一个包含5个整数的序列 [0, 1, 2, 3, 4],for循环会依次遍历这个序列中的元素。

在使用while循环时,可以使用计数器来控制循环次数,例如:

count = 0
while count < 5:
    # 循环体代码块
    count += 1

上述代码会循环执行5次,因为在循环开始之前,计数器 count 被初始化为0,每次循环结束之后,计数器会加1,直到计数器的值达到5为止。

需要注意的是,在控制循环次数时,应该确保循环条件最终会变为False,否则就会陷入死循环。可以使用 break 语句或者其他控制流语句来跳出循环,例如:

count = 0
while True:
    # 循环体代码块
    count += 1
    if count >= 5:
        break

上述代码会循环执行5次,因为在循环开始之前,使用 while True 表示无限循环,每次循环结束之后,判断计数器的值是否大于等于5,如果是,则使用 break 语句跳出循环。

3.如何在循环中修改列表元素?

在for循环中,可以通过引用列表元素的索引来修改元素的值,例如:

fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
    fruits[i] = fruits[i].upper()
print(fruits)  # 输出: ["APPLE", "BANANA", "CHERRY"]

在while循环中,可以使用类似的方法来修改列表元素的值,例如:

fruits = ["apple", "banana", "cherry"]
i = 0
while i < len(fruits):
    fruits[i] = fruits[i].upper()
    i += 1
print(fruits)  # 输出: ["APPLE", "BANANA", "CHERRY"]

需要注意的是,如果在循环中删除或添加元素,可能会导致列表的长度发生变化,进而导致索引错误或死循环等问题。因此,在修改列表元素时,建议使用索引方式而不是直接操作列表。

4.如何避免遍历空列表?

在使用for循环遍历列表时,可以使用if语句判断列表是否为空,例如:

my_list = []
if my_list:
    # 列表不为空,执行操作
    for item in my_list:
        print(item)
else:
    # 列表为空,输出提示信息
    print("This list is empty.")

在使用while循环遍历列表时,可以使用len()函数获取列表长度,例如:

my_list = []
i = 0
while i < len(my_list):
    print(my_list[i])
    i += 1
else:
    # 列表为空,输出提示信息
    print("This list is empty.")

需要注意的是,在使用if语句判断列表是否为空时,空列表、空元组、空字典等都会被视为False。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值