基本上,我需要一个将n除以2的函数,并返回它可以完成的次数.
编码到目前为止:
def div(n):
while n >= 0:
n / 2
return n
Run Code Online (Sandbox Code Playgroud)
我知道我必须使用while循环,但我对第三行编码没有信心.有人能告诉我我做错了什么吗?
例子:
>>> div(4)
2
>>> div(7)
2
Run Code Online (Sandbox Code Playgroud)
Eel*_*vex 19
整数n可以除以2:floor(log(n)/log(2))次.
(请注意,我将您的示例视为定义函数的预期行为。正如 Tomas 和 Carl 所指出的,目前描述不是特别清楚。)
最新版本的 Python 实际上提供了bit_length()一种关于整数的方法,可以很容易地找到答案。
虽然这并不能真正帮助您解决家庭作业问题(它为您提供了答案,但并不能帮助您理解为什么会这样),但您可以使用它来创建参考函数以与您的实际答案进行比较:
def expected(n):
return n.bit_length() - 1
>>> expected(4)
2
>>> expected(7)
2
>>> expected(33)
5
Run Code Online (Sandbox Code Playgroud)
需要考虑的几点:
0,1或 的输入期望的答案2。n在每次通过循环时更改 的值。否则,您的循环将永远不会结束。n你真正想要的值要返回?也许在循环过程中您应该跟踪其他一些东西,这些东西将成为您的返回值(仔细查看其他一些建议的答案应该有助于解决这一点)。