TypeError in python - missing 1 required positional argument
我被困在这里。对于
1 | TypeError: wabbits() missing 1 required positional argument: 'k' |
我做错什么了?
1 2 3 4 5 6 | def wabbits(n, k): if n == 1: return 1 if n == 2: return 1 return wabbits(n-2)*k + wabbits(n-1) |
您的
1 2 | def wabbits(n, k): # 1 2 |
但是您的代码只调用一个:
1 2 | return wabbits(n-2)*k + wabbits(n-1) # ^^^ ^^^^ |
您还需要为
1 2 3 4 5 6 7 | def wabbits(n, k): if n == 1: return 1 if n == 2: return 1 return wabbits(n-2, k)*k + wabbits(n-1, k) # 1 2 1 2 |
事实上,这产生了19个:
1 2 3 4 5 6 7 8 9 | >>> def wabbits(n, k): ... if n == 1: ... return 1 ... if n == 2: ... return 1 ... return wabbits(n-2, k)*k + wabbits(n-1, k) ... >>> wabbits(5, 3) 19 |
几种解决方案,最简单的是:
1 2 3 4 5 6 7 8 | def wabbits(n, k): if n == 1: return 1 elif n == 2: return 1 return wabbits(n-2, k)*k + wabbits(n-1, k) r = wabbits(5, 3) |
但是,可以使用内部函数封装
1 2 3 4 5 6 7 8 9 10 11 12 | def wabbits(n, k): def bunnies(rn): if rn == 1: return 1 elif rn == 2: return 1 return bunnies(rn-2)*k + bunnies(rn-1) return bunnies(n) r = wabbits(5, 3) |
使用
您可以用两个参数调用函数,但问题是对
1 | wabbits(n-2) * k + wabbits(n-1) |
这是对