【发布时间】:2020-10-12 17:10:09
【问题描述】:
在我的 Python 课程中,我有一个关于斐波那契数的练习。 下面是第 4.1.5.7 章的全文。
我的问题是关于函数本身。特别是我对循环内部发生的事情感到困惑:
for i in range(3, n + 1):
sum = elem1 + elem2
elem1, elem2 = elem2, sum
return sum
在第三行中,您看到 elem1 逗号 elem2 等于 elem2 逗号和。什么意思?
有人可以逐步解释我如何解释这个循环的内容吗?
- 第 4.1.5.7 章全文:
一些简单的函数:斐波那契数 您熟悉斐波那契数列吗?
它们是使用非常简单的规则构建的整数序列:
序列的第一个元素等于一(Fib1 = 1) 第二个也等于一 (Fib2 = 1) 随后的每个数字都是前面两个数字的总和(Fibi = Fibi-1 + Fibi-2) 以下是一些第一个斐波那契数字:
fib1 = 1
fib2 = 1
fib3 = 1 + 1 = 2
fib4 = 1 + 2 = 3
fib5 = 2 + 3 = 5
fib6 = 3 + 5 = 8
fib7 = 5 + 8 = 13
你如何看待将它作为一个函数来实现?
让我们创建我们的 fib 函数并对其进行测试。这里是:
def fib(n):
if n < 1:
return None
if n < 3:
return 1
elem1 = elem2 = 1
sum = 0
for i in range(3, n + 1):
sum = elem1 + elem2
elem1, elem2 = elem2, sum
return sum
for n in range(1, 10): # testing
print(n, "->", fib(n))
仔细分析 for 循环体,并找出我们如何通过随后的斐波那契数移动 elem1 和 elem2 变量。
代码的测试部分产生以下输出:
1 -> 1
2 -> 1
3 -> 2
4 -> 3
5 -> 5
6 -> 8
7 -> 13
8 -> 21
9 -> 34
Cisco Networking Academy 上提供的资源 - 课程名称:PCAP - Programming Essentials in Python - 模块 4,第 4.1.5.7 章,标题为“创建函数 | 斐波那契数”。
【问题讨论】:
-
你应该阅读关于在 python 中解包的内容。
-
"elem1 comma elem2 is equal to elem2 comma sum" 更准确地说,
=应该被表述为“已分配”。这将帮助您避免编程中=和==之间的混淆。