我试图想出一个简单的在线来检测一个整数是否是偶数,如果没有加1则使其均匀。所以我想出了这个:
N = 62465
N += 1 if bool(N % 2) else N
print N
如果N
是奇数,这可以正常工作,但如果是偶数则返回 double 该值。这里发生了什么?
答案 0 :(得分: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
答案 1 :(得分:1)
经常使用的方法是分割然后乘以。
N = (N + 2 - 1)//2*2
这适用于非2的其他模块。