例题 1 while 循环基础:重复输出与计数

演示 while 循环的基本使用:重复输出、简单计数器,以及 continue 关键字的用法。

Python
# 重复输出10次
i = 0
while i < 10:
    print("我爱Python")
    i = i + 1

# 输出1到5,跳过3(使用 continue)
i = 0
while i < 5:
    i += 1
    if i == 3:
        continue   # 跳过3
    print(i)    # 输出 1 2 4 5
例题 2 for-in 与 range():求累加和

使用 for-inrange() 计算 1+2+3+…+100 的和,演示三种 range 参数用法。

Python
total = 0
for i in range(1, 101):
    total += i
print(total)    # 5050

# 用内置 sum 函数,更简洁
print(sum(range(1, 101)))   # 5050

# 1到100的偶数之和(步长为2)
print(sum(range(2, 101, 2)))    # 2550
例题 3 九九乘法表(嵌套循环)

经典的嵌套循环案例:外层控制行数,内层控制每行列数,用 end='\t' 保持对齐。

Python
# 第一种形式:完整矩形
for i in range(1, 10):
    for j in range(1, 10):
        print(f"{i}*{j}={i*j:2d}", end="  ")
    print()

# 第二种形式:下三角(标准九九表)
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f'{i}×{j}={i * j}', end='\t')
    print()
例题 4 判断素数

素数只能被1和自身整除。关键优化:循环只需检查到 √n,发现因子立即 break。

Python
num = int(input('请输入一个正整数: '))
end = int(num ** 0.5)   # 只需检查到根号n
is_prime = True
for i in range(2, end + 1):
    if num % i == 0:
        is_prime = False
        break
if is_prime:
    print(f'{num}是素数')
else:
    print(f'{num}不是素数')
例题 5 最大公约数(欧几里得算法)

欧几里得算法(辗转相除法)远比逐一遍历高效。对比两种方法,体会算法优化的价值。

Python
x = int(input('x = '))
y = int(input('y = '))
# 欧几里得算法:每次用余数替换较大的数
while y % x != 0:
    x, y = y % x, x
print(f'最大公约数: {x}')
例题 6 百钱百鸡(枚举法)

中国古代数学名题:百钱买百鸡。演示穷举法(暴力枚举)优化枚举两种思路。

Python
"""
一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱。
用一百钱买一百只鸡,各几只?
"""
# 优化方法:小鸡数量由公鸡和母鸡数量推算
for i in range(0, 21):      # 公鸡数量
    for j in range(0, 34):  # 母鸡数量
        k = 100 - j - i     # 小鸡数量
        if 5 * i + 3 * j + k / 3 == 100:
            print(f"公鸡:{i}  母鸡:{j}  小鸡:{k}")
例题 7 猜数字游戏(while True)

使用 while True + break 模式,猜对才退出循环,统计猜测次数。

Python
import random
answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    guess = int(input('猜一猜(1-100): '))
    if guess < answer:
        print('猜小了')
    elif guess > answer:
        print('猜大了')
    else:
        print(f'恭喜你,猜对了!共猜了{counter}次')
        break
例题 8 水仙花数(三位数)

水仙花数:各位数字的立方和等于该数本身,如 153 = 1³+5³+3³。遍历所有三位数找出全部水仙花数。

Python
for num in range(100, 1000):
    bai = num // 100
    shi = num // 10 % 10
    ge  = num % 10
    if bai ** 3 + shi ** 3 + ge ** 3 == num:
        print(num)
# 输出:153  370  371  407