【发布时间】:2018-05-16 14:29:51
【问题描述】:
我正在学习 Python 的基础知识并做一些手指练习。这个问题让我很困惑。我不知道我哪里做错了。问题是这样的:
给定一个整数数组,如果数字序列 1、2、3 出现在数组中的某个位置,则返回 True。
我的解决办法是:
def array123(nums):
arr1 = [1, 2, 3]
if len(nums) < 3:
return False
for i in range(len(nums)-2):
if nums[i:i+3] == arr1:
return True
else:
return False
我意识到这会给我 False 只要前 3 个字符,所以我将其更改为:
def array123(nums):
arr1 = [1, 2, 3]
if len(nums) < 3:
return False
for i in range(len(nums)-2):
print(nums[i:i+3])
if nums[i:i+3] == arr1:
return True
return False
这次成功了。我想知道我是否必须将“return False”移出最后一个 if 的子代码部分?
谢谢。
【问题讨论】:
-
如果第一个元素不是
1, 2, 3,您的初始解决方案将立即失败,并返回 False 而不检查列表的其余部分。你的第二种方法是正确的。您还有其他问题吗? -
不,我只是觉得将其移出循环会使代码看起来不那么整洁。但我想这是要走的路。