对Python非常陌生,我试图理解我如何得到正确的答案
编写代码:
term: 0 / number: 0
term: 1 / number: 1
term: 2 / number: 1
term: 3 / number: 2
term: 4 / number: 3
term: 5 / number: 5
我得到了正确的答案,但“其他”部分是如何工作的?
c = a + b
print(f'term: {term} / number: {c}')
a = b
b = c
有人可以向我解释一下上面的变量每次循环时如何变化吗?我不明白 c = 1 + 1 如何打印 c = 2 但之后如何打印 c = 3?
a = 1
b = 1
for term in range (50):
if term <= 1:
print(f'term: {term} / number: {term}')
elif term == 2:
print(f'term: {term} / number: 1')
else:
c = a + b
print(f'term: {term} / number: {c}')
a = b
b = c
正如您所指出的,我们第一次进行 else 部分时,我们应用以下作业:
c = a + b # <-- (1) + (1) = 2
a = b # <-- (1)
b = c # <-- (2)
因此,在第一次遍历 else 部分之后,b 是最近的斐波那契数(在本例中为 2),a 是之前的斐波那契数。 下次,我们将执行以下操作。
c = a + b # <-- (1) + (2) = 3
a = b # <-- (2)
b = c # <-- (3)
这样,b 已更新为下一个斐波那契数,a 已更新为 2,这是最近的斐波那契数,但现在是之前的一个。
以这种方式,c始终是最新的斐波那契数,并且该值被分配给b以便在下一个循环中使用,并且b的值最终被分配给a。
顺便说一句,如果您将代码重构为以下任意内容,则可以避免使用 if/elif/else 块的逻辑:
a = 1
b = 1
print('term 0 / number: 0')
print('term 1 / number: 1')
print('term 2 / number: 1')
for term in range (3,50):
c = a + b
print(f'term: {term} / number: {c}')
a = b
b = c
或者,
a = 0
b = 1
for term in range (50):
print(f'term: {term} / number: {a}')
c = a + b
a = b
b = c
以下方法也适用并删除变量 c:
a = 0
b = 1
for term in range (50):
print(f'term: {term} / number: {a}')
(a, b) = (b, a+b)
在数学中,斐波那契数(通常表示为 Fn )形成一个序列,即斐波那契数列,其中每个数字是前两个数字的和。该序列通常从 0 和 1 开始,尽管有些作者从 1 和 1 开始序列,有时(如斐波那契)从 1 和 2 开始。从 0 和 1 开始,序列中的前几个值是:[1]
0、1、1、2、3、5、8、13、21、34、55、89、144。
因此我们可以看到,为了得到下一个数字,我们将前两个数字相加。
现在让我们试运行您的代码
a = 1
b = 1
for term in range (50):
if term <= 1:
print(f'term: {term} / number: {term}')
elif term == 2:
print(f'term: {term} / number: 1')
else:
c = a + b
print(f'term: {term} / number: {c}')
a = b
b = c
前两行:-
a = 1
b = 1
指定系列中的第二个和第三个两个值。这样我们就可以使用它们来获取下一项。
然后在第三行:-
for term in range (50):
我们正在启动一个 for 循环,该循环将按照
range(50):
中的指定进行 50 次
注意:- 这控制系列打印的术语数量。将范围中的数字更改为您要打印的术语数。
下一个
if
声明:-
如果术语<= 1: print(f'term: {term} / number: {term}') this if statement deals with the condition for the first two terms. where the value of term is 0 and 1. we used the variable term which is in for loop in the print statement to print the term and its value.
elif
声明:-
elif 项 == 2: print(f'term: {term} / 数字: 1')
我们使用这个 elif 语句来打印第三项。因为我们需要第三项为 1 (0 + 1),所以我们使用 elif 语句将其硬输入到 print 语句中。
else:
c = a + b
print(f'term: {term} / number: {c}')
a = b
b = c
这个 else 语句处理
4th term
及其后面的术语。
c=a+b
将按照斐波那契数列中的要求添加前两项。
print(f'term: {term} / 数字: {c}')
这将打印术语和值。
那么,
a = b
b = c
将更新值到下学期。然后循环会以新值重新启动。