Могу ли я написать следующий код в одной строке в 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
Я думаю '' 'означает' statement' – Beginner
@Beginner Да, я знаю, но это не помогает нам понять, что произойдет в коде. Как мы можем конденсировать это, если мы даже не можем знать, будет ли 'expr2' когда-либо« истинным »в первую очередь, или, если оно« True »к тому времени, будет ли оно« ложным »?Если это первый, мы можем сконденсировать его, просто выбросив «expr2». Если это последнее, мы можем выбросить 'while expr3'. И в любом случае код будет бесполезным. – furkle