2014-09-27 76 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.