侧边栏壁纸
博主头像
phphi

phphi's blog

  • 累计撰写 51 篇文章
  • 累计收到 0 条评论

Day06 - 循环结构

2026-4-24 / 0 评论 / 1 阅读

循环结构

概述

当某段代码需要重复执行时,使用循环结构。Python 中有两种构造循环的方式:for-inwhile

for-in 循环

适用于已知循环次数的场景:

for i in range(3600):
    print('hello, world')
    time.sleep(1)

range() 用法

表达式 说明
range(101) 0 到 100(不包含 101)
range(1, 101) 1 到 100
range(1, 101, 2) 1 到 100 的奇数,步长为 2
range(100, 0, -2) 100 到 1 的偶数,倒序

累加求和

# 1到100整数求和
total = 0
for i in range(1, 101):
    total += i
print(total)  # 5050

# 1到100偶数求和(用步长)
print(sum(range(2, 101, 2)))  # 2550

惯例:循环变量如果不需要使用,命名为 _

for _ in range(3600):
    print('hello, world')

while 循环

适用于循环次数不确定的场景:

total = 0
i = 1
while i <= 100:
    total += i
    i += 1
print(total)  # 5050

break 和 continue

  • break:跳出整个循环
  • continue:跳过本次循环,进入下一轮
# 找出第一个能整除x和y的数(即最大公约数)
for i in range(x, 0, -1):
    if x % i == 0 and y % i == 0:
        print(f'最大公约数: {i}')
        break

# 1到100偶数求和(用continue)
total = 0
for i in range(1, 101):
    if i % 2 != 0:
        continue
    total += i

嵌套循环

循环内部可以再放循环,用于二维问题:

# 打印九九乘法表
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f'{i}×{j}={i*j}', end='\t')
    print()

应用实例

实例1:判断素数

num = int(input('请输入正整数: '))
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
    if num % i == 0:
        is_prime = False
        break
print(f'{num}是素数' if is_prime else f'{num}不是素数')

提示:只需检查到 √n 即可,因子总是成对出现。

实例2:最大公约数(欧几里得算法)

x = int(input('x = '))
y = int(input('y = '))
while y % x != 0:
    x, y = y % x, x
print(f'最大公约数: {x}')

实例3:猜数字游戏

import random

answer = random.randrange(1, 101)
counter = 0
while True:
    counter += 1
    num = int(input('请输入: '))
    if num < answer:   print('大一点')
    elif num > answer: print('小一点')
    else:
        print('猜对了!')
        break
print(f'你一共猜了{counter}次')

总结

  • 循环次数确定用 for-in,不确定用 while
  • break 终止循环,continue 跳过本次循环
  • 嵌套循环注意缩进和执行顺序
  • 算法:穷举法(逐一尝试)、欧几里得算法(辗转相除)