我如何在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
答案 0 :(得分:5)
欢迎你
for t in range(int(input()), 0, -1): print '%.15f' % sum(1/(2.0*i+1) for i in range(int(input())))
编辑(解释):
首先,您可以在for loop中使用range而不是while循环。 for循环中的最后一个参数是-1,每次减1,而不是每次减去1。
如果if语句或循环中只有一个语句,则可以将一个语句保留在同一行中,而不必转到下一行。
您可以简单地将其插入,而不是创建n的变量,因为它只被使用一次。同样适用于s。
答案 1 :(得分:3)
for _ in range(input()):print"%.15f"%sum(1/(2.0*i+1)for i in range(input()))
答案 2 :(得分:0)
exec"print sum((-1.)**i/(i-~i)for i in range(input()));"*input()
我知道我回答这个问题已经太晚了。但是上面的代码给出了相同的结果。 它会变得更短。我也想方设法缩短它。 #CodeGolf#Python2.4