Conteggio e generando quadrati perfetti
-
08-10-2019 - |
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.
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]