如果列表“数字”在某处的3旁边包含3,则此函数应返回True。
函数“ has_33”应接受列表参数,因此此循环可完美运行:-
def has_33(nums):
for i in range(0, len(nums)-1):
if nums[i:i+2] == [3,3]:
return True
return False
但是当我以这种形式进行操作时:-
def has_33(nums):
for i in range(0,len(nums)-1):
if nums[i:i+2] == [3,3]:
return print("True")
else:
if i == len(nums)-1:
return print("False")
如果数组不包含条件,则无法打印“ False”。
那么为什么第一个循环虽然相同,但第二个循环却不起作用?
答案 0 :(得分:2)
您不应设置以下条件:
});
功能内。即使这样做,也请使用:
if i == len(nums)-1:
因为if i == len(nums)-2:
将永远不会成为i
(请参见上面的循环条件)
答案 1 :(得分:1)
num == len(nums)-1
从未求值True
,因为num是一个列表,而不是整数。
更大的问题是,整个else子句是不必要的,因为您可以让python退出循环,然后执行print(“ False”)。此外,'我建议采用以下解决方案:
from itertools import tee
def has_33(nums):
num1, num2 = tee(nums)
next(num2)
for a, b in zip(num1, num2):
if [a, b] == [3, 3]:
print("True")
return
print("False")