Meine Aufgabe besteht darin, eine Reihe von Zahlen mit Hilfe einer Schleife zu addieren, und diese Schleife benötigt den Sentinel-Wert von 0
, damit sie anhält. Es sollte dann die Gesamtzahl der hinzugefügten Nummern anzeigen. Bis jetzt ist mein Code:
Aber wenn ich es ausführe, wird die Gesamtanzahl nicht gedruckt, nachdem ich 0
eingegeben habe. Es gibt nur "Enter a number or 0 to quit"
aus, obwohl es keine Endlosschleife ist.
Der Hauptgrund, warum Ihr Code nicht funktioniert, ist, weil break
die innerste Schleife (in diesem Fall Ihre while
loop) sofort beendet und somit Ihre Codezeilen nach der Pause nicht ausgeführt werden.
Dies kann leicht mit den Methoden behoben werden, auf die andere hingewiesen haben, aber ich würde vorschlagen, die Struktur Ihrer while
-Schleife ein wenig zu ändern.
Derzeit verwenden Sie:
Statt:
%Vor% Möglicherweise haben Sie einen Grund dafür, aber der Code, den Sie uns zur Verfügung gestellt haben, ist nicht sichtbar.
Wenn wir Ihren Code ändern, um die letztere Struktur zu verwenden, wird das allein das Programm vereinfachen und das Hauptproblem beheben.
Sie drucken auch "Enter a number or 0 to quit:"
mehrmals, was unnötig ist. Sie können es einfach an die input
übergeben und das reicht.
Der einzige "Nachteil" (nur Kosmetik) ist, dass wir number
vor der Schleife definieren müssen.
Beachten Sie auch, dass wir die total
-Nummer drucken möchten, nachdem die ganze Schleife beendet ist. Daher wird der Ausdruck am Ende nicht eingerückt und nicht in jedem Zyklus von while
ausgeführt. Schleife.
Wenn die Zahl 0 ist, ist das erste, was Sie tun, break
, wodurch die Schleife beendet wird.
Sie addieren die Zahl auch nicht zu der Summe, es sei denn, es ist 0, was nicht das ist, wonach Sie suchen.
%Vor%Sie waren sehr nah, aber Sie hatten ein Problem mit der Einrückung.
Erstens, warum all diese print
-Aussagen? Ich schätze, du versuchst es zu drucken, bevor du Eingaben machst. Dafür wird die untere Zeile ausreichen.
Zweitens, unterscheiden Sie zwischen dem, was Sie tun möchten, wenn nur die number==0
und was in jeder Iteration zu tun ist.
Sie möchten die folgende Anweisung in jeder Iteration so verwenden, wie jede Zahl mit total
hinzugefügt werden soll. Behalte es also außerhalb von if
block.
Und wenn number==0
, möchtest du zuerst print
etwas und dann break
die Schleife.
Stelle sicher, dass du zuerst mit total
hinzufügst und dann die Bedingung if
kontrollierst, denn wenn du einmal die Schleife durchbrochen hast, kannst du die Zahl später nicht mehr hinzufügen.
Also könnte die Lösung so sein,
%Vor% Wenn Sie break
vor Ihren anderen Code setzen, wird die Schleife beendet und Ihr Code danach break
wird nicht ausgeführt.
Übrigens können Sie try...except
verwenden, um den Fehler zu erfassen, wenn der Benutzer keine Nummer eingegeben hat: