Domanda

Ho bisogno di qualche consiglio su come scrivere un programma Python dove ti dà un elenco dei primi n perfetti piazze in formato elenco. L'output dovrebbe essere simile a questo:

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

Questo è quello che ho finora:

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

Ora per la parte successiva ho bisogno di creare un elenco dei primi n piazze. Qualche suggerimento su come? Grazie per il vostro tempo e consigli.

È stato utile?

Soluzione

Usa un elenco di comprensione:

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

Altri suggerimenti

  

Ora per la parte successiva ho bisogno per iniziare a creare un elenco dei primi n piazze. Qualche suggerimento su come? Grazie per il vostro tempo e consigli.

Questo è qualcosa che può essere aiutato con. Per l'altra parte, pubblicare il vostro algoritmo.

Usa varia per generare un elenco:

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

Usa elenco di comprensione per ottenere l'elenco di x ^ 2

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

Una risposta più elegante è fornito da Novikov

n = int(raw_input("How many squares? "))
map((2).__rpow__, range(1, n+1))

o

from operator import mul
n = int(raw_input("How many squares? "))
map(mul, *[range(1, n+1)]*2)

Qualcuno ha menzionato generatori - come li si usa in questo caso:

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

O con mappa e una funzione lambda

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

se si vuole che a partire dal 1

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

codice:

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

dove n è l'input dell'utente per numero di caselle che vuole.

Se n=5 poi gli sguardi di uscita come:

[1, 4, 9, 16, 25]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top