import sys
print(sys.platform)
print(2**100)
raw_input()
Estou usando o Python 3.1 e não consigo raw_input
"congelar" o pop-up dos. O livro que estou lendo é para Python 2.5 e estou usando Python 3.1
O que devo fazer para corrigir isso?
python
python-3.x
Lonnie Price
fonte
fonte
Respostas:
A partir do Python 3,
raw_input()
foi renomeado parainput()
.Do que há de novo no Python 3.0, segundo item da seção Builtins .
fonte
input()
eraw_input()
.a = input()
pegará a entrada do usuário e a colocará no tipo correto. Por exemplo: se o usuário digitar 5, o valor ema
é o número 5.a = raw_input()
receberá a entrada do usuário e a colocará como uma string. Por exemplo: se o usuário digitar 5, o valor ema
é a string '5' e não um número inteiro. Pensei que poderia ser uma boa informação para iniciantes em python como eu.Isso funciona no Python 3.xe 2.x:
fonte
global input
na parte superior da função de chamada.import __builtin__; input = getattr(__builtin__, 'raw_input', input)
__builtin__
.__builtin__
é renomeado parabuiltins
no Python 3. Ambos estão disponíveis como__builtins__
no CPython.getattr(__builtins__, 'raw_input', input)
retorna o padrão quando importado no Python 2.7.2.Uma maneira confiável de resolver isso é
six é um módulo que corrige muitos dos 2/3 pontos problemáticos básicos do código.
fonte
from six.moves import input as raw_input
, você pode manterraw_input
seu script e executar usando as duas versões do Python.Como outros indicaram, a
raw_input
função foi renomeadainput
no Python 3.0, e você realmente seria melhor atendido por um livro mais atualizado, mas quero ressaltar que existem maneiras melhores de ver a saída do seu script .Na sua descrição, acho que você está usando o Windows, salvou um
.py
arquivo e clicou duas vezes nele para executá-lo. A janela do terminal exibida fecha assim que o programa termina, para que você não possa ver qual foi o resultado do programa. Para resolver isso, seu livro recomenda adicionar uma instruçãoraw_input
/input
para aguardar até que o usuário pressione Enter. No entanto, como você viu, se algo der errado, como um erro no seu programa, essa instrução não será executada e a janela será fechada sem que você possa ver o que deu errado. Você pode achar mais fácil usar um prompt de comando ou IDLE.Use um prompt de comando
Quando você estiver olhando para a janela da pasta que contém o seu programa Python, mantenha pressionada a tecla Shift e clique com o botão direito do mouse em qualquer lugar na área branca da janela. O menu exibido deve conter a entrada "Abrir janela de comando aqui". (Eu acho que isso funciona no Windows Vista e Windows 7.) Isso abrirá uma janela de prompt de comando que se parece com isso:
Para executar seu programa, digite o seguinte (substituindo o nome do script):
... e pressione enter. (Se você receber um erro que "python" não é um comando reconhecido, consulte http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) Quando o programa termina a execução, seja com êxito ou não, a janela permanecerá aberto e o prompt de comando aparecerá novamente para você digitar outro comando. Se você deseja executar o programa novamente, pressione a seta para cima para recuperar o comando anterior digitado e pressione enter para executá-lo novamente, em vez de digitar o nome do arquivo todas as vezes.
Use IDLE
O IDLE é um editor de programa simples que é instalado com o Python. Entre outros recursos, ele pode executar seus programas em uma janela. Clique com o botão direito do mouse no seu
.py
arquivo e escolha "Editar no IDLE". Quando o seu programa aparecer no editor, pressione F5 ou escolha "Executar módulo" no menu "Executar". Seu programa será executado em uma janela que permanece aberta após o término do programa e na qual você pode inserir comandos Python para serem executados imediatamente.fonte
pythonw -m idlelib.idle
A solução da Timmerman funciona muito bem ao executar o código, mas se você não deseja obter
Undefined name
erros ao usar pyflakes ou um linter similar, pode usar o seguinte:fonte
Redefining built-in 'input' (redefined-builtin)
,Unable to import '__builtin__' (import-error)
,Invalid constant name "input" (invalid-name)
.flake8
oupyflakes
não, o dia todo, com avisos sem sentido.Aqui está um pedaço de código que eu coloquei nos meus scripts que não quero executar no ambiente py2 / 3-agnóstico:
Agora você pode usar real_raw_input. É muito caro, mas curto e legível. O uso de entrada bruta geralmente custa muito tempo (aguardando entrada), portanto não é importante.
Em teoria, você pode até atribuir raw_input em vez de real_raw_input, mas pode haver módulos que verifiquem a existência de raw_input e se comportem de acordo. É melhor ficar do lado seguro.
fonte
Provavelmente não é a melhor solução, mas antes de vir para cá, fiz isso rapidamente para continuar trabalhando sem ter uma rápida pausa nos estudos.
Então, quando executo
raw_input('Enter your first name: ')
o script em que estava trabalhando, ele o captura como oinput()
faria.Pode haver uma razão para não fazer isso, que eu ainda não encontrei!
fonte
raw_input = input
?