3 回答

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

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

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