3 回答

TA貢獻1820條經(jīng)驗 獲得超9個贊
在最后一次迭代中,x減少到0所以while不進入循環(huán),并終止函數(shù)。由于它沒有顯式返回任何內(nèi)容,因此它隱式返回None,這是一個 false-y。
您可以if在while循環(huán)內(nèi)使用單個并使用while's 條件本身來指示偶數(shù):
def is_even(x) :
while x:
if x==1:
return False
x-=2
return True

TA貢獻1793條經(jīng)驗 獲得超6個贊
因為當x == 0它未通過您的while x檢查時(0 不是真的),所以它會在再次檢查您的條件之前退出循環(huán)。
順便說一句,檢查奇偶校驗的正常方法是使用模數(shù) ( %) 運算符。
x % 2 == 0 # is_even
x % 2 != 0 # is_odd

TA貢獻1831條經(jīng)驗 獲得超10個贊
在 Python 中,整數(shù)有True
和False
值。任何不是的整數(shù)0
,將始終求值True
,0
并將求值False
。
在您的代碼中,您使用了一個while
循環(huán),該循環(huán)僅在后續(xù)語句計算為 時運行True
。檢查時while x
,如果的值x
是0
(由于循環(huán)內(nèi)部的計算),則您的語句將與 相同while False
,不會運行內(nèi)部代碼。
為避免此問題,您可以使用該modulo
操作,它為您提供操作的其余部分。因此,x % 2
將返回0
,如果x
是偶數(shù),1
如果是奇數(shù)。您可以進行檢查并使用更少的操作在更少的行中返回正確的值。
return (x % 2 == 0)
True
如果沒有余數(shù),False
則上面的語句將返回,如果有。
添加回答
舉報