Trabalhar em um depurador e usar pontos de interrupção?
Gddc 19/07/12
Respostas:
219
Parece bom para mim (ou raw_input()no Python 2.X). Como alternativa, você pode usar time.sleep()se quiser pausar por um determinado número de segundos.
Eu sei sobre a função de suspensão no módulo de tempo, mas e se eu tiver um longo bloco de texto que desejo que o usuário leia?
RandomPhobia
7
Basta usar printpara exibir o longo bloco de texto e, em seguida, input()ou raw_input('Press <ENTER> to continue')conforme apropriado para sua versão do Python.
Mhawke
8
Para um longo bloco de texto, é melhor usar input()(ou raw_input()no Python 2.x) para solicitar ao usuário, em vez de um atraso de tempo. Leitores rápidos não querem esperar um atraso, leitores lentos podem querer mais tempo com atraso, alguém pode ser interrompido durante a leitura e querer muito mais tempo etc. Além disso, se alguém usar muito o programa, ele / ela pode se acostumar com o modo como funciona e nem precisa ler o texto longo. É mais fácil deixar o usuário controlar por quanto tempo o bloco de texto é exibido para leitura.
Então, achei que isso funcionou muito bem em meus esforços de codificação. Eu simplesmente criei uma função no início do meu programa,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
e agora posso usar a pause()função sempre que precisar, como se estivesse escrevendo um arquivo em lotes. Por exemplo , em um programa como este:
import osimport systemdef pause():
programPause = raw_input("Press the <ENTER> key to continue...")print("Think about what you ate for dinner last night...")
pause()
Agora, obviamente, este programa não tem objetivo e é apenas para fins de exemplo, mas você pode entender exatamente o que quero dizer.
NOTA: Para Python 3, você precisará usar, inputem vez deraw_input
Então você registra um manipulador para o sinal SIGINT e faz uma pausa esperando por qualquer sinal. Agora, de fora do seu programa (por exemplo, no bash), você pode executar kill -2 <python_pid>, o que enviará o sinal 2 (ou seja, SIGINT) para o seu programa python. Seu programa chamará seu manipulador registrado e continuará em execução.
Conforme apontado pelos comentários de mhawke e steveha , a melhor resposta para essa pergunta exata seria:
Para um longo bloco de texto, é melhor usar input('Press <ENTER> to continue')(ou raw_input('Press <ENTER> to continue')no Python 2.x) para solicitar ao usuário, em vez de um atraso de tempo. Leitores rápidos não querem esperar um atraso, leitores lentos podem querer mais tempo com atraso, alguém pode ser interrompido durante a leitura e querer muito mais tempo etc. Além disso, se alguém usar muito o programa, ele / ela pode se acostumar com o modo como funciona e nem precisa ler o texto longo. É mais fácil deixar o usuário controlar por quanto tempo o bloco de texto é exibido para leitura.
Eu usei esse método um pouco, mas também gosto de usá-lo como uma função pause () e acho que não há necessidade de exit (). def pause (): retorna raw_input ("Pressione Enter para continuar ...")
Eu acho que a melhor maneira de parar a execução é a função time.sleep (). se você precisar suspender a execução apenas em certos casos, poderá simplesmente implementar uma instrução if como esta:
import getpass
getpass.getpass("Press Enter to Continue")
Ele oculta o que o usuário digita, o que ajuda a esclarecer que a entrada não é usada aqui.
Mas esteja atento à plataforma OSX, pois exibe uma chave que pode ser confusa.
Provavelmente, a melhor solução seria fazer algo semelhante ao módulo getpass, sem fazer uma read -sligação. Talvez fazer com que a cor fg corresponda à bg?
Respostas:
Parece bom para mim (ou
raw_input()
no Python 2.X). Como alternativa, você pode usartime.sleep()
se quiser pausar por um determinado número de segundos.fonte
print
para exibir o longo bloco de texto e, em seguida,input()
ouraw_input('Press <ENTER> to continue')
conforme apropriado para sua versão do Python.input()
(ouraw_input()
no Python 2.x) para solicitar ao usuário, em vez de um atraso de tempo. Leitores rápidos não querem esperar um atraso, leitores lentos podem querer mais tempo com atraso, alguém pode ser interrompido durante a leitura e querer muito mais tempo etc. Além disso, se alguém usar muito o programa, ele / ela pode se acostumar com o modo como funciona e nem precisa ler o texto longo. É mais fácil deixar o usuário controlar por quanto tempo o bloco de texto é exibido para leitura.Para janelas, use apenas :
fonte
Presumo que você queira fazer uma pausa sem entrada
Usar
time.sleep (segundos)
fonte
Então, achei que isso funcionou muito bem em meus esforços de codificação. Eu simplesmente criei uma função no início do meu programa,
e agora posso usar a
pause()
função sempre que precisar, como se estivesse escrevendo um arquivo em lotes. Por exemplo , em um programa como este:Agora, obviamente, este programa não tem objetivo e é apenas para fins de exemplo, mas você pode entender exatamente o que quero dizer.
NOTA: Para Python 3, você precisará usar,
input
em vez deraw_input
fonte
Eu tive uma pergunta semelhante e estava usando sinal:
Então você registra um manipulador para o sinal SIGINT e faz uma pausa esperando por qualquer sinal. Agora, de fora do seu programa (por exemplo, no bash), você pode executar
kill -2 <python_pid>
, o que enviará o sinal 2 (ou seja, SIGINT) para o seu programa python. Seu programa chamará seu manipulador registrado e continuará em execução.fonte
signal.pause
.Eu uso o seguinte para
python
2 e 3 para pausar a execução do código até o usuário pressionarENTERfonte
Conforme apontado pelos comentários de mhawke e steveha , a melhor resposta para essa pergunta exata seria:
fonte
Muito simples:
fonte
NameError: name 'raw_input' is not defined
fonte
Eu acho que a melhor maneira de parar a execução é a função time.sleep (). se você precisar suspender a execução apenas em certos casos, poderá simplesmente implementar uma instrução if como esta:
você pode deixar o ramo else vazio.
fonte
Eu acho que gosto deste soln.
Ele oculta o que o usuário digita, o que ajuda a esclarecer que a entrada não é usada aqui.
Mas esteja atento à plataforma OSX, pois exibe uma chave que pode ser confusa.
Provavelmente, a melhor solução seria fazer algo semelhante ao módulo getpass, sem fazer uma
read -s
ligação. Talvez fazer com que a cor fg corresponda à bg?fonte
Por esse método, você pode retomar seu programa pressionando qualquer tecla especificada que você especificou:
mesmo método, mas de outra maneira:
Nota: você pode instalar o
keyboard
módulo simplesmente escrevendo isso em seu shell ou cmd:fonte
fonte
Para compatibilidade cruzada com Python 2/3, você pode usar
input
através dasix
biblioteca:fonte