从 Python 中的函数返回布尔值时出现意外结果
Unexpected result when returning a boolean from a function in Python
我正在尝试编写一个 Pyhon 函数来检查列表是否包含给定的索引号。
def ncheck(n, list):
for x in range(len(list)):
if n == x:
return True
else:
return False
我用以下参数测试了代码:
print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))
我期待第一个 运行 return False
因为它正在寻找具有 4 个元素的列表中的索引 6 和第二个 运行 return True
因为它正在寻找索引 2。实际发生的是两次运行 return False
。我认为可能在 if 块内有 return
导致了问题,所以我尝试在 if 块内分配另一个变量“answer”并 returning 这个变量作为函数的结束语句但是得到了同样的结果:
def ncheck(n, list):
for x in range(len(list)):
if n == x:
answer = True
else:
answer = False
return answer
print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))
False
False
我很茫然。不仅仅是解决此问题的替代方法,我想了解为什么此方法具体不起作用。
您的代码目前仅检查 第一个 号码,您的 else
旨在 运行 if all数字不匹配:
def ncheck(n, list):
for x in range(len(list)):
if n == x:
return True
return False # after exiting the for loop
print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))
Returns
False
True
此外,请注意 range
实际上能够作为 O(1) 操作执行此操作,因此执行此操作的首选方法(与 list
的长度无关)是:
def ncheck(n, list):
return n in range(len(list))
您可以查看了解更多详情。
我正在尝试编写一个 Pyhon 函数来检查列表是否包含给定的索引号。
def ncheck(n, list):
for x in range(len(list)):
if n == x:
return True
else:
return False
我用以下参数测试了代码:
print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))
我期待第一个 运行 return False
因为它正在寻找具有 4 个元素的列表中的索引 6 和第二个 运行 return True
因为它正在寻找索引 2。实际发生的是两次运行 return False
。我认为可能在 if 块内有 return
导致了问题,所以我尝试在 if 块内分配另一个变量“answer”并 returning 这个变量作为函数的结束语句但是得到了同样的结果:
def ncheck(n, list):
for x in range(len(list)):
if n == x:
answer = True
else:
answer = False
return answer
print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))
False
False
我很茫然。不仅仅是解决此问题的替代方法,我想了解为什么此方法具体不起作用。
您的代码目前仅检查 第一个 号码,您的 else
旨在 运行 if all数字不匹配:
def ncheck(n, list):
for x in range(len(list)):
if n == x:
return True
return False # after exiting the for loop
print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))
Returns
False
True
此外,请注意 range
实际上能够作为 O(1) 操作执行此操作,因此执行此操作的首选方法(与 list
的长度无关)是:
def ncheck(n, list):
return n in range(len(list))
您可以查看