【问题标题】:Python function returning Null type data返回 Null 类型数据的 Python 函数
【发布时间】:2020-01-20 07:12:57
【问题描述】:

我正在尝试计算给定值的“nth Fibonacci % m”。 (使用 pisano 的系列)。 这是终端正在显示的消息。

错误信息->

 100 2
    Traceback (most recent call last):
      File "fibag.py", line 27, in <module>
        print(huge_fibo(n,m))
      File "fibag.py", line 21, in huge_fibo
        return get_fibo(rem) % m
    TypeError: unsupported operand type(s) for %: 'NoneType' and 'int'



#uses python3
def pisano_len(m):
    prev=0
    next=1
    for i in range(m*m+1):
        prev,next=next,(prev+next)%m
        if(prev==0 and next==1):
            return i+1
def get_fibo(n):
    if(n<1):
        return n
    prev=0
    curr=1
    for i in range(n-1):
        (prev,curr)=(curr,prev+curr)
        return curr

def huge_fibo(n,m):
    rem=int(n%pisano_len(m))
    return get_fibo(rem) % m

if(__name__=='__main__'):


    n,m=map(int,input().split())
    print(huge_fibo(n,m))

想不出原因。

【问题讨论】:

    标签: python-3.x typeerror fibonacci nonetype


    【解决方案1】:

    这有点奇怪:

    for i in range(n-1):
        (prev,curr)=(curr,prev+curr)
        return curr
    

    循环运行 0 次或多次,具体取决于 n 的值。如果小于等于1,则运行0次,如果为2,则运行一次,一般运行n-1次。

    但是一个函数只能返回一次。所以即使 n 为 1000,该函数也会在循环第一次运行时立即返回,而循环的其余部分永远不会发生。

    如果它运行0次(n

    【讨论】:

    • 谢谢,这解决了代码中的一个逻辑错误。但是上面的响应解决了 Type 错误。
    • @varungupta:我的最后一行提到了同样的问题。这都是同一个逻辑错误。但谁得到复选标记并不重要。
    【解决方案2】:

    如果n == 1,您的get_fibo() 函数不会执行return 语句,实际上是返回None

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 2014-02-02
      • 2022-12-01
      • 1970-01-01
      • 2011-06-27
      • 2021-07-02
      • 2020-05-28
      相关资源
      最近更新 更多