Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数,该函数将Tribonnaci系列返回到一个数字_Python_Function_While Loop_Logic_Iteration - Fatal编程技术网

Python 函数,该函数将Tribonnaci系列返回到一个数字

Python 函数,该函数将Tribonnaci系列返回到一个数字,python,function,while-loop,logic,iteration,Python,Function,While Loop,Logic,Iteration,我正在尝试解决一个练习,该练习要求我编写一个函数,将一个整数作为输入,然后返回一个Tribonaci术语列表,直到输入值。我在很大程度上是“成功的”,但还有一个额外的条件是输出。这是我的代码: def tribonacci(m): tribs = [0, 0, 1] if m == 0 or m == 1: tribs = [0, 0] elif m == 2: tribs = [0, 0, 1] else: whi

我正在尝试解决一个练习,该练习要求我编写一个函数,将一个整数作为输入,然后返回一个Tribonaci术语列表,直到输入值。我在很大程度上是“成功的”,但还有一个额外的条件是输出。这是我的代码:

def tribonacci(m):
    tribs = [0, 0, 1]
    if m == 0 or m == 1:
        tribs = [0, 0]
    elif m == 2:
        tribs = [0, 0, 1]
    else:
        while tribs[-1] < m:
            tribs.append(tribs[-1] + tribs[-3] + tribs[-2])
    return tribs  
def tribonacci(m):
tribs=[0,0,1]
如果m==0或m==1:
tribs=[0,0]
elif m==2:
tribs=[0,0,1]
其他:
当TRIB[-1]

我知道问题在于while循环,它运行一个额外的迭代,因为最后一个元素仍然不大于m。但是,我无法立即看到如何修复此问题。我会求助于while-else循环,但我想看看其他一些建议。

只需比较一下即将用m生成的术语,如下所示:

def tribonacci(m):
    tribs = [0, 0, 1]
    if m == 0 or m == 1:
        tribs = [0, 0]
    elif m == 2:
        tribs = [0, 0, 1]
    else:
        while tribs[-1] + tribs[-3] + tribs[-2] < m:
            tribs.append(tribs[-1] + tribs[-3] + tribs[-2])

    return tribs
def tribonacci(m):
tribs=[0,0,1]
如果m==0或m==1:
tribs=[0,0]
elif m==2:
tribs=[0,0,1]
其他:
而TRIB[-1]+TRIB[-3]+TRIB[-2]