每天都在头秃 2022-12-13 22:01 采纳率: 100%
浏览 31
已结题

Python程序输出结果不正确

问题遇到的现象和发生背景

我在用Python写一个得到一个指定长度的斐波那契数列的倒数几项时,发现我的程序要输出的结果不对,我一时看不出哪里有问题,希望能帮我看看
input:
4
5, 3
7, 0
7, 7
7, 8
expected output
5, 3, 2

13, 8, 5, 3, 2, 1, 1
invalid

遇到的现象和发生背景,请写出第一个错误信息
s=[]
def getFibonacci(n):
       if n<3:
        return 1 
       else:return getFibonacci(n-1)+getFibonacci (n-2)

N =int(input())
for i in range(N):
    line = list(map(int,input().split(", ")))
    n=line[0]
    d=line[1]
for j in range(1,n):
     s.append(getFibonacci(j))
if(n>=d and d!=0):
    for x in range(n-1,n-d,-1):
        print(s[x],end=", ")
    print(s[n-d-1])
elif(d==0):
    print()
else:
    print('invalid')



用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容

我的输入和我输出来的结果:
4
5, 3
7, 0
7, 7
7, 8
invalid
我有点不明白是为啥只输出最后一行的结果

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

4条回答 默认 最新

  • CSDN专家-showbo 2022-12-13 22:26
    关注

    缩进和输出倒数第几项代码逻辑都有问题

    
    def getFibonacci(n):
           if n<3:
            return 1 
           else:return getFibonacci(n-1)+getFibonacci (n-2)
    N =int(input())
    for i in range(N):
        line = list(map(int,input().split(", ")))
        n=line[0]
        d=line[1]
        s=[]
        for j in range(1,n):
             s.append(getFibonacci(j))
    
        if(n>=d and d!=0):
            print(', '.join(map(str,s[-d:])))#取后n项直接切片就行了,题主原来的代码会越界
        elif(d==0):
            print()
        else:
            print('invalid')
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 12月13日

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝