Wie man ein Programm in Python ordnungsgemäß beendet

8

Ich bin ein Mittelschüler, und ich fange an, Kodierung in Python zu lernen. Ich habe Video-Tutorials angeschaut, aber ich kann nicht herausfinden, wie man das Spiel beenden kann, wenn man q eintippt. hier was ich habe ..

%Vor%     
user1766994 23.10.2012, 01:33
quelle

3 Antworten

10

Q als Eingabe erhalten

%Vor%

Sie fragen nach Q als Eingabe, akzeptieren aber nur int . Also nimm den int -Teil ab:

%Vor%

Nun wird Quit sein, was auch immer der Benutzer eingegeben hat, also schauen wir nach "Q" statt nach True :

%Vor%

Anstelle von sys.exit(0) können Sie Ihren While-Look wahrscheinlich mit break oder nur return , wenn Sie in einer Funktion sind.

Ich empfehle auch nicht den Namen "Quit" für eine Variable, die nur Benutzereingaben speichert, da es am Ende verwirrend ist.

Denken Sie daran, dass die Einrückung in Python wichtig ist, also muss es sein:

%Vor%

Das kann aber nur ein Kopier- / Einfügefehler sein.

Einrückung und Syntax

Ich habe die Einrückung korrigiert und überflüssigen Code entfernt (da du die äußere Schleife und einige der print-Anweisungen duplizierst) und hast folgendes erhalten:

%Vor%

Dies gab mir einen Syntaxfehler:

  

blong @ ubuntu: ~ $ python3 chicken.py
    Datei "chicken.py", Zeile 23
      Wenn Wahl == 'q'
                     ^
  SyntaxError: Ungültige Syntax

Python sagt also, dass nach der if -Anweisung etwas nicht stimmt. Wenn Sie sich die anderen if -Anweisungen ansehen, werden Sie bemerken, dass diese am Ende die : fehlt, also ändern Sie sie in:

%Vor%

Also mit dieser Änderung läuft das Programm und scheint zu tun, was Sie wollen.

Einige Vorschläge

  • Ihre Anweisungen sagen "Drücken Sie Q zum Beenden", aber Sie akzeptieren nur "q" zum Beenden. Vielleicht möchten Sie beide akzeptieren. Python hat einen Operator namens or , der zwei Wahrheitswerte benötigt ( True oder False ) und gibt True zurück, wenn eine davon True ist (es tut tatsächlich mehr als das mit Werten neben True und False , siehe die Dokumentation, wenn Sie interessiert sind).

    Beispiele:

    %Vor%

    So können wir nach Q oder q mit if choice == "Q" or choice == "q": fragen.

    Eine andere Möglichkeit besteht darin, die Zeichenfolge in Kleinbuchstaben umzuwandeln und nur auf q zu prüfen, indem if choice.lower() == "q": verwendet wird. Wenn choice Q wäre, würde es zuerst in q umwandeln (mit dem .lower() ), dann mache den Vergleich.

  • Deine Nummer ist immer 17. Python hat eine Funktion namens random.randint () gibt dir eine zufällige Zahl, die das Spiel lustiger machen könnte. Zum Beispiel würde dies das Alter des Huhns zwischen 5 und 20 (inklusive) machen:

    %Vor%
Brendan Long 23.10.2012 01:39
quelle
1

Es gibt viele Möglichkeiten, bestimmte Dinge zu verlassen. Für Schleifen verwendet break und für Funktionen return . Wenn Sie jedoch bei Programmen das Programm beenden möchten, bevor die Interpretation abgeschlossen ist (Ende des Skripts), gibt es zwei verschiedene Arten von exit() -Funktionen. Es gibt sys.exit() , das Teil des sys -Moduls ist, und es gibt exit() und quit() , das ein eingebautes ist. % Co_de% ist jedoch für Programme gedacht, die nicht in IDLE (python interaktiv) sind, während die integrierten Funktionen sys.exit() und exit() für die Verwendung in IDLE vorgesehen sind.

    
IT Ninja 23.10.2012 04:13
quelle
1

Sie können die break verwenden. Anweisung zum Ausbrechen einer while Schleife:

%Vor%

Das bedeutet, dass der Interpreter die while -Schleife verlässt, weiter nach weiteren Befehlen sucht, um zu laufen, aber das Ende der Datei erreicht! Python wird dann automatisch beendet - Sie müssen nicht sys.exit

aufrufen

(nebenbei, du solltest sys.exit nur selten verwenden, es wird nur benutzt, um nicht-null exit-status , nicht , um zu steuern, wie Ihr Programm funktioniert, wie z. B. aus einer while -Schleife zu entkommen)

Schließlich ist das Hauptproblem mit dem Code, den Sie gepostet haben, die Einrückung - Sie müssen die entsprechende Anzahl von Leerzeichen am Anfang jeder Zeile setzen - wo Sie etwas haben wie:

%Vor%

Es muss wie folgt aussehen:

%Vor%

Gleiches gilt für while , for , if und so weiter.

    
dbr 23.10.2012 12:16
quelle

Tags und Links