1

この完全なコードを Python で 1 行だけで記述するにはどうすればよいでしょうか。

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
4

3 に答える 3

6

どういたしまして

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

編集(説明):

まず、 while ループの代わりにfor ループrangeで使用できます。for ループの最後の引数は、毎回プラス 1 のデフォルトではなく、毎回 1 を引くための -1 です。

if ステートメントまたはループ内にステートメントが 1 つしかない場合、次の行に移動せずに 1 つのステートメントを同じ行に保持できます。

n の変数を作成する代わりに、一度しか使用されないため、単純にプラグインできます。sも同様です。

于 2013-02-03T06:17:07.497 に答える
3
for _ in range(input()):print"%.15f"%sum(1/(2.0*i+1)for i in range(input()))
于 2013-02-03T09:05:50.573 に答える
0

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

この質問に答えるには遅すぎることはわかっていますが、上記のコードでも同じ結果が得られます。さらに短くなります。短くする方法も模索中です。#CodeGolf #Python2.4

于 2014-11-05T18:09:51.937 に答える