通过前面的学习,大家对 Python 中的分支结构和循环结构已经有了初步的认知。分支结构和循环结构是构造程序逻辑的基础,它们的重要性不言而喻。对于初学者来说,理解语法相对容易,但遇到实际问题时往往难以下手;看懂别人的代码很容易,但要自己写出类似的代码却很难。这通常是因为练习量尚未达到熟练的程度。只要加强编程练习,通过量的积累产生质的变化,这个问题迟早都会解决。
经典案例
例子 1:100 以内的素数
说明:素数指的是只能被 1 和自身整除的正整数(不包括 1)。这里是对之前判断素数代码的升级版本,用于批量输出范围内的所有素数。
"""
输出 100 以内的素数
"""
for num in range(2, 100):
is_prime = True
# 只需判断到根号 num 即可,优化时间复杂度
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num)
解析:
在判断素数时,不需要遍历到 num-1,只需要遍历到 sqrt(num) 即可。如果 num 有大于其平方根的因子,那么必然有一个小于其平方根的对应因子。这种优化显著减少了循环次数,提高了程序效率。
例子 2:斐波那契数列
要求:输出斐波那契数列中的前 20 个数。
说明:斐波那契数列(Fibonacci sequence),通常也被称作黄金分割数列。数列的前两个数都是 1,从第三个数开始,每个数都是它前面两个数的和。该数列在现代物理、准晶体结构、化学等领域都有直接的应用。
"""
输出斐波那契数列中的前 20 个数
"""
a, b = 0, 1
for _ in range(20):
a, b = b, a + b
print(a)
解析:
上面循环中的 a, b = b, a + b 表示将变量 b 的值赋给 a,把 a + b 的值赋给 b。这是 Python 特有的元组解包赋值语法,允许在不使用临时变量的情况下交换或更新多个变量的值。通过这个递推公式,我们可以依次获得斐波那契数列中的数,且内存占用极低。


