-1

我需要一些关于如何编写 Python 程序的建议,它会以列表格式为您提供前 n 个完美正方形的列表。输出应如下所示:

多少个正方形?:5  
[1、4、9、16、25]

这是我到目前为止所拥有的:

n = int(raw_input("How many squares? "))

现在对于下一部分,我需要创建前 n 个正方形的列表。关于如何做的任何建议?感谢您的时间和建议。

4

6 回答 6

10

使用列表推导:

[ a*a for a in xrange(1, n + 1) ]
于 2010-11-12T03:54:20.553 回答
4

现在对于下一部分,我需要开始创建前 n 个正方形的列表。关于如何做的任何建议?感谢您的时间和建议。

这是你可以得到帮助的事情。对于另一部分,发布您的算法。

使用 range 生成列表:

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用列表推导获取 x^2 的列表

>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> 

Novikov提供了一个更优雅的答案

于 2010-11-12T03:58:12.950 回答
2
n = int(raw_input("How many squares? "))
map((2).__rpow__, range(1, n+1))

或者

from operator import mul
n = int(raw_input("How many squares? "))
map(mul, *[range(1, n+1)]*2)
于 2010-11-12T04:08:45.383 回答
1

有人提到了生成器——这就是你在这种情况下使用它们的方式:

def sq(n):
    i=0
    while i<n:
        i+=1
        yield i*i

if __name__=="__main__":
    n = int(raw_input("How many squares? "))
    print list(sq(n))
于 2010-11-12T10:17:30.260 回答
0

代码:

list_squares=[]
for a in xrange(1, n+1):
 list_squares.append(a*a)
print list_squares

其中 n 是用户输入的他想要的正方形数量。

如果n=5那么输出如下所示:

[1、4、9、16、25]
于 2012-01-12T10:15:38.223 回答
0

或者使用 map 和 lambda 函数

n = int(raw_input("How many squares? "))
map(lambda x: x*x, range(n))

如果你想从 1 开始

map(lambda x: x*x, range(1, n+1))
于 2010-11-12T03:56:27.193 回答