我试图想出一个简单的线上检测,如果一个整数是偶数,如果不加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