计算并生成完美的正方形

时间:2010-11-12 03:52:18

标签: python perfect-square

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

How many squares?: 5  
[1, 4, 9, 16, 25]

这是我到目前为止所做的:

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

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

6 个答案:

答案 0 :(得分:10)

使用列表理解:

[ a*a for a in xrange(1, n + 1) ]

答案 1 :(得分:4)

  

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

这是你可以得到帮助的东西。对于其他部分,请发布您的算法。

使用范围生成列表:

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

使用list comprehension获取x ^ 2的列表

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

诺维科夫提供了一个更优雅的答案

答案 2 :(得分: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)

答案 3 :(得分: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))

答案 4 :(得分:0)

或使用地图和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))

答案 5 :(得分: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]