🎯 本章你会学到:for/while 的 Python 式写法、默认参数、多返回值与作用域。建议边读边敲,每节练习先自己做,再展开答案对照。
Python 的循环写起来更像自然语言:for x in 序列 直接遍历元素,需要下标就用 enumerate,需要并行遍历就用 zip。
enumerate / zip / range
for i, name in enumerate(["Ann", "Bob"], start=1):
print(i, name)
for name, score in zip(["Ann", "Bob"], [90, 85]):
print(f"{name}={score}")
total = 0
for x in range(1, 101):
total += x
print("sum:", total)运行结果
1 Ann
2 Bob
Ann=90
Bob=85
sum: 5050
函数:默认参数与多返回值
函数的常用写法
def describe(name, score=0, *, extra=""):
return f"{name}: {score}{extra}"
print(describe("Ann", 90))
print(describe("Bob"))
print(describe("Cid", 88, extra=" (bonus)"))
def stats(nums):
return min(nums), max(nums), sum(nums) / len(nums)
lo, hi, avg = stats([3, 1, 4, 1, 5])
print(lo, hi, f"{avg:.2f}")运行结果
Ann: 90
Bob: 0
Cid: 88 (bonus)
1 5 2.80
- 默认参数:
def f(a, b=0);*之后的参数必须用关键字传(extra="...")。 - 可变参数:
*args收位置参数、**kwargs收关键字参数。 - 多返回值其实就是返回元组:
return lo, hi, avg,调用方lo, hi, avg = stats(...)。 - 函数内给变量赋值默认是局部变量;要改外层的用
global/nonlocal(但更好的做法是传参 + 返回)。
⚠️ 易错点 不要在遍历列表的同时删除元素。要么遍历副本,要么生成新列表(
[x for x in nums if 条件])。⚠️ 易错点
range(5) 是 0~4,右端取不到——和切片一样是左闭右开,这个约定在 Python 里到处都是。✍️ 本节练习
4.1必做判断质数
写函数 is_prime(n),读入 n(n ≥ 2),是质数输出 yes,否则 no。
输入 一个整数 n。
输出 yes 或 no。
样例输入
17样例输出
yes💡 提示 试除到 √n 即可:while i * i <= n。
✅ 查看参考答案与解析
def is_prime(n):
if n < 2:
return False
i = 2
while i * i <= n:
if n % i == 0:
return False
i += 1
return True
print("yes" if is_prime(int(input())) else "no")解析 print("yes" if 条件 else "no") 是 Python 里的三元表达式,比 if/else 分支更紧凑。
4.2挑战统计函数
读入 n 个整数,输出最小值、最大值和平均值(保留 2 位小数)。
输入 第一行 n;第二行 n 个整数。
输出 三行:min=、max=、avg=。
样例输入
6
5 3 9 1 7 4样例输出
min=1
max=9
avg=4.83💡 提示 min() / max() / sum() 都是内置函数,直接对列表用。
✅ 查看参考答案与解析
n = int(input())
nums = list(map(int, input().split()))
print(f"min={min(nums)}")
print(f"max={max(nums)}")
print(f"avg={sum(nums) / n:.2f}")解析 Python 内置的 min/max/sum 都是 C 实现的,比手写循环快,也短。