我目前正在對 CodingBat 進行如下練習:
給定 2 個 int 值,如果一個是負數,一個是正數,則回傳 True。除非引數 "negative" 為 True,否則僅當兩者都為負時才回傳 True。
這是我最初的嘗試:
def pos_neg(a, b, negative):
if negative:
if (a and b < 0):
return True
else:
return False
elif (a < 0 and b > 0) or (a > 0 and b < 0):
return True
else:
return False
CodingBat 然后輸入值以查看您的代碼是否正確執行,并且由于某種原因,唯一無法正確運行的輸入是 (1,-1, True)。
第二次嘗試:
def pos_neg(a, b, negative):
if negative:
if (a < 0) and (b < 0):
return True
else:
return False
elif (a < 0 and b > 0) or (a > 0 and b < 0):
return True
else:
return False
這次嘗試沒有問題,所以它必須是第 3 行的變化。有人可以解釋 和 的區別if (a and b <0)嗎if (a < 0) and (b <0)?為什么 (1,-1, true) 的輸入會破壞它?
uj5u.com熱心網友回復:
if a and b < 0 在功能上等同于寫作
if a:
if b < 0:
# do something
相反if a < 0 and b < 0,它在功能上等同于寫作
if a < 0:
if b < 0:
# do something
uj5u.com熱心網友回復:
原因是運算式a and b正在執行布爾邏輯測驗a并b回傳真值
當給定整數時,它將 0 視為 false,將任何其他值視為 true。
該運算式實際上將回傳最后一個評估值,所以
1 and 0
> 0
1 and 1
> 1
1 and -1
> -1
-1 and 1
> 1
uj5u.com熱心網友回復:
if a and b < 0:
上面檢查了小于 0的a和的真值。設定為任何非 Falsy ( ) 的值都將使其變為真值。換句話說,以上等價于baNone, ‘’, []if bool(a) == True and b < 0:
您修改后的行解決了需要檢查兩個變數是否為負的問題。
if a < 0 and b < 0:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416341.html
標籤:
