2010-05-07 79 views
2

如何在range()函数中包含上限?因为我的for循环看起来像我不能加1:包含范围上限()

for x in range(1,math.floor(math.sqrt(x))): 
    y = math.sqrt(n - x * x) 

但据我了解它实际上是1 < x < M我需要1 < x <= M添加1将彻底改变结果。 我想重写我的旧程序从C#到Python。这就是它的样子在C#:

for (int x = 1; x <= Math.Floor(Math.Sqrt(n)); x++) 
    double y = Math.Sqrt(n - x * x); 
+0

都没有。 '范围'给你'1 <= x dan04 2010-05-07 04:49:15

回答

5

只需添加一个到你的范围函数的第二个参数:

range(1,math.floor(math.sqrt(x))+1)

你也可以使用此:

range(math.floor(math.sqrt(x)))

然后在你的循环中添加一个。然而,前者会更快。作为补充说明,除非你使用Python 3,否则你应该使用xrange而不是range来表达成语/效率。更通俗地说,您也可以拨打int而不是math.floor

4

为什么你不能简单地在你的range呼叫的上限中添加一个?

而且,好像你要引用n在第一线,即:

for x in range(1,math.floor(math.sqrt(n)) + 1): 

...假设你希望有相同的行为,你的C#代码段。

+0

+1注意到OP的X代替错误 – 2010-05-07 00:22:48