我可以在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