代码之家  ›  专栏  ›  技术社区  ›  Aron Tesfay

“int”对象不可订阅

  •  0
  • Aron Tesfay  · 技术社区  · 7 年前

    我有以下python代码来获取第n个fiboncacci编号。我认为应该行得通。唯一的问题是,当我尝试在linux终端上运行它时,我会收到一条错误消息,说“int”对象不可订阅。我看不出错误是什么。我让她坐了将近一个小时试着调试它。

    import sys
    
    def fibo(n):
        x = 0
        y = 1
        for i in range(n):
            x = x+y
            y = y+x
            results = x,y
    
        if n%2==0:
            print(results[int(n//2)][1])
        else:
            print(results[int(n//2)][2])
    
    def main():
        var  = int(sys.argv[1])
        print(fibo(var))
    main()
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Austin A    7 年前

    该错误是由于您在打印答案时试图为int下标造成的。尝试以下操作:

    import sys
    
    def fibo(n):
        x = 0
        y = 1
        results = []
        for i in range(n):
            x = x+y
            y = y+x
            results.append((x,y))
    
        if n%2==0:
            print(results[int(n//2)][0])
        else:
            print(results[int(n//2)][1])
    
    def main():
        var  = int(sys.argv[1])
        print(fibo(var))
    main()