2010-11-12 2 views
-2

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

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

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

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

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

+3

@justin: Есть две части проблемы. Зная алгоритм и реализуя его в python. Предоставьте алгоритм, а затем вы можете руководствоваться тем, как его реализовать с помощью python. – pyfunc

+116

Спасибо всем, кто помог Джастину с его университетским заданием: ваши решения - его решения. Джастин уже некоторое время контролируется персоналом курса и вскоре встретится с деканом, чтобы обсудить его будущую академическую карьеру. – 2010-12-11 19:10:01

ответ

10

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

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

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

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

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

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

может объяснить, что такое карта и лямбда? – 2010-11-12 04:03:28

+0

@justin: эти вещи обычно обескуражены. Нет необходимости изучать его, и это плохой стиль, чтобы написать его. http://www.artima.com/weblogs/viewpost.jsp?thread=98196 – bukzor

4

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

Более изящный ответ обеспечивается Новиков

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

код:

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

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

Если n=5 то вывод выглядит следующим образом:

 
[1, 4, 9, 16, 25] 
Смежные вопросы