发现33:
给出一个整数列表,如果数组旁边有一个3,则返回True。 一个3的地方。
has_33([1, 3, 3]) → True
has_33([1, 3, 1, 3]) → False
has_33([3, 1, 3]) → False
这是我的做法:
def has_33(nums):
for i in range(0, len(nums)-1):
if nums[i] == 3 and nums[i+1] == 3:
return True
else:
return False
'''''''''''''''''''''''''''''''''''''' 答案是:
def has_33(nums):
for i in range(0, len(nums)-1):
if nums[i] == 3 and nums[i+1] == 3:
return True
return False
为什么第一种编码方法不起作用?有人可以解释吗?
答案 0 :(得分:1)
def has_33(nums):
for i in range(0, len(nums)-1):
print("iteration ",i)
if nums[i] == 3 and nums[i+1] == 3:
return True
else:
return False
因此在上面的代码中,如果您看到代码从else
部分返回。此外,循环只执行一次。
您想要的是,循环应该运行完整长度,因此需要您最后返回False
。
答案 1 :(得分:0)
因为在您的示例中,第一次在另一个3旁边找不到3时返回False。并且您想等到返回False,直到它检查了所有列表。