Travailler dans un débogueur et utiliser des points d'arrêt?
gddc
Réponses:
219
Cela me semble bien (ou raw_input()en Python 2.X). Vous pouvez également l'utiliser time.sleep()si vous souhaitez faire une pause pendant un certain nombre de secondes.
import time
print("something")
time.sleep(5.5)# pause 5.5 secondsprint("something")
Je connais la fonction de veille dans le module de temps, mais que faire si j'ai un long bloc de texte que je veux que l'utilisateur lise?
RandomPhobia
7
Utilisez simplement printpour afficher le long bloc de texte, puis input()ou raw_input('Press <ENTER> to continue')selon votre version de Python.
mhawke
8
Pour un long bloc de texte, il est préférable d'utiliser input()(ou raw_input()sur Python 2.x) pour inviter l'utilisateur, plutôt qu'un délai. Les lecteurs rapides ne voudront pas attendre un délai, les lecteurs lents voudront peut-être plus de temps sur le retard, quelqu'un pourrait être interrompu en le lisant et vouloir beaucoup plus de temps, etc. De plus, si quelqu'un utilise beaucoup le programme, il / elle peut s'habituer à son fonctionnement et n'a même pas besoin de lire le long texte. Il est plus simple de laisser l'utilisateur contrôler la durée d'affichage du bloc de texte pour la lecture.
Donc, j'ai trouvé que cela fonctionnait très bien dans mes efforts de codage. J'ai simplement créé une fonction au tout début de mon programme,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
et maintenant je peux utiliser la pause()fonction chaque fois que j'en ai besoin, comme si j'écrivais un fichier batch. Par exemple , dans un programme comme celui-ci:
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()
Maintenant, évidemment, ce programme n'a aucun objectif et n'est qu'à titre d'exemple, mais vous pouvez comprendre précisément ce que je veux dire.
REMARQUE: pour Python 3, vous devrez utiliser inputpar opposition àraw_input
J'ai eu une question similaire et j'utilisais le signal:
import signal
def signal_handler(signal_number, frame):print"Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Vous enregistrez donc un gestionnaire pour le signal SIGINT et faites une pause en attendant tout signal. Maintenant de l'extérieur de votre programme (par exemple dans bash), vous pouvez exécuter kill -2 <python_pid>, qui enverra le signal 2 (c'est-à-dire SIGINT) à votre programme python. Votre programme appellera votre gestionnaire enregistré et poursuivra son exécution.
Comme le soulignent les commentaires de mhawke et steveha , la meilleure réponse à cette question exacte serait:
Pour un long bloc de texte, il est préférable d'utiliser input('Press <ENTER> to continue')(ou raw_input('Press <ENTER> to continue')sur Python 2.x) pour inviter l'utilisateur, plutôt qu'un délai. Les lecteurs rapides ne voudront pas attendre un délai, les lecteurs lents pourraient vouloir plus de temps sur le retard, quelqu'un pourrait être interrompu en le lisant et vouloir beaucoup plus de temps, etc. De plus, si quelqu'un utilise beaucoup le programme, il / elle peut s'habituer à son fonctionnement et n'a même pas besoin de lire le long texte. Il est plus simple de laisser l'utilisateur contrôler la durée d'affichage du bloc de texte pour la lecture.
J'ai un peu utilisé cette méthode, mais j'aime aussi l'utiliser comme fonction pause () et je ne pense pas que exit () soit nécessaire. def pause (): return raw_input ("Appuyez sur Entrée pour continuer ...")
Je pense que la meilleure façon d'arrêter l'exécution est la fonction time.sleep (). si vous devez suspendre l'exécution uniquement dans certains cas, vous pouvez simplement implémenter une instruction if comme celle-ci:
import getpass
getpass.getpass("Press Enter to Continue")
Il cache tout ce que l'utilisateur tape, ce qui aide à clarifier que l'entrée n'est pas utilisée ici.
Mais attention, dans la plate-forme OSX, il affiche une clé qui peut prêter à confusion.
La meilleure solution serait probablement de faire quelque chose de similaire au module getpass vous-même, sans faire d' read -sappel. Peut-être que la couleur fg correspond au bg?
Réponses:
Cela me semble bien (ou
raw_input()
en Python 2.X). Vous pouvez également l'utilisertime.sleep()
si vous souhaitez faire une pause pendant un certain nombre de secondes.la source
print
pour afficher le long bloc de texte, puisinput()
ouraw_input('Press <ENTER> to continue')
selon votre version de Python.input()
(ouraw_input()
sur Python 2.x) pour inviter l'utilisateur, plutôt qu'un délai. Les lecteurs rapides ne voudront pas attendre un délai, les lecteurs lents voudront peut-être plus de temps sur le retard, quelqu'un pourrait être interrompu en le lisant et vouloir beaucoup plus de temps, etc. De plus, si quelqu'un utilise beaucoup le programme, il / elle peut s'habituer à son fonctionnement et n'a même pas besoin de lire le long texte. Il est plus simple de laisser l'utilisateur contrôler la durée d'affichage du bloc de texte pour la lecture.Pour Windows uniquement, utilisez:
la source
Je suppose que vous voulez faire une pause sans entrée
Utilisation
time.sleep (secondes)
la source
Donc, j'ai trouvé que cela fonctionnait très bien dans mes efforts de codage. J'ai simplement créé une fonction au tout début de mon programme,
et maintenant je peux utiliser la
pause()
fonction chaque fois que j'en ai besoin, comme si j'écrivais un fichier batch. Par exemple , dans un programme comme celui-ci:Maintenant, évidemment, ce programme n'a aucun objectif et n'est qu'à titre d'exemple, mais vous pouvez comprendre précisément ce que je veux dire.
REMARQUE: pour Python 3, vous devrez utiliser
input
par opposition àraw_input
la source
J'ai eu une question similaire et j'utilisais le signal:
Vous enregistrez donc un gestionnaire pour le signal SIGINT et faites une pause en attendant tout signal. Maintenant de l'extérieur de votre programme (par exemple dans bash), vous pouvez exécuter
kill -2 <python_pid>
, qui enverra le signal 2 (c'est-à-dire SIGINT) à votre programme python. Votre programme appellera votre gestionnaire enregistré et poursuivra son exécution.la source
signal.pause
.J'utilise ce qui suit pour
python
2 et 3 pour suspendre l'exécution du code jusqu'à ce que l'utilisateur appuie surENTERla source
Comme le soulignent les commentaires de mhawke et steveha , la meilleure réponse à cette question exacte serait:
la source
Très simple:
la source
NameError: name 'raw_input' is not defined
la source
Je pense que la meilleure façon d'arrêter l'exécution est la fonction time.sleep (). si vous devez suspendre l'exécution uniquement dans certains cas, vous pouvez simplement implémenter une instruction if comme celle-ci:
vous pouvez laisser la branche else vide.
la source
Je pense que j'aime ce soln.
Il cache tout ce que l'utilisateur tape, ce qui aide à clarifier que l'entrée n'est pas utilisée ici.
Mais attention, dans la plate-forme OSX, il affiche une clé qui peut prêter à confusion.
La meilleure solution serait probablement de faire quelque chose de similaire au module getpass vous-même, sans faire d'
read -s
appel. Peut-être que la couleur fg correspond au bg?la source
Par cette méthode, vous pouvez reprendre votre programme simplement en appuyant sur n'importe quelle touche spécifiée que vous avez spécifié que:
même méthode mais d'une autre manière:
Remarque: vous pouvez installer le
keyboard
module simplement en écrivant ceci dans votre shell ou cmd:la source
la source
Pour la compatibilité croisée Python 2/3, vous pouvez utiliser
input
via lasix
bibliothèque:la source