Como é que eu uso a entrada raw no Python 3

import sys
print (sys.platform)
print (2 ** 100)
raw_input( )

estou a usar o Python 3.1 e não consigo que o raw_ input "congele"o pop-up dos. O livro que estou a ler é de 2.5 e estou a usar 3.1

O que devo fazer para resolver isto?

Author: Martijn Pieters, 2009-06-05

8 answers

raw_input() foi renomeado para input()

De http://docs.python.org/dev/py3k/whatsnew/3.0.html

 773
Author: balpha, 2009-06-05 08:52:46

Isto funciona no Python 3.X e 2.x:

# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
 94
Author: Cees Timmerman, 2013-03-13 11:34:04

Uma forma fiável de resolver isto é

from six.moves import input

O Six é um módulo que se sobrepõe a muitos dos pontos de dor de base de código 2/3.

 32
Author: tacaswell, 2015-07-28 21:05:42

Em Python 3.xx você só precisa {[[0]} não raw_input()

 14
Author: Efs, 2012-02-23 14:25:04

Como outros indicaram, a função raw_input foi renomeada para input no Python 3.0, e você realmente seria melhor servido por um livro mais atualizado, mas eu quero salientar que existem maneiras melhores de ver a saída do seu script.

Pela sua descrição, acho que está a usar o Windows, guardou um ficheiro .py e depois está a fazer duplo-click nele para o executar. A janela de terminal que aparece fecha assim que o seu programa termina, para que não possa ver qual o resultado do seu o programa era. Para resolver isso, seu livro recomenda a adição de um raw_input / input declaração para esperar até que o utilizador carregue em enter. No entanto, como você já viu, se algo correr mal, como um erro em seu programa, essa Declaração não será executada e a janela fechará sem que você seja capaz de ver o que correu mal. Você pode achar mais fácil usar um comando-prompt ou ocioso.

Usar uma linha de comandos

Quando estiver a olhar para a janela de pastas que contém o seu programa Python, mantenha deslocamento para baixo e clique com o botão direito em qualquer lugar na área de fundo branco da janela. O menu que aparece deverá conter um item "Abrir a janela de comandos aqui". (Acho que isto funciona no Windows Vista e no Windows 7.) Isto irá abrir uma janela de pedido de comandos que se pareça com isto:
    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

    C:\Users\Weeble\My Python Program>_

Para executar o seu programa, escreva o seguinte (substituindo o nome do seu programa):

    python myscript.py

...e pressione enter. (Se você tiver um erro de que "python" não é um comando reconhecido, veja http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) quando o seu programa terminar de correr, quer termine com sucesso ou não, a janela permanecerá aberta e a linha de comandos irá aparecer de novo para que escreva outro comando. Se quiser executar o seu programa de novo, poderá carregar na seta para cima para recordar o comando anterior que introduziu e carregar em enter para o executar de novo, em vez de ter de escrever sempre o nome do ficheiro.

Uso IDLE

IDLE é um editor de programas simples que vem instalado com Python. Entre outros recursos, ele pode executar seus programas em uma janela. Carregue com o botão direito no seu ficheiro .py e escolha "Editar em inactivo". Quando o seu programa aparecer no editor, carregue em F5 ou escolha "Executar o módulo" do menu "Executar". Seu programa será executado em uma janela que permanece aberta após o fim do seu programa, e na qual você pode inserir comandos Python para executar imediatamente.

 13
Author: Weeble, 2013-08-06 12:31:40

A solução do Timmerman funciona muito bem ao executar o código, mas se não quiser obter erros Undefined name ao usar o pyflakes ou um linter semelhante, poderá usar o seguinte em vez disso:

try:
    import __builtin__
    input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
    pass
 6
Author: jmagnusson, 2013-08-20 09:59:45

Aqui está um pedaço de código que eu coloquei em meus scripts que eu não quero executar em py2 / 3-ambiente agnóstico:

# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)

Agora pode usar o real_ raw_ input. É bastante caro, mas curto e legível. O uso de entrada raw é normalmente caro no tempo (à espera de entrada), por isso não é importante.

Em teoria, você pode até mesmo atribuir o raw_ Input em vez do real_raw_ input, mas pode haver módulos que verificam a existência do raw_ input e se comportam de acordo. É melhor ficar do lado seguro.

 5
Author: ChewbaccaKL, 2014-09-22 11:02:21
Provavelmente não é a melhor solução, mas antes de vir para cá, fiz isto de imediato para continuar a trabalhar sem ter uma pausa rápida do estudo.
def raw_input(x):
  input(x)

Então quando eu executar raw_input('Enter your first name: ') sobre o guião em que eu estava a trabalhar, ele captura-o como faz input() faria.

Pode haver uma razão para não fazer isto, que ainda não tenha visto!
 1
Author: Danijel-James W, 2017-08-25 04:50:25