Подсчет и генерация идеальных квадратов

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

Сколько квадратов?: 5  
[1, 4, 9, 16, 25]

Это то, что я до сих пор:

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

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

6 ответов

Решение

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

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

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

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

Используйте диапазон для создания списка:

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

Используйте понимание списка, чтобы получить список х ^2

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

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

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)

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

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

Код:

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]

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

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

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

map(lambda x: x*x, range(1, n+1))
Другие вопросы по тегам