[英]Python: don't understand difference
對於我對 python 的理解和我的英語,我真的很抱歉。 我剛開始學習 Python 真的不明白下兩個代碼之間的區別:
def arrayCheck(nums):
"""
find nums
"""
for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False
result = arrayCheck([1, 1, 2, 3, 1])
print(result)
運行此代碼時,結果為 True
下一個:
def arrayCheck(nums):
"""
find nums
"""
for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
else:
return False
result = arrayCheck([1, 1, 2, 3, 1])
print(result)
第二個代碼返回 False。
為什么? 提前致謝。
第一個代碼只能返回True
或None
。 在 return 語句之后 function 結束,因此第一個代碼永遠不會到達return False
語句。 如果前 3 個項目不是 1、2 和 3,則第二個代碼將返回False
,因為如果條件不成立,則返回False
。
我實際上會假設這是您感興趣的代碼 -
def arrayCheck(nums):
"""
find nums
"""
for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False
請參閱此處的 Python 控制流程。
在 python 中,縮進很重要,返回將打破 function 所以,在第一個代碼塊中你有
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False
兩個return
處於相同的縮進級別,因此如果滿足條件,它將 go 到第一行, return True
,查看返回並突破 function 之后忽略所有內容,但在第二個代碼塊中你有
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
else:
return False
因此,如果條件為真,它將返回真並突破 function 但如果條件不真,它將返回假並突破 function,因此它只執行您嘗試執行的迭代之一。
如果我理解您要正確執行的操作,這將是解決方案:
def arrayCheck(nums):
"""
find nums
"""
found = False
for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
found = True
return found
result = arrayCheck([1, 1, 2, 3, 1])
print(result)
這是有效的,因為它允許 function 檢查 for 循環中的每次迭代,如果找到數字,它將返回 true
在第一個代碼中, if條件沒有 else 部分。 在第二個代碼中, if條件有一個 else 部分。 因此,當第一個代碼中的條件為假時,它將進行第二次迭代,並且如果條件根據輸入為真,則返回真。 但是在第二個代碼中,如果條件為假,它將進入 else 部分並返回 False。
在第一個代碼中return False
永遠不會執行,因為它在 if 條件內,並且在它之前另一個return
語句return True
。 返回 function 后,執行將停止。
在第二個代碼中,如果條件第一次失敗,function 執行將停止,因為在 else 條件下return False
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.