我可以在python中单行写入以下代码吗?
在单行中写入python代码
t=int(input())
while t:
t-=1
n=int(input())
a=i=0
while not(n&1<<i):
i+=1
while n&1<<i:
n^=1<<i
a=a*2+1
i+=1
print(n^1<<i)+a/2
如果没有,我怎么能写这段代码在尽可能小的线?
(PS:我可以减少这6条线,它可以是任何更好)
我的解决方案t=int(input()) while t: t-=1;n=int(input());a=i=0 while not(n&1<<i):i+=1 while n&1<<i:n^=1<<i;a=a*2+1;i+=1 print(n^1<<i)+a/2
感谢
第一个问题 - 's1','s2','s7'会影响'expr1'的真实性吗? 's3'影响'expr2'吗? 's4','s5'或's6'会影响'expr3'吗?如果没有真正的代码,我们甚至无法告诉你是否有一些'while'循环会执行,更不用说执行是否会停止。 – furkle 2014-11-03 19:58:59
我认为's'代表'语句' – Beginner 2014-11-03 19:59:46
@Beginner是的,我知道,但这并不能帮助我们真正理解代码中会发生什么。如果我们甚至不知道'expr2'是否会首先是'真',或者如果它'真',那么它是否会被假'假',我们怎么能压缩它呢?如果它是前者,我们可以通过扔掉'expr2'来压缩它。如果是后者,我们可以扔掉'expr3'。无论如何,代码将是相当无用的。 – furkle 2014-11-03 20:01:09