Как я могу написать этот полный код на python в одну строку или, может быть, я должен сказать что-то, что использует наименьший пробел или наименьшее количество символов?

t=int(input())
while t>0:
  n=int(input())
  s=sum(1/(2.0*i+1) for i in range(n))
  print "%.15f"%s
  t-=1
1
shalki 3 Фев 2013 в 10:14

3 ответа

Лучший ответ
for _ in range(input()):print"%.15f"%sum(1/(2.0*i+1)for i in range(input()))
3
Hyperboreus 3 Фев 2013 в 09:05

Пожалуйста

for t in range(int(input()), 0, -1): print '%.15f' % sum(1/(2.0*i+1) for i in range(int(input())))

РЕДАКТИРОВАТЬ (пояснение):

Во-первых, вместо цикла while можно использовать цикл для диапазон. Последний аргумент в цикле for - это -1, чтобы вычитать 1 каждый раз вместо значения по умолчанию плюс 1 каждый раз.

Если в операторе if или в цикле есть только один оператор, вы можете сохранить один оператор в той же строке, не переходя к следующей строке.

Вместо создания переменной n вы можете просто подключить ее, поскольку она используется только один раз. То же самое касается с.

5
jackcogdill 3 Фев 2013 в 06:24

exec"print sum((-1.)**i/(i-~i)for i in range(input()));"*input()

Я знаю, что слишком поздно для ответа на этот вопрос. Но приведенный выше код дает тот же результат. Это станет еще короче. Я также нахожу способы сократить это. #CodeGolf # Python2.4

0
Harsh Vardhan Ladha 5 Ноя 2014 в 18:09