Я хочу получить строку от пользователя, а затем манипулировать ею.
testVar = input("Ask user for something.")
Есть ли способ для testVar быть строкой без того, чтобы пользователь вводил свой ответ в кавычках? то есть "Привет" против Привет
Если пользователь вводит Hello, я получаю следующую ошибку:
NameError: имя 'Hello' не определено
python
string
python-2.7
Майк Ли
источник
источник
input
автоматически вызываетeval()
Ответы:
Используйте
raw_input()
вместоinput()
:input()
фактически оценивает ввод как код Python. Я предлагаю никогда не использовать это.raw_input()
возвращает дословную строку, введенную пользователем.источник
input
теперь работает таким образом, и raw_input пропал.input()
это полезная функция, и я не рекомендую ее использовать.Функция
input
также будет оценивать данные, которые она только что прочитала, как код Python, что на самом деле не то, что вам нужно.Общий подход заключается в обработке пользовательского ввода (из
sys.stdin
), как и любой другой файл. ПытатьсяЕсли вы хотите, чтобы оно было коротким, вы можете использовать
raw_input
то же самое, чтоinput
и оценка, но опускается.источник
readline
- это даст функции, аналогичные bash (история из коробки, автозаполнение потребует некоторой работы)Мы можем использовать
raw_input()
функцию в Python 2 иinput()
функцию в Python 3. По умолчанию функция ввода принимает ввод в строковом формате. Для другого типа данных вы должны привести пользовательский ввод.В Python 2 мы используем
raw_input()
функцию. Он ждет, пока пользователь наберет какой-нибудь ввод и нажмет,return
и нам нужно сохранить значение в переменной, приведя его к типу данных, который нам нужен. Будьте осторожны при использовании литья типовВ Python 3 мы используем функцию input (), которая возвращает пользовательское значение ввода.
Если вы введете строку, int, float, eval, то она будет принимать в качестве ввода строки
Если вы введете строку для int cast
ValueError: invalid literal for int() with base 10:
Если вы введете строку для бросания с плавающей точкой
ValueError: could not convert string to float
Если вы введете строку для eval cast
NameError: name ' ' is not defined
Эти ошибки также применимы для Python 2.источник
Если вы хотите использовать input вместо raw_input в python 2.x, этот трюк пригодится
После которого,
будет работать просто отлично.
источник
источник
Мой рабочий код с исправлениями:
источник
Это моя работа по отказоустойчивости на случай, если в будущем мне понадобится перейти на python 3.
источник
Кажется, проблема решена в Python версии 3.4.2.
Будет работать нормально.
источник
input
эквивалентен Python 2.xraw_input
(см. Docs.python.org/3.0/whatsnew/3.0.html#builtins ); это проблема, специфичная для 2.x.