2010-05-07 116 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