Подсчет и генерация идеальных квадратов - PullRequest
0 голосов
/ 12 ноября 2010

Мне нужен совет о том, как написать программу на Python, где она дает вам список первых n совершенных квадратов в формате списка.Вывод должен выглядеть следующим образом:

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

Это то, что у меня пока есть:

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

Теперь для следующей части мне нужно создать список первых n квадратов.Любые предложения о том, как?Спасибо за ваше время и советы.

Ответы [ 6 ]

10 голосов
/ 12 ноября 2010

Использовать понимание списка:

[ a*a for a in xrange(1, n + 1) ]
4 голосов
/ 12 ноября 2010

Теперь для следующей части мне нужно начать создавать список первых n квадратов. Любые предложения о том, как? Спасибо за ваше время и советы.

Это то, что вам может помочь. Для другой части опубликуйте свой алгоритм.

Использовать диапазон для создания списка:

>>> 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]
>>> 

Более элегантный ответ дает Новиков

2 голосов
/ 12 ноября 2010
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)
1 голос
/ 12 ноября 2010

Кто-то упомянул генераторы - вот как вы их используете в этом случае:

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))
0 голосов
/ 12 января 2012

код:

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

где n - пользовательский ввод для числа квадратов, которые он хочет.

Если n=5, то результат будет выглядеть так:

0 голосов
/ 12 ноября 2010

Или с картой и лямбда-функцией

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

, если вы хотите, чтобы она начиналась с 1

map(lambda x: x*x, range(1, n+1))
...