为什么这个函数 return 对这个变量为真?
Why does this function return True for this variable?
参加 python 的在线课程,作业是打破循环并使功能正常工作。虽然我能够解决问题,但我不明白为什么函数 returns(并且应该)对数字 8 为“True”。
你能解释一下吗?
def is_power_of_two(n):
while n % 2 == 0 and n != 0:
n = n / 2
if n == 1:
return True
return False
print(is_power_of_two(0)) # False
print(is_power_of_two(1)) # True
print(is_power_of_two(8)) # True
print(is_power_of_two(9)) # False
我是这样解读的:
- 8除2余0:满足第一个条件
- 8不等于0:满足第二个条件
- 如果 (while) 两个条件都满足,则数字 (8) 除以 2,并将此值 (4) 分配给变量 n。
- 最后,它检查变量 n (4) 是否等于 1。由于 4 不等于 1,因此它应该 return False,但它 returns True。这是为什么?
"If" 和 "while" 在英语和 Python 中的意思并不完全相同(英语中的区别类似于 "when" vs "while")。
while
循环重复while(只要)条件为真;它不仅发生在 if 条件为真时。 只要满足条件,就执行循环体,然后就是re-checked条件。对于起始值 n = 8,循环执行了 3 次才停止。每次执行循环体,n
减半。
n = 8
: 8是偶数而不是0,所以循环执行并继续。
n = 4
: 4是偶数而不是0,所以循环执行并继续。
n = 2
: 2是偶数而不是0,所以循环执行并继续。
n = 1
:1不是偶数,循环结束
- 循环后:n = 1,所以我们return正确。
参加 python 的在线课程,作业是打破循环并使功能正常工作。虽然我能够解决问题,但我不明白为什么函数 returns(并且应该)对数字 8 为“True”。
你能解释一下吗?
def is_power_of_two(n):
while n % 2 == 0 and n != 0:
n = n / 2
if n == 1:
return True
return False
print(is_power_of_two(0)) # False
print(is_power_of_two(1)) # True
print(is_power_of_two(8)) # True
print(is_power_of_two(9)) # False
我是这样解读的:
- 8除2余0:满足第一个条件
- 8不等于0:满足第二个条件
- 如果 (while) 两个条件都满足,则数字 (8) 除以 2,并将此值 (4) 分配给变量 n。
- 最后,它检查变量 n (4) 是否等于 1。由于 4 不等于 1,因此它应该 return False,但它 returns True。这是为什么?
"If" 和 "while" 在英语和 Python 中的意思并不完全相同(英语中的区别类似于 "when" vs "while")。
while
循环重复while(只要)条件为真;它不仅发生在 if 条件为真时。 只要满足条件,就执行循环体,然后就是re-checked条件。对于起始值 n = 8,循环执行了 3 次才停止。每次执行循环体,n
减半。
n = 8
: 8是偶数而不是0,所以循环执行并继续。n = 4
: 4是偶数而不是0,所以循环执行并继续。n = 2
: 2是偶数而不是0,所以循环执行并继续。n = 1
:1不是偶数,循环结束- 循环后:n = 1,所以我们return正确。