5. break 和 continue
猜数字游戏
随机生成一个 100 以内的整数,用户有 10 次猜测机会。猜对则提前结束(break),10 次用完仍未猜对则提示游戏结束。
python
import random as rd
number = rd.randint(0, 100)
for i in range(10):
choice = int(input("请输入你要猜测的数字:"))
if choice > number:
print("你猜大了")
elif choice < number:
print("你猜小了")
else:
print("你猜对了,真棒!")
print(f'你一共用了{i + 1}次机会')
break # 猜对了,终止循环
print(f'还剩{9 - i}次机会')
else:
# for-else:循环正常结束(未被 break)时执行
print('游戏结束,你没有猜到')
💡 for-else 语法
for 循环可以搭配 else:当循环正常结束(没有被 break 终止)时,else 块才会执行。这在"搜索"类问题中特别有用。
判断素数(break + 标志变量)
输入一个正整数,判断它是不是素数。素数是只能被 1 和自身整除的大于 1 的整数。
python
num = int(input('请输入一个正整数:'))
end = int(num ** 0.5) # 只需检查到 √num
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} 不是素数')
📝 样例输入:
输入
17
▶ 运行结果:
输出
请输入一个正整数:17
17 是素数
💡 为什么只需要检查到 √n?
如果 n 有因子 a,那么 n = a × b。如果 a 和 b 都大于 √n,则 a × b > n,矛盾。所以至少有一个因子 ≤ √n。检查到 √n 即可,大大减少循环次数。
求区间内的所有素数(for-else 应用)
python
start = int(input("请输入区间起始值:"))
end = int(input("请输入区间结束值:"))
for num in range(start, end + 1):
if num > 1:
for i in range(2, num):
if num % i == 0:
break # 不是素数
else:
print(num) # for-else:正常结束说明没有因子,是素数
📝 样例输入:
输入
10
50
▶ 运行结果:
输出
请输入区间起始值:10
请输入区间结束值:50
11
13
17
19
23
29
31
37
41
43
47