Подсчет и генерация идеальных квадратов
Мне нужно несколько советов о том, как написать программу на 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))