Wiem o funkcji uśpienia w module czasu, ale co, jeśli mam długi blok tekstu, który chcę, aby użytkownik przeczytał?
RandomPhobia
7
Po prostu użyj, printaby wyświetlić długi blok tekstu, a następnie input()lub raw_input('Press <ENTER> to continue')odpowiednio dla twojej wersji Pythona.
mhawke
8
W przypadku długich bloków tekstu najlepiej jest używać input()(lub raw_input()w Pythonie 2.x) do monitowania użytkownika, a nie opóźnienia czasowego. Szybcy czytelnicy nie będą chcieli czekać na opóźnienie, powolni czytelnicy mogą chcieć więcej czasu na opóźnienie, ktoś może zostać przerwany w czytaniu i będzie potrzebował dużo więcej czasu itp. Ponadto, jeśli ktoś często używa programu, on / może przyzwyczaić się do tego, jak to działa i nie będzie musiała nawet czytać długiego tekstu. Po prostu łatwiej jest pozwolić użytkownikowi kontrolować, jak długo blok tekstu jest wyświetlany do czytania.
Tak więc okazało się, że działa to bardzo dobrze w moich próbach kodowania. Po prostu utworzyłem funkcję na samym początku programu,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
a teraz mogę korzystać z tej pause()funkcji zawsze, gdy potrzebuję, tak jakbym pisał plik wsadowy. Na przykład w programie takim jak ten:
import osimport systemdef pause():
programPause = raw_input("Press the <ENTER> key to continue...")print("Think about what you ate for dinner last night...")
pause()
Oczywiście ten program nie ma celu i służy tylko jako przykład do celów, ale możesz dokładnie zrozumieć, o co mi chodzi.
UWAGA: W przypadku Pythona 3 będziesz musiał użyć, inputa nieraw_input
Więc rejestrujesz program obsługi dla sygnału SIGINT i czekasz na dowolny sygnał. Teraz spoza twojego programu (np. W bash) możesz uruchomić kill -2 <python_pid>, który wyśle sygnał 2 (tj. SIGINT) do twojego programu w Pythonie. Twój program zadzwoni do zarejestrowanego programu obsługi i zacznie działać.
Jak podkreślają komentarze mhawke i steveha , najlepszą odpowiedzią na to dokładne pytanie byłoby:
W przypadku długich bloków tekstu najlepiej jest używać input('Press <ENTER> to continue')(lub raw_input('Press <ENTER> to continue')w Pythonie 2.x) do monitowania użytkownika, a nie opóźnienia czasowego. Szybcy czytelnicy nie będą chcieli czekać na opóźnienie, powolni czytelnicy mogą chcieć więcej czasu na opóźnienie, ktoś może zostać przerwany w czytaniu i będzie potrzebował dużo więcej czasu itp. Ponadto, jeśli ktoś często używa programu, on / może przyzwyczaić się do tego, jak to działa i nie będzie musiała nawet czytać długiego tekstu. Po prostu łatwiej jest pozwolić użytkownikowi kontrolować, jak długo blok tekstu jest wyświetlany do czytania.
Trochę używałem tej metody, ale lubię też używać jej jako funkcji pause () i nie sądzę, by potrzebna była metoda exit (). def pause (): return raw_input ("Naciśnij Enter, aby kontynuować ...")
Myślę, że najlepszym sposobem na zatrzymanie wykonywania jest funkcja time.sleep (). jeśli chcesz zawiesić wykonywanie tylko w określonych przypadkach, możesz po prostu zaimplementować instrukcję if w następujący sposób:
import getpass
getpass.getpass("Press Enter to Continue")
Ukrywa wszystko, co wpisuje użytkownik, co pomaga wyjaśnić, że dane wejściowe nie są tutaj używane.
Ale pamiętaj, że na platformie OSX wyświetla klucz, który może być mylący.
Prawdopodobnie najlepszym rozwiązaniem byłoby samodzielne zrobienie czegoś podobnego do modułu getpass, bez wykonywania read -społączenia. Może dopasowanie koloru fg do bg?
Odpowiedzi:
Wydaje mi się w porządku (lub
raw_input()
w Pythonie 2.X). Alternatywnie możesz użyć,time.sleep()
jeśli chcesz wstrzymać na określoną liczbę sekund.źródło
print
aby wyświetlić długi blok tekstu, a następnieinput()
lubraw_input('Press <ENTER> to continue')
odpowiednio dla twojej wersji Pythona.input()
(lubraw_input()
w Pythonie 2.x) do monitowania użytkownika, a nie opóźnienia czasowego. Szybcy czytelnicy nie będą chcieli czekać na opóźnienie, powolni czytelnicy mogą chcieć więcej czasu na opóźnienie, ktoś może zostać przerwany w czytaniu i będzie potrzebował dużo więcej czasu itp. Ponadto, jeśli ktoś często używa programu, on / może przyzwyczaić się do tego, jak to działa i nie będzie musiała nawet czytać długiego tekstu. Po prostu łatwiej jest pozwolić użytkownikowi kontrolować, jak długo blok tekstu jest wyświetlany do czytania.Tylko w systemie Windows użyj:
źródło
Zakładam, że chcesz wstrzymać bez wprowadzania danych
Posługiwać się
time.sleep (sek.)
źródło
Tak więc okazało się, że działa to bardzo dobrze w moich próbach kodowania. Po prostu utworzyłem funkcję na samym początku programu,
a teraz mogę korzystać z tej
pause()
funkcji zawsze, gdy potrzebuję, tak jakbym pisał plik wsadowy. Na przykład w programie takim jak ten:Oczywiście ten program nie ma celu i służy tylko jako przykład do celów, ale możesz dokładnie zrozumieć, o co mi chodzi.
UWAGA: W przypadku Pythona 3 będziesz musiał użyć,
input
a nieraw_input
źródło
Miałem podobne pytanie i korzystałem z sygnału:
Więc rejestrujesz program obsługi dla sygnału SIGINT i czekasz na dowolny sygnał. Teraz spoza twojego programu (np. W bash) możesz uruchomić
kill -2 <python_pid>
, który wyśle sygnał 2 (tj. SIGINT) do twojego programu w Pythonie. Twój program zadzwoni do zarejestrowanego programu obsługi i zacznie działać.źródło
signal.pause
.Używam następujących dla
python
2 i 3, aby wstrzymać wykonywanie kodu do momentu naciśnięcia przez użytkownikaENTERźródło
Jak podkreślają komentarze mhawke i steveha , najlepszą odpowiedzią na to dokładne pytanie byłoby:
źródło
Bardzo prosty:
źródło
NameError: name 'raw_input' is not defined
źródło
Myślę, że najlepszym sposobem na zatrzymanie wykonywania jest funkcja time.sleep (). jeśli chcesz zawiesić wykonywanie tylko w określonych przypadkach, możesz po prostu zaimplementować instrukcję if w następujący sposób:
możesz zostawić gałąź else pustą.
źródło
Myślę, że podoba mi się ten soln.
Ukrywa wszystko, co wpisuje użytkownik, co pomaga wyjaśnić, że dane wejściowe nie są tutaj używane.
Ale pamiętaj, że na platformie OSX wyświetla klucz, który może być mylący.
Prawdopodobnie najlepszym rozwiązaniem byłoby samodzielne zrobienie czegoś podobnego do modułu getpass, bez wykonywania
read -s
połączenia. Może dopasowanie koloru fg do bg?źródło
Dzięki tej metodzie możesz wznowić program, naciskając dowolny określony klawisz, który:
ta sama metoda, ale w inny sposób:
Uwaga: możesz zainstalować
keyboard
moduł po prostu pisząc to w swojej powłoce lub cmd:źródło
źródło
Aby uzyskać zgodność z Pythonem 2/3, możesz użyć
input
za pośrednictwemsix
biblioteki:źródło