Python 2.7获取用户input和操作为不带引号的string

我想从用户那里得到一个string,然后去操纵它。

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

有没有一种方法让testVar成为一个string,而不必让用户在引号中键入他的回复? 即“你好”与你好

如果用户键入Hello,则会出现以下错误:

NameError:名称“Hello”未定义

使用raw_input()代替input()

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

input()实际上将input评估为Python代码。 我build议不要使用它。 raw_input()返回用户input的逐字串。

函数input也会评估刚刚读取的数据为python代码,这不是你想要的。

通用的方法是像处理其他文件一样处理用户input(来自sys.stdin )。 尝试

 import sys sys.stdin.readline() 

如果要保持简短,可以使用与input相同的raw_input ,但省略评估。

如果你想在Python 2.x中使用input,而不是raw_input,那么这个技巧就会派上用场

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

之后,

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

将工作得很好。

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

我们可以在python 2中使用raw_inpu()函数,在python 3中使用input()函数默认情况下,input函数以string格式

对于其他数据types,您必须投入用户input

在Python 2中,我们使用raw_input()函数。 它等待用户键入一些input,然后按回车键,我们需要将该值存储在一个variables中,通过强制转换为我们所需的数据types。 使用types铸造时要小心

x = raw_input(“input一个数字:”)#Stringinput

x = int(raw_input(“input一个数字:”))#整数input

x = float(raw_input(“input浮点数:”))#浮点input

x = eval(raw_input(“input浮点数:”))#evalinput

在Python 3中,我们使用input()函数返回用户input值

x = input(“input一个数字:”)#Stringinput

如果你input一个string,int,float,eval,它会作为stringinput

x = int(input(“Enter a number:”))如果为intinput一个string,则整数input转换ValueError:int()

x = float(input(“input一个浮点数:”))#浮动input,如果你input一个stringfloat float ValueError:不能转换string浮动

x = eval(input(“input一个浮点数:”))#evalinput,如果你input一个stringeval转换NameError:名称''未定义这些错误也适用于Python 2

我的工作代码修复:

 import random import math print "Welcome to Sam's 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!") 

这是我的工作,以防万一,如果我将来需要移动到python 3安全失败。

def _input(msg): return raw_input(msg)

这个问题似乎在Python 3.4.2版本中得到了解决。

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

将工作正常。