1

我怎样才能在 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
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())))

编辑(解释):

首先,您可以在range中使用for 循环,而不是 while 循环。for 循环中的最后一个参数是 -1 表示每次减 1,而不是默认的每次加 1。

如果 if 语句或循环中只有一条语句,则可以将一条语句保留在同一行中,而无需转到下一行。

无需创建 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 回答