Python 2.7 получает пользовательский ввод и манипулирует как строку без котировок

Я хочу получить строку от пользователя, а затем манипулировать ею.

testVar = input("Ask user for something.")

Есть ли способ для testVar быть строкой без меня, когда пользователь вводит свой ответ в кавычки? то есть "Hello" или Hello

Если пользователь вводит Hello, я получаю следующую ошибку:

NameError: имя "Hello" не определено

Ответ 1

Используйте raw_input() вместо input():

testVar = raw_input("Ask user for something.")

input() фактически оценивает ввод как код Python. Я предлагаю никогда не использовать его. raw_input() возвращает строку, введенную пользователем.

Ответ 2

Функция input также будет оценивать данные, которые она только что прочитала, как код python, что на самом деле не так.

Общий подход заключается в том, чтобы обрабатывать ввод пользователя (от sys.stdin), как и любой другой файл. Попробуйте

import sys
sys.stdin.readline()

Если вы хотите сохранить его коротким, вы можете использовать raw_input, который совпадает с input, но пропускает оценку.

Ответ 3

Если вы хотите использовать ввод вместо raw_input в python 2.x, тогда этот трюк будет удобен

    if hasattr(__builtins__, 'raw_input'):
      input=raw_input

После чего

testVar = input("Ask user for something.")

будет работать нормально.

Ответ 4

testVar = raw_input("Ask user for something.")

Ответ 5

мы можем использовать функцию raw_inpu() в функции python 2 и input() в python 3 По умолчанию входная функция принимает ввод в виде формата строки

для другого типа данных вам необходимо ввести пользовательский ввод

В Python 2 мы используем функцию raw_input(). он ждет, когда пользователь наберет какой-то ввод и нажмите "возврат", и нам нужно сохранить значение в переменной путем кастинга в качестве нашего типа данных желания. Будьте осторожны при использовании литья типа

x = raw_input ( "Введите число:" ) # Строковый ввод

x = int (raw_input ( "Введите число:" )) # integer input

x = float (raw_input ( "Введите число с плавающей точкой:" )) #float input

x = eval (raw_input ( "Введите число с плавающей запятой:" )) #eval input

В Python 3 мы используем функцию input(), которая возвращает значение пользовательского ввода

x = input ( "Введите число:" ) # Строковый ввод

если вы введете строку, int, float, eval, она примет в качестве ввода строки

x = int (ввод ( "Введите число:" )) Вход #integer если вы введете строку для int cast ValueError: недействительный литерал для int() с базой 10:

x = float (ввод ( "Введите число с плавающей точкой:" )) #float input если вы введете строку для float cast ValueError: не удалось преобразовать строку в float

x = eval (ввод ( "Введите число с плавающей точкой:" )) # Обычный вход если вы введете строку для eval cast NameError: имя '' не определено Эти ошибки также применимы для python 2

Ответ 6

Мой рабочий код с исправлениями:

import random
import math
print "Welcome to Sam Math Test"
num1= random.randint(1, 10)
num2= random.randint(1, 10)
num3= random.randint(1, 10)
list=[num1, num2, num3]
maxNum= max(list)
minNum= min(list)
sqrtOne= math.sqrt(num1)

correct= False
while(correct == False):
    guess1= input("Which number is the highest? "+ str(list) + ": ")
    if maxNum == guess1:
        print("Correct!")
        correct = True
    else:
        print("Incorrect, try again")

correct= False
while(correct == False):
guess2= input("Which number is the lowest? " + str(list) +": ")
if minNum == guess2:
     print("Correct!")
     correct = True
else:
    print("Incorrect, try again")

correct= False
while(correct == False):
    guess3= raw_input("Is the square root of " + str(num1) + " greater than or equal to 2? (y/n): ")
    if sqrtOne >= 2.0 and str(guess3) == "y":
        print("Correct!")
        correct = True
    elif sqrtOne < 2.0 and str(guess3) == "n":
        print("Correct!")
        correct = True
    else:
        print("Incorrect, try again")

print("Thanks for playing!")

Ответ 7

Это моя работа, чтобы избежать безопасности в случае, если мне нужно будет перейти на python 3 в будущем.

def _input(msg):
  return raw_input(msg)

Ответ 8

Проблема, похоже, решена в версии 3.4.2 Python.

testVar = input("Ask user for something.")

Будет работать нормально.