Schreiben einer einfachen Funktion mit while

8

Eine Python-HOMEWORK-Zuweisung fordert mich auf, eine Funktion zu schreiben, "die eine positive ganze Zahl als Eingabe verwendet und eine Multiplikationstabelle ausgibt, die alle ganzzahligen Multiplikationen bis einschließlich der eingegebenen Zahl zeigt." (Auch mit while Schleife)

%Vor%

Ich weiß, wie ich anfangen soll, weiß aber nicht, was ich als nächstes tun soll. Ich brauche nur etwas Hilfe mit dem Algorithmus. Bitte schreiben Sie nicht den richtigen Code , weil ich lernen möchte. Erzählen Sie mir stattdessen die Logik und Argumentation. Hier ist mein Argument:

  1. Die Funktion sollte alle reellen Zahlen auf den gegebenen Wert (n) mal 1 kleiner als n oder (n-1)
  2. multiplizieren
  3. Die Funktion sollte alle reellen Zahlen zu n (einschließlich n) mal zwei kleiner als n oder (n-2)
  4. multiplizieren
  5. Die Funktion sollte alle reellen Zahlen in n (einschließlich n) mal drei kleiner als n oder (n-3) und so weiter multiplizieren, bis wir n
  6. erreichen
  7. Wenn die Funktion n erreicht, sollte die Funktion auch alle reellen Zahlen zu n (einschließlich n) mal n
  8. multiplizieren
  9. Die Funktion sollte dann anhalten oder in der while-Schleife "break"
  10. Dann muss die Funktion die Ergebnisse ausdrucken

So habe ich das bisher:

%Vor%

Bearbeiten: Hier ist, was ich nach all den wunderbaren Antworten von allen habe

%Vor%

Es ist immer noch nicht fertig! Zum Beispiel:

%Vor%

Und NICHT

%Vor%

Was mache ich falsch?

    
Andy_A̷n̷d̷y̷ 23.08.2013, 00:12
quelle

3 Antworten

4

Ich bin etwas verrückt nach der while loop-Anforderung, weil for -Schleifen dafür in Python besser geeignet sind. Aber Lernen ist Lernen!

Lass uns nachdenken. Warum ein While True ? Das wird niemals ohne eine break-Anweisung enden, was meiner Meinung nach lahm ist. Wie wäre es mit einer anderen Bedingung?

Was ist mit Variablen? Ich denke du brauchst vielleicht zwei. Eine für jede Nummer, die du multiplizieren willst. Und stelle sicher, dass du sie in der while Schleife hinzufügst.

Ich bin glücklich, diese Antwort hinzuzufügen, wenn Sie mehr Hilfe benötigen.

Deine Logik ist ziemlich gut. Aber hier ist eine Zusammenfassung von mir:

Stoppen Sie die Schleife, wenn das Produkt der 2 Zahlen n * n ist.

Drucken Sie in der Zwischenzeit jede Nummer und ihr Produkt. Wenn die erste Zahl nicht n ist, inkrementieren Sie sie. Sobald das der Fall ist, fange an, den zweiten zu inkrementieren. (Dies könnte mit if-Anweisungen geschehen, aber verschachtelte Schleifen wären besser.) Wenn sie beide n sind, bricht der while -Block ab, weil die Bedingung erfüllt ist.

Nach Ihrem Kommentar, hier ist ein kleines Stück von Hinweis-y psuedocode:

%Vor%

Wo soll die ursprüngliche Zuordnung von i und j sein? Was ist etwas, etwas anderes und etwas Spaß?

    
vroomfondel 23.08.2013, 00:19
quelle
2

Dieses Problem wird besser mit verschachtelten Schleifen implementiert, da Sie zwei Zähler haben. Ermitteln Sie zunächst die Grenzen (Start- und Endwerte) für die beiden Zähler. Initialisieren Sie Ihre Zähler zu Beginn der Funktion auf niedrigere Grenzwerte und testen Sie die oberen Grenzwerte in den while-Schleifen.

    
perreal 23.08.2013 00:19
quelle
2

Der erste Schritt in Richtung einer bestimmten Ausgabe besteht darin, das Muster in dieser Ausgabe zu erkennen.

%Vor%

Die Zahl rechts von = sollte trivial sein, da wir sie berechnen können, indem wir die anderen zwei Zahlen in jeder Zeile multiplizieren; diese zu erhalten, ist der Kern der Aufgabe. Stellen Sie sich die beiden Operanden von * als zwei Zähler vor, nennen wir sie i und j . Wir können sehen, dass i von 1 bis 3 zählt, aber für jedes i , j zählt von 1 bis 3 (was insgesamt ergibt von 9 Zeilen, allgemeiner wird es n 2 Zeilen geben. Daher könnten Sie versuchen, geschachtelte Schleifen zu verwenden, eine Schleife für i (von 1 bis n ) und eine weitere Schleife für j (von 1 bis n ) für jede i . Bei jeder Iteration der verschachtelten Schleife können Sie die Zeichenfolge mit i , j und i*j im gewünschten Format drucken.

    
arshajii 23.08.2013 00:21
quelle

Tags und Links