2014-09-27 74 views
-2

我試圖想出一個簡單的線上檢測,如果一個整數是偶數,如果不加1使其成爲。所以,我想出了這個:總結1到偶數整數加倍結果

N = 62465 
N += 1 if bool(N % 2) else N 
print N 

此工作正常,如果N是奇數,但如果它甚至返回值。這裏發生了什麼?

+1

操作順序是這樣的:'N + =(1,如果布爾(N 2% )否則N)'。 – 2014-09-27 22:47:05

+2

你需要'else 0'而不是'else N'。或者只是:'N + = N%2' – 2014-09-27 22:47:08

+0

哦,我明白我現在的錯誤在哪裏。謝謝你們,任何人都會介意發表評論作爲結果,所以我可以將其標記爲已接受? – Gabriel 2014-09-27 22:48:15

回答

3

加倍N當它甚至其他的模數;你基本上是這樣做:

if N % 2: 
    N += 1 
else: 
    N += N 

你想使用N += 1 if N % 2 else 0代替(該bool()在條件語句隱含的)。

爲了簡化,你可以只添加N % 2因爲那將是對奇0偶數和1

N += N % 2 
+0

(我確信我之前在這裏發表過這個評論,奇怪我再也找不到它了)我喜歡你提出的非常簡單而優雅的方式。謝謝! – Gabriel 2014-09-28 02:36:01

1

這樣做的常用方法是分開然後相乘。

N = (N + 2 - 1)//2*2 

這適用於不在2.