Quero obter uma string de um usuário e depois manipulá-la.
testVar = input("Ask user for something.")
Existe uma maneira de testVar ser uma string sem que o usuário digite sua resposta entre aspas? ou seja, "Olá" vs. Olá
Se o usuário digitar Olá, eu recebo o seguinte erro:
NameError: o nome 'Hello' não está definido
python
string
python-2.7
Mike Lee
fonte
fonte
input
chama automaticamenteeval()
Respostas:
Use em
raw_input()
vez deinput()
:input()
realmente avalia a entrada como código Python. Sugiro nunca usá-lo.raw_input()
retorna a sequência literal digitada pelo usuário.fonte
input
agora funcione dessa maneira, e o raw_input se foi.input()
seja uma função útil e não recomendo usá-la.A função
input
também avaliará os dados que acabou de ler como código python, o que não é exatamente o que você deseja.A abordagem genérica seria tratar a entrada do usuário (de
sys.stdin
) como qualquer outro arquivo. ExperimentarSe você quiser mantê-lo breve, poderá usar
raw_input
o mesmo valor,input
mas omitir a avaliação.fonte
readline
- isso fornecerá recursos semelhantes ao bash (histórico pronto para uso, o preenchimento automático exigirá algum trabalho)Podemos usar a
raw_input()
função no Python 2 e ainput()
função no Python 3. Por padrão, a função input recebe uma entrada no formato string. Para outro tipo de dados, você deve converter a entrada do usuário.No Python 2, usamos a
raw_input()
função Ele espera que o usuário digite alguma entrada e pressionereturn
e precisamos armazenar o valor em uma variável, lançando como nosso tipo de dados desejado. Tenha cuidado ao usar a conversão de tipoNo Python 3, usamos a função input () que retorna um valor de entrada do usuário.
Se você digitar uma string, int, float, eval será usada como entrada de string
Se você digitar uma string para int cast
ValueError: invalid literal for int() with base 10:
Se você digitar uma sequência para a conversão de flutuação
ValueError: could not convert string to float
Se você digitar uma cadeia de caracteres para eval cast,
NameError: name ' ' is not defined
esses erros também se aplicam ao Python 2.fonte
Se você deseja usar entrada em vez de raw_input no python 2.x, esse truque será útil
Após o qual,
vai funcionar muito bem.
fonte
fonte
Meu código de trabalho com correções:
fonte
Este é o meu trabalho para evitar falhas no caso de precisar mudar para o python 3 no futuro.
fonte
O problema parece ter sido resolvido no Python versão 3.4.2.
Vai funcionar bem.
fonte
input
é equivalente ao Python 2.xraw_input
(consulte docs.python.org/3.0/whatsnew/3.0.html#builtins ); esse é um problema específico do 2.x.