当前位置:首页>python>【一起学Python】第16天:循环语句

【一起学Python】第16天:循环语句

  • 2026-10-03 00:48:59
【一起学Python】第16天:循环语句

循环语句允许我们重复执行一段代码,直到满足特定条件。

Python 提供了两种主要的循环结构:

  • while 循环:在条件为真时重复执行
  • for 循环:遍历序列中的每个元素

while 循环

基本语法

while 条件表达式:    执行语句块

示例

# 示例 1:简单的 while 循环count = 0while count < 5:    print(f"当前计数:{count}")    count += 1print("循环结束")# 示例 2:计算 1 到 100 的和sum_num = 0i = 1while i <= 100:    sum_num += i    i += 1print(f"1到100的和是:{sum_num}")# 示例 3:用户输入验证password = ""while password != "123456":    password = input("请输入密码:")    if password != "123456":        print("密码错误,请重试!")print("密码正确,登录成功!")# 示例 4:无限循环(需要用 break 跳出)while True:    user_input = input("输入 'quit' 退出:")    if user_input == "quit":        break    print(f"你输入了:{user_input}")

while...else 语句

# while 循环正常结束时会执行 else 块count = 0while count < 5:    print(count)    count += 1else:    print("循环正常结束")# 如果使用 break 跳出,则不会执行 elsecount = 0while count < 10:    if count == 5:        break    print(count)    count += 1else:    print("这句不会被打印")

for 循环

基本语法

for 变量 in 序列:    执行语句块

示例

# 示例 1:遍历列表fruits = ["苹果", "香蕉", "橙子", "葡萄"]for fruit in fruits:    print(f"我喜欢吃{fruit}")# 示例 2:遍历字符串for char in "Python":    print(char)# 示例 3:使用 range() 函数# range(stop)for i in range(5):    print(i)  # 输出 0 1 2 3 4# range(start, stop)for i in range(1, 6):    print(i)  # 输出 1 2 3 4 5# range(start, stop, step)for i in range(0, 10, 2):    print(i)  # 输出 0 2 4 6 8# 示例 4:遍历字典student = {"name": "张三", "age": 20, "grade": "A"}# 遍历键for key in student:    print(key)# 遍历值for value in student.values():    print(value)# 遍历键值对for key, value in student.items():    print(f"{key}: {value}")# 示例 5:使用 enumerate() 获取索引fruits = ["苹果", "香蕉", "橙子"]for index, fruit in enumerate(fruits):    print(f"索引 {index}: {fruit}")# 从指定索引开始for index, fruit in enumerate(fruits, start=1):    print(f"第 {index} 个水果: {fruit}")

for...else 语句

# for 循环正常结束时执行 elsefor i in range(5):    print(i)else:    print("循环正常结束")# 使用 break 跳出时不执行 elsefor i in range(10):    if i == 5:        break    print(i)else:    print("这句不会被打印")

循环控制语句

1. break 语句

break 用于完全终止循环。

# 示例 1:找到第一个偶数就退出numbers = [1, 3, 5, 8, 9, 10]for num in numbers:    if num % 2 == 0:        print(f"找到第一个偶数:{num}")        break# 示例 2:while 循环中使用 breakcount = 0while True:    print(count)    count += 1    if count >= 5:        break

2. continue 语句

continue 用于跳过当前迭代,继续下一次循环。

# 示例 1:跳过偶数,只打印奇数for i in range(10):    if i % 2 == 0:        continue    print(i)  # 只打印 1 3 5 7 9# 示例 2:跳过特定值fruits = ["苹果", "香蕉", "橙子", "葡萄"]for fruit in fruits:    if fruit == "橙子":        continue    print(fruit)  # 不会打印"橙子"

3. pass 语句

pass 是空语句,不做任何事情,用作占位符。

# 示例 1:占位符for i in range(5):    if i == 3:        pass  # 暂时不处理,以后再添加代码    else:        print(i)# 示例 2:空循环体for item in []:    pass

循环嵌套

循环内部可以嵌套另一个循环。

# 示例 1:打印乘法口诀表for i in range(1, 10):    for j in range(1, i + 1):        print(f"{j}×{i}={i*j}", end="\t")    print()  # 换行# 示例 2:打印图案for i in range(1, 6):    for j in range(i):        print("*", end="")    print()# 输出:# *# **# ***# ****# *****# 示例 3:遍历二维列表matrix = [    [1, 2, 3],    [4, 5, 6],    [7, 8, 9]]for row in matrix:    for item in row:        print(item, end=" ")    print()# 示例 4:嵌套循环中使用 breakfor i in range(3):    for j in range(3):        if i == 1 and j == 1:            break  # 只跳出内层循环        print(f"i={i}, j={j}")

实战案例

案例 1:猜数字游戏

import random# 生成 1-100 的随机数secret_number = random.randint(1, 100)attempts = 0max_attempts = 7print("欢迎来到猜数字游戏!")print(f"我想了一个 1-100 之间的数字,你有 {max_attempts} 次机会。")while attempts < max_attempts:    guess = int(input("请输入你的猜测:"))    attempts += 1    if guess == secret_number:        print(f"恭喜你!猜对了!答案是 {secret_number}")        print(f"你用了 {attempts} 次机会")        break    elif guess < secret_number:        print("太小了!")    else:        print("太大了!")    print(f"剩余机会:{max_attempts - attempts}")else:    print(f"游戏结束!答案是 {secret_number}")

案例 2:质数判断

# 判断一个数是否为质数def is_prime(n):    if n < 2:        return False    for i in range(2, int(n ** 0.5) + 1):        if n % i == 0:            return False    return True# 打印 1-100 之间的所有质数print("1-100 之间的质数:")count = 0for num in range(2, 101):    if is_prime(num):        print(num, end=" ")        count += 1        if count % 10 == 0:            print()  # 每10个换行

案例 3:斐波那契数列

# 方法 1:使用 while 循环def fibonacci_while(n):    a, b = 0, 1    count = 0    print("斐波那契数列:")    while count < n:        print(a, end=" ")        a, b = b, a + b        count += 1    print()fibonacci_while(10)# 方法 2:使用 for 循环def fibonacci_for(n):    fib_list = []    a, b = 0, 1    for _ in range(n):        fib_list.append(a)        a, b = b, a + b    return fib_listprint(fibonacci_for(10))

案例 4:学生成绩管理

students = []while True:    print("\n学生成绩管理系统")    print("1. 添加学生")    print("2. 显示所有学生")    print("3. 计算平均分")    print("4. 退出")    choice = input("请选择操作(1-4):")    if choice == "1":        name = input("请输入学生姓名:")        score = float(input("请输入学生成绩:"))        students.append({"name": name, "score": score})        print("添加成功!")    elif choice == "2":        if not students:            print("暂无学生信息")        else:            print("\n所有学生信息:")            for i, student in enumerate(students, 1):                print(f"{i}. {student['name']}: {student['score']}分")    elif choice == "3":        if not students:            print("暂无学生信息")        else:            total = sum(student['score'] for student in students)            average = total / len(students)            print(f"平均分:{average:.2f}")    elif choice == "4":        print("感谢使用,再见!")        break    else:        print("无效选择,请重试")

案例 5:打印各种图案

# 图案 1:直角三角形print("直角三角形:")for i in range(1, 6):    print("* " * i)print("\n倒直角三角形:")for i in range(5, 0, -1):    print("* " * i)print("\n等腰三角形:")for i in range(1, 6):    print(" " * (5 - i) + "* " * i)print("\n菱形:")# 上半部分for i in range(1, 5):    print(" " * (5 - i) + "* " * i)# 下半部分for i in range(5, 0, -1):    print(" " * (5 - i) + "* " * i)print("\n数字金字塔:")for i in range(1, 6):    print(" " * (5 - i), end="")    for j in range(1, i + 1):        print(j, end=" ")    print()

循环性能优化技巧

# 技巧 1:使用列表推导式(更快)# 传统方式squares = []for i in range(10):    squares.append(i ** 2)# 列表推导式squares = [i ** 2 for i in range(10)]# 技巧 2:避免在循环中重复计算# 不好的做法for i in range(len(my_list)):    # len(my_list) 会被重复计算# 好的做法length = len(my_list)for i in range(length):    pass# 技巧 3:使用 enumerate 代替 range(len())# 不好的做法for i in range(len(fruits)):    print(i, fruits[i])# 好的做法for i, fruit in enumerate(fruits):    print(i, fruit)# 技巧 4:使用 zip 同时遍历多个列表names = ["张三", "李四", "王五"]scores = [85, 90, 78]for name, score in zip(names, scores):    print(f"{name}: {score}分")

最新文章

随机文章