[英]Why this loop doesn't work while the similar one works?
如果列表“ nums”在某处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”。
那么,为什么第一个循环可以工作而第二个循环却不能工作,尽管它们是相同的?
您不应该提出以下条件:
if i == len(nums)-1:
内部功能。 即使这样做,也请使用:
if i == len(nums)-2:
因为i
永远不会成为len(nums)-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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.