Python-101 und Math-Logik - Liste Quadratwurzel zahlen kleiner als n

Bin ich stecken auf einem Python-101 Typ problem mit Schleifen. Hier sind die Anweisungen:

Den Platz zahlen sind die ganzen zahlen der form K × K, z.B. 9 ist eine quadratische Zahl, da 3 × 3 = 9. Schreiben Sie ein Programm, das liest eine ganze Zahl n von der input-und Ausgänge alle positiven Quadratzahlen kleiner als n, eine pro Zeile, in aufsteigender Reihenfolge. Zum Beispiel, wenn der Eingang 16, dann die richtige Ausgabe wäre

1
4
9

Dies ist, was ich habe, so weit, aber es irgendwie funktioniert, aber läuft ewig. Mein code erreicht nie die if-Anweisung, damit es nicht bricht, (bricht ab), bevor es auf 17.

Angenommen, n = 17.

n=int(input())
counter = 1
while counter * counter < n:
   for counter in range(1,n):
      a = counter*counter
      print(a)
   if a < n:
      break

Ergebnisse:

1
4
9
16
25
36
49
64
81
Was ist n im jeweiligen Schleife?
17. Ich glaube, ich erwähnte es. "Angenommen, n = 17."
Ah, sorry, habe ich übersehen.
Hier ist ein Tipp: Sie brauchen nur eine Schleife, aber hier haben Sie zwei. Hier ist eine andere: a endet als counter*counter. warum sollte man nur brechen, wenn a < n, das ist, wenn counter*counter < n? würden Sie nicht wollen, zu brechen, wenn Sie counter*counter > n?
Ich denke, es könnte sein, denn du brichst aus der for-Schleife, aber Sie werden nicht die änderung counter so dass die while-Schleife wird kontinuierlich ausgeführt

InformationsquelleAutor StacyM | 2013-09-01

Schreibe einen Kommentar