Featured image of post 循环结构(while and for)

循环结构(while and for)

Loop structure (while and for)

写在前面

循环结构是一种允许程序反复执行某些代码块的控制结构。常见的循环结构包括:

  • while 循环:当条件为 True 时,重复执行代码块。
  • for 循环:遍历一个序列中的每个元素时,执行代码块。

while 循环

语法格式

1
2
while <条件>:
    语句块
  • while 是循环关键字,后面跟一个条件表达式。
  • <条件>是一个布尔表达式,当其结果为 True 时执行循环体中的代码块。
  • 语句块是在条件成立时执行的代码。需要注意的是,语句块中的代码必须缩进(通常为 4 个空格)。

流程

  1. 首先判断 <条件> 是否为 True
  2. 如果条件为 True,执行 语句块
  3. 然后再次判断 <条件>,如此循环,直到条件为 False
  4. 当条件为 False 时,退出循环,执行循环后的代码。

简单示例

1
2
3
4
i = 1
while i <= 5:
    print(f"第 {i} 次循环")
    i += 1
  • 初始化变量 i = 1
  • i <= 5True 时,执行打印语句并递增 i
  • i 增加到 6 时,条件 i <= 5False,循环终止。

while循环的应用场景

  1. 条件驱动循环
  • 根据特定条件执行操作,如用户输入数据直到符合要求。
  • 示例:提示用户输入一个大于 10 的数字,如果不符合则继续提示。
1
2
3
4
number = int(input("请输入一个大于10的数字: "))
while number <= 10:
    number = int(input("数字太小,请重新输入: "))
print("输入正确!")
  1. 处理用户输入
  • 使用 while 循环控制菜单选项的展示,直到用户选择退出。
  • 示例:简单的文本菜单系统

示例

1
2
3
4
5
6
7
8
9
while True:
    print("1. 查看余额")
    print("2. 存款")
    print("3. 取款")
    print("4. 退出")
    choice = input("请选择操作: ")
    if choice == '4':
        break
    # 其他操作逻辑

for循环

语法格式

1
2
for <变量> in <可迭代对象>:
    语句块
  • for 是循环关键字。
  • <变量> 是每次循环时从 <可迭代对象> 中获取的元素。
  • in 关键字表示循环的范围或对象。
  • <可迭代对象> 可以是列表、元组、字符串或其他可迭代对象。
  • 语句块是对每个元素执行的代码,通常缩进(4个空格)。

简单示例

1
2
3
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
  • fruits 是一个列表,包含三个字符串元素。
  • 每次迭代时,将列表中的一个元素赋值给 fruit 变量。
  • 打印当前元素。

range() 函数与 for 循环

range() 函数说明

1
2
3
range(stop)               # 生成从 0 到 stop-1 的整数序列
range(start, stop)        # 生成从 start 到 stop-1 的整数序列
range(start, stop, step)  # 生成从 start 到 stop-1,间隔为 step 的整数序列

示例:使用循环打印乘法口诀表

1
2
3
for i in range(1, n+1):
    for j in range(i, 2*i+1):
        print(f"{i*j}")
  • 外层循环遍历 i 从 1 到 n
  • 内层循环遍历 ji2*i + 1,打印乘积。

嵌套 for 循环

定义 for 循环可以嵌套使用。 示例

1
2
3
for i in range(3):
    for j in range(2):
        print(f"i={i}, j={j}")
  • 外层循环遍历 i 从 0 到 2。
  • 内层循环遍历 j 从 0 到 1,打印每个组合。

for 循环的常见使用场景

  1. 遍历字符串:
1
2
3
s = "hello"
for c in s:
    print(c)
  1. 遍历列表(集合、元组):
1
2
3
4
5
my_list = [10, 20, 30]
sum_ = 0
for num in my_list:
    sum_ += num
print(sum_)
  1. 遍历字典:
1
2
3
4
5
6
7
students = {
    "Name": "Alice",
    "Age": 18,
    "Score": 85
}
for key, value in students.items():
    print(f"{key}: {value}")
  1. 与 range 组合使用:
1
2
3
4
for i in range(5):
    print(i)
    for j in range(i+1):
        print(f"i={i}, j={j}")

循环的控制语句

break 语句

break 用于立即退出循环,无论循环条件是否为 True示例

1
2
3
4
5
6
i = 1
while i <= 10:
    if i == 5:
        break  # 当 `i` 等于 5 时,退出循环
    print(i)
    i += 1
1
2
3
4
for i in range(5):
    if i > 2:
        break
    print(i)
  • 在这个示例中,当 i 等于 5 时,循环会被提前终止。

continue 语句

continue 用于跳过当前循环中的剩余语句,并直接进入下一次循环的判断。

示例

1
2
3
4
5
6
i = 0
while i < 5:
    i += 1
    if i == 3:
        continue  # 跳过打印 `i` 为 3 的情况
    print(i)
1
2
3
4
for i in range(3):
    if i == 1:
        continue
    print(i)
  • i 等于 3 时,循环会跳到下一次循环的判断,避免执行后续代码。

else 子句

当循环正常结束时(没有被 break 终止),else 子句会执行。

1
2
3
4
5
6
i = 1
while i <= 5:
    print(i)
    i += 1
else:
    print("循环结束")
1
2
3
4
for i in range(3):
    print(i)
else:
    print("循环结束")

无限循环和死循环

无限循环 如果循环的条件始终为 True,则循环将永远不会结束,这被称为无限循环。 示例

1
2
while True:
    print("这是一条无限循环语句")
  • 这个循环会一直打印 “这是一条无限循环语句”,除非手动停止程序。 避免死循环 为了避免死循环,在编写 while 循环时,需要确保在循环体内有逻辑使得循环条件最终会变为 False示例
1
2
3
4
i = 1
while i <= 5:
    print(i)
    # 忘记递增 `i`,会导致死循环
  • 在这个示例中,如果忘记递增 i,循环将永远不会结束。 解决方法: 在循环体内正确更新控制条件变量,如 i += 1示例
1
2
3
4
5
6
i = 1
while i <= 5:
    print(i)
    i += 1
else:
    print("循环正常结束")
  • i 增加到 6 时,条件为 False,循环正常结束,执行 else 子句。

常见的陷阱和最佳实践

  • 避免死循环:确保在循环体内有逻辑使得条件最终会变为 False。
  • 控制语句的使用:合理使用 break 和 continue 可以使循环更灵活,但滥用可能使代码难以理解。
  • 循环条件的检查:在编写 while 循环时,仔细检查循环条件,确保逻辑正确。
  • 避免在循环中修改列表:可能导致不可预见结果。
  • 合理使用控制语句:提高代码可读性和效率,但避免滥用。
  • 使用 range() 和 enumerate() 简化代码:减少手动维护索引的需求。
本作品采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可(CC BY-NC-SA 4.0)
文章浏览量:Loading
Powered By MC ZBD Studio
发表了21篇文章 · 总计29.03k字
载入天数...载入时分秒...
总浏览量Loading | 访客总数Loading

主题 StackJimmy 设计
由ZephyrBD修改