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則上面的語句將返回,如果有。
添加回答
舉報
