【发布时间】:2021-09-08 10:01:54
【问题描述】:
我正在尝试编写一个 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]))
我预计第一次运行会返回 False,因为它正在寻找包含 4 个元素的列表中的索引 6,而第二次运行会返回 True,因为它正在寻找索引 2。实际发生的是两次运行都返回 @987654325 @。我认为可能在 if 块内有 return 会导致问题,所以我尝试在 if 块内分配另一个变量“answer”并将此变量作为函数的结束语句返回,但得到了相同的结果:
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
我很茫然。除了解决此问题的替代方法之外,我还想了解为什么这种方法特别不起作用。
【问题讨论】:
-
list在 python 中是一个内置函数,所以现在你将它隐藏在你的函数中,所以使用不同的名称。 -
但为什么不只是
return n < len(list)? (抛开list是一个错误的变量名,正如@Khaled 提到的那样)或者更好,只是在您打算调用此函数的任何地方捕获IndexError? -
您应该在此处提问之前使用调试器。了解 pdb 和一般调试。
标签: python list function boolean