In einem Debugger arbeiten und Haltepunkte verwenden?
GDDC
Antworten:
219
Scheint mir raw_input()in Ordnung zu sein (oder in Python 2.X). Alternativ können Sie verwenden, time.sleep()wenn Sie eine bestimmte Anzahl von Sekunden pausieren möchten.
import time
print("something")
time.sleep(5.5)# pause 5.5 secondsprint("something")
Ich kenne die Schlaffunktion im Zeitmodul, aber was ist, wenn ich einen langen Textblock habe, den der Benutzer lesen soll?
RandomPhobia
7
Verwenden Sie einfach print, um den langen Textblock anzuzeigen, und dann input()oder raw_input('Press <ENTER> to continue')entsprechend Ihrer Python-Version.
Mhawke
8
Für einen langen Textblock ist es am besten, input()(oder raw_input()Python 2.x) zu verwenden, um den Benutzer aufzufordern, anstatt eine Zeitverzögerung. Schnelle Leser möchten nicht auf eine Verzögerung warten, langsame Leser möchten möglicherweise mehr Zeit für die Verzögerung, jemand wird möglicherweise beim Lesen unterbrochen und möchte viel mehr Zeit usw. Auch wenn jemand das Programm häufig verwendet, kann er / sie Sie kann sich daran gewöhnen, wie es funktioniert, und muss nicht einmal den langen Text lesen. Es ist nur freundlicher, den Benutzer steuern zu lassen, wie lange der Textblock zum Lesen angezeigt wird.
Ich fand, dass dies bei meinen Codierungsbemühungen sehr gut funktioniert. Ich habe einfach ganz am Anfang meines Programms eine Funktion erstellt.
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
und jetzt kann ich die pause()Funktion jederzeit verwenden , als ob ich eine Batch-Datei schreiben würde. Zum Beispiel in einem Programm wie diesem:
import os
import system
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")print("Think about what you ate for dinner last night...")
pause()
Natürlich hat dieses Programm kein Ziel und dient nur zum Beispiel, aber Sie können genau verstehen, was ich meine.
HINWEIS: Für Python 3 müssen Sie inputim Gegensatz zu verwendenraw_input
Ich hatte eine ähnliche Frage und benutzte das Signal:
import signal
def signal_handler(signal_number, frame):print"Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Sie registrieren also einen Handler für das Signal SIGINT und halten inne und warten auf ein Signal. Jetzt können Sie von außerhalb Ihres Programms (z. B. in Bash) ausführen kill -2 <python_pid>, wodurch Signal 2 (dh SIGINT) an Ihr Python-Programm gesendet wird. Ihr Programm ruft Ihren registrierten Handler auf und fährt fort.
Wie in den Kommentaren von Mhawke und Steveha hervorgehoben , wäre die beste Antwort auf diese genaue Frage:
Für einen langen Textblock ist es am besten, input('Press <ENTER> to continue')(oder raw_input('Press <ENTER> to continue')Python 2.x) zu verwenden, um den Benutzer aufzufordern, anstatt eine Zeitverzögerung. Schnelle Leser möchten nicht auf eine Verzögerung warten, langsame Leser möchten möglicherweise mehr Zeit für die Verzögerung, jemand wird möglicherweise beim Lesen unterbrochen und möchte viel mehr Zeit usw. Auch wenn jemand das Programm häufig verwendet, kann er / sie Sie kann sich daran gewöhnen, wie es funktioniert, und muss nicht einmal den langen Text lesen. Es ist nur freundlicher, den Benutzer steuern zu lassen, wie lange der Textblock zum Lesen angezeigt wird.
Ich habe diese Methode ein wenig verwendet, aber ich verwende sie auch gerne als pause () -Funktion, und ich glaube nicht, dass exit () erforderlich ist. def pause (): return raw_input ("Drücken Sie die Eingabetaste, um fortzufahren ...")
Ich denke, dass der beste Weg, um die Ausführung zu stoppen, die time.sleep () Funktion ist. Wenn Sie die Ausführung nur in bestimmten Fällen unterbrechen müssen, können Sie einfach eine if-Anweisung wie folgt implementieren:
import getpass
getpass.getpass("Press Enter to Continue")
Es verbirgt alles, was der Benutzer eingibt, um zu verdeutlichen, dass hier keine Eingabe verwendet wird.
Beachten Sie jedoch, dass auf der OSX-Plattform ein Schlüssel angezeigt wird, der möglicherweise verwirrend ist.
Die wahrscheinlich beste Lösung wäre, etwas Ähnliches wie das getpass-Modul selbst zu tun, ohne einen read -sAnruf zu tätigen . Vielleicht passt die fg-Farbe zur bg?
Antworten:
Scheint mir
raw_input()
in Ordnung zu sein (oder in Python 2.X). Alternativ können Sie verwenden,time.sleep()
wenn Sie eine bestimmte Anzahl von Sekunden pausieren möchten.quelle
print
, um den langen Textblock anzuzeigen, und danninput()
oderraw_input('Press <ENTER> to continue')
entsprechend Ihrer Python-Version.input()
(oderraw_input()
Python 2.x) zu verwenden, um den Benutzer aufzufordern, anstatt eine Zeitverzögerung. Schnelle Leser möchten nicht auf eine Verzögerung warten, langsame Leser möchten möglicherweise mehr Zeit für die Verzögerung, jemand wird möglicherweise beim Lesen unterbrochen und möchte viel mehr Zeit usw. Auch wenn jemand das Programm häufig verwendet, kann er / sie Sie kann sich daran gewöhnen, wie es funktioniert, und muss nicht einmal den langen Text lesen. Es ist nur freundlicher, den Benutzer steuern zu lassen, wie lange der Textblock zum Lesen angezeigt wird.Für Windows nur verwenden:
quelle
Ich gehe davon aus, dass Sie ohne Eingabe pausieren möchten
Verwenden
time.sleep (secs)
quelle
Ich fand, dass dies bei meinen Codierungsbemühungen sehr gut funktioniert. Ich habe einfach ganz am Anfang meines Programms eine Funktion erstellt.
und jetzt kann ich die
pause()
Funktion jederzeit verwenden , als ob ich eine Batch-Datei schreiben würde. Zum Beispiel in einem Programm wie diesem:Natürlich hat dieses Programm kein Ziel und dient nur zum Beispiel, aber Sie können genau verstehen, was ich meine.
HINWEIS: Für Python 3 müssen Sie
input
im Gegensatz zu verwendenraw_input
quelle
Ich hatte eine ähnliche Frage und benutzte das Signal:
Sie registrieren also einen Handler für das Signal SIGINT und halten inne und warten auf ein Signal. Jetzt können Sie von außerhalb Ihres Programms (z. B. in Bash) ausführen
kill -2 <python_pid>
, wodurch Signal 2 (dh SIGINT) an Ihr Python-Programm gesendet wird. Ihr Programm ruft Ihren registrierten Handler auf und fährt fort.quelle
signal.pause
.Ich verwende das Folgende für
python
2 und 3, um die Codeausführung anzuhalten, bis der Benutzer drücktENTERquelle
Wie in den Kommentaren von Mhawke und Steveha hervorgehoben , wäre die beste Antwort auf diese genaue Frage:
quelle
Sehr einfach:
quelle
NameError: name 'raw_input' is not defined
quelle
Ich denke, dass der beste Weg, um die Ausführung zu stoppen, die time.sleep () Funktion ist. Wenn Sie die Ausführung nur in bestimmten Fällen unterbrechen müssen, können Sie einfach eine if-Anweisung wie folgt implementieren:
Sie können den Zweig else leer lassen.
quelle
Ich denke, ich mag diese Lösung.
Es verbirgt alles, was der Benutzer eingibt, um zu verdeutlichen, dass hier keine Eingabe verwendet wird.
Beachten Sie jedoch, dass auf der OSX-Plattform ein Schlüssel angezeigt wird, der möglicherweise verwirrend ist.
Die wahrscheinlich beste Lösung wäre, etwas Ähnliches wie das getpass-Modul selbst zu tun, ohne einen
read -s
Anruf zu tätigen . Vielleicht passt die fg-Farbe zur bg?quelle
Mit dieser Methode können Sie Ihr Programm fortsetzen, indem Sie eine der angegebenen Tasten drücken:
gleiche Methode, aber auf andere Weise:
Hinweis: Sie können das
keyboard
Modul einfach installieren, indem Sie es in Ihre Shell oder cmd schreiben:quelle
quelle
Für die Cross Python 2/3 Kompatibilität können Sie
input
über die verwendensix
Bibliothek:quelle