如何在range()函数中包含上限?我不能加1,因为我的for循环看起来像:
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 :(得分:5)
只需在范围函数的第二个参数中添加一个:
range(1,math.floor(math.sqrt(x))+1)
你也可以使用它:
range(math.floor(math.sqrt(x)))
然后在循环中添加一个。然而,前者会更快。
另外请注意,除非您使用的是Python 3,否则您应该使用xrange而不是range,以获得成语/效率。更惯用的是,您也可以拨打int
而不是math.floor
。
答案 1 :(得分:4)
为什么不能简单地在range
来电的上限添加一个?
此外,您似乎想在第一行中引用n
,即:
for x in range(1,math.floor(math.sqrt(n)) + 1):
...假设您希望与C#片段具有相同的行为。