2012-07-19 22 views
92

He estado usando la función de entrada como una manera de hacer una pausa en mis guionesmanera correcta para hacer una pausa programa en Python

print("something") 
wait = input("PRESS ENTER TO CONTINUE.") 
print("something") 

hay una manera formal para hacer esto?

+1

trabajo en un depurador y usar puntos de interrupción? –

+2

Soy un principiante en esto, pero según http://docs.python.org/2/library/functions.html#input, 'input (prompt)' es equivalente a 'eval (raw_input (prompt))' . Probablemente eso no es lo que quieres. – user100464

+1

@ user100464: si es Python 3, está bien; 'input' en Py3 es lo mismo que' raw_input' de Py2. Si es Py3, lo que tienen está bien, aunque no es necesario asignar el valor de retorno si nunca se usa. – ShadowRanger

Respuesta

139

Me parece bien (o raw_input() en Python 2.X). Alternativamente, puede usar time.sleep() si desea hacer una pausa durante un cierto número de segundos.

import time 
print("something") 
time.sleep(5.5) # pause 5.5 seconds 
print("something") 
+0

Conozco la función de reposo en el módulo de tiempo pero, ¿qué ocurre si tengo un bloque de texto largo que deseo que el usuario lea? – RandomPhobia

+7

Simplemente use 'print' para visualizar el bloque largo de texto y luego' input() 'o' raw_input ('Presione para continuar') 'según corresponda para su versión de Python. – mhawke

+6

Para un bloque de texto largo, es mejor usar 'input()' (o 'raw_input()' en Python 2.x) para solicitar al usuario, en lugar de un retraso. Los lectores rápidos no querrán esperar un retraso, los lectores lentos querrán tener más tiempo para el retraso, alguien podría ser interrumpido mientras lo lee y desea mucho más tiempo, etc. Además, si alguien usa mucho el programa, él/ella ella puede acostumbrarse a cómo funciona y no necesita ni siquiera leer el texto largo. Es más sencillo permitir que el usuario controle cuánto tiempo se muestra el bloque de texto para leer. – steveha

4

Como ha señalado mhawke y steveha 's comentarios, la mejor respuesta a esta pregunta exacta sería:

Para un bloque de texto largo, es mejor usar input('Press <ENTER> to continue') (o raw_input('Press <ENTER> to continue') en Python 2.x) para solicitar al usuario, en lugar de un retraso. Los lectores rápidos no querrán esperar un retraso, los lectores lentos pueden querer más tiempo en el retraso, alguien podría ser interrumpido mientras lo lee y desea un mucho más tiempo, etc. Además, si alguien usa el programa mucho , él/ella puede acostumbrarse a cómo funciona y no necesita siquiera leer el texto largo . Es más sencillo permitir que el usuario controle cuánto tiempo se mostrará el bloque de texto para leer.

19

uso:

import os 
os.system("pause") 
+12

Esto es específico de Windows, mientras que todas las respuestas existentes son independientes de la plataforma. – lvc

4

he tenido una pregunta similar y que estaba usando la señal:

import signal 

def signal_handler(signal_number, frame): 
    print "Proceed ..." 

signal.signal(signal.SIGINT, signal_handler) 
signal.pause() 

Así se registra un controlador para el SIGINT señal y hacer una pausa en espera de alguna señal. Ahora desde fuera de su programa (por ejemplo, en bash), puede ejecutar kill -2 <python_pid>, que enviará la señal 2 (es decir, SIGINT) a su programa python. Su programa llamará a su controlador registrado y continuará funcionando.

6

Por lo tanto, he encontrado que esto funciona muy bien en mis esfuerzos de codificación. Simplemente creado una función en el comienzo de mi programa,

def pause(): 
    programPause = raw_input("Press the <ENTER> key to continue...") 

y ahora puedo usar la función pause() siempre que necesito igual que si yo estaba escribiendo un archivo por lotes. Por ejemplo , en un programa como este:

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() 

Ahora, evidentemente, este programa no tiene ningún objetivo y es sólo para fines de ejemplo, pero se puede entender con precisión lo que quiero decir.

NOTA: Para Python 3, tendrá que utilizar input en contraposición a raw_input

0

creo que la mejor manera de detener la ejecución es la función time.sleep(). si es necesario suspender la ejecución sólo en ciertos casos puede simplemente poner en práctica una sentencia if como esta:

if somethinghappen: 
    time.sleep(seconds) 

puede dejar la rama else vacía.

5

muy simple:

raw_input("Press Enter to continue ...") 
exit() 
+0

He usado este método un poco, sin embargo, también me gusta utilizarlo como una función de pausa() y no creo que haya una necesidad de exit(). def pause(): return raw_input ("Presione Enter para continuar ...") – jacktrader

1

de impresión ("Así es como se pausa")

entrada()

2

utilizo lo siguiente para python 2 y 3 para hacer una pausa en la ejecución de código hasta que el usuario presiona ENTRAR

import six 
if six.PY2: 
    raw_input("Press the <ENTER> key to continue...") 
else: 
    input("Press the <ENTER> key to continue...") 
Cuestiones relacionadas