我試圖想出一個簡單的線上檢測,如果一個整數是偶數,如果不加1使其成爲。所以,我想出了這個:總結1到偶數整數加倍結果
N = 62465
N += 1 if bool(N % 2) else N
print N
此工作正常,如果N
是奇數,但如果它甚至返回雙值。這裏發生了什麼?
我試圖想出一個簡單的線上檢測,如果一個整數是偶數,如果不加1使其成爲。所以,我想出了這個:總結1到偶數整數加倍結果
N = 62465
N += 1 if bool(N % 2) else N
print N
此工作正常,如果N
是奇數,但如果它甚至返回雙值。這裏發生了什麼?
您加倍您N
當它甚至其他的模數;你基本上是這樣做:
if N % 2:
N += 1
else:
N += N
你想使用N += 1 if N % 2 else 0
代替(該bool()
在條件語句隱含的)。
爲了簡化,你可以只添加N % 2
因爲那將是對奇0
偶數和1
:
N += N % 2
(我確信我之前在這裏發表過這個評論,奇怪我再也找不到它了)我喜歡你提出的非常簡單而優雅的方式。謝謝! – Gabriel 2014-09-28 02:36:01
這樣做的常用方法是分開然後相乘。
N = (N + 2 - 1)//2*2
這適用於不在2.
操作順序是這樣的:'N + =(1,如果布爾(N 2% )否則N)'。 – 2014-09-27 22:47:05
你需要'else 0'而不是'else N'。或者只是:'N + = N%2' – 2014-09-27 22:47:08
哦,我明白我現在的錯誤在哪裏。謝謝你們,任何人都會介意發表評論作爲結果,所以我可以將其標記爲已接受? – Gabriel 2014-09-27 22:48:15