Вопрос

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

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

Это то, что у меня сейчас:

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

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

Это было полезно?

Решение

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

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

Другие советы

Теперь для следующей части мне нужно начать создавать список первых 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]
>>> 

Более элегантный ответ предоставляется Новиковым

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

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

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

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

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

код:

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]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top