Frage

brauche ich einige Ratschläge, wie ein Python-Programm zu schreiben, wo es eine Liste der ersten n perfekter Quadrate in Listenformat gibt. Die Ausgabe sollte wie folgt aussehen:

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

Das ist, was ich habe, so weit:

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

Jetzt für den nächsten Teil brauche ich eine Liste der ersten n Quadrate zu erstellen. Alle Vorschläge, wie? Vielen Dank für Ihre Zeit und Beratung.

War es hilfreich?

Lösung

Verwenden Sie eine Liste Verständnis:

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

Andere Tipps

Jetzt für den nächsten Teil muss ich anfangen, eine Liste der ersten n Quadrate zu erstellen. Alle Vorschläge, wie? Vielen Dank für Ihre Zeit und Beratung.

Dies ist etwas, das man mit geholfen werden kann. Für den anderen Teil, posten Sie Ihren Algorithmus.

Verwenden Sie reichen eine Liste zu generieren:

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

Verwenden Liste Verständnis Liste von x ^ 2

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

Eine elegantere Antwort wird von Novikov versehen

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

oder

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

Jemand erwähnte Generatoren - das ist, wie Sie sie in diesem Fall verwendet werden:

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

oder mit Karte und einer Lambda-Funktion

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

Wenn Sie es wünschen, beginnend bei 1

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

code:

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

, wobei n eine Benutzereingabe für die Anzahl der Quadrate er will.

Wenn n=5 dann die Ausgabe sieht wie folgt:

[1, 4, 9, 16, 25]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top