Python中的Fibonacci - 解释这段代码?

use*_*310 0 python

我对编码很新,我一直在为Alex Bowers的初学者使用Python.在每一章的最后是一个实验练习,这个特别的一个是关于Fabonacci,章节本身是关于forLoops,whileLoops,Try Except和Finally,以及break和Continues.我对解决方案感到困惑,尤其是处理变量"set"的行,任何人都可以向我解释解决方案,因为他们没有在书中解释它...谢谢

f0 = 0
f1 = 1
set = False              
while True:
    fn = f0 + f1
    f0 = f1
    f1 = fn 
    if (fn > 100):
        set = True
    else:
        set = False
    print(fn)
    if (set == True):
        break 
Run Code Online (Sandbox Code Playgroud)

But*_*ass 5

我假设你知道Fibonacci序列是什么(如果没有,请阅读此内容).我会一次走这一步

这些是用于计算斐波纳契数列的变量. f0是序列中的第一个数字,f1是第二个.

f0 = 0
f1 = 1
Run Code Online (Sandbox Code Playgroud)

set 将用作以下循环的条件,以确定何时停止.

set = False   
Run Code Online (Sandbox Code Playgroud)

这是一个无限循环.

while True:
Run Code Online (Sandbox Code Playgroud)

计算序列中的下一个数字.

    fn = f0 + f1
Run Code Online (Sandbox Code Playgroud)

更新旧变量.

    f0 = f1
    f1 = fn 
Run Code Online (Sandbox Code Playgroud)

如果您在序列中得到的数字大于100,则设置setTrue.其他设置setFalse(已经是).

    if (fn > 100):
        set = True
    else:
        set = False
Run Code Online (Sandbox Code Playgroud)

打印当前序列号.

    print(fn)
Run Code Online (Sandbox Code Playgroud)

如果setTrue,请离开无限循环.

    if (set == True):
        break 
Run Code Online (Sandbox Code Playgroud)

注意:此代码可以轻松简化.我很惊讶它出现在书中.您可以将其简化为:

f0 = 0
f1 = 1
while True:
    fn = f0 + f1
    f0 = f1
    f1 = fn 
    print(fn)
    if (fn > 100):
        break 
Run Code Online (Sandbox Code Playgroud)