在Python 2.7中获取用户输入并作为字符串处理,且无引号
我想从用户那里获取一个字符串,然后对它进行处理。
testVar = input("Ask user for something.")
有没有办法让testVar变成一个字符串,而不需要用户在输入时把他的回答用引号括起来?比如说,"Hello"和Hello的区别。
如果用户输入Hello,我会收到以下错误信息:
NameError: name 'Hello' is not defined
相关问题:
8 个回答
在Python 2中,我们可以使用raw_input()这个函数,而在Python 3中则用input()函数。默认情况下,这个输入函数会把输入的内容当作字符串处理。如果你想要其他类型的数据,就需要把用户输入的内容转换成你想要的类型。
在Python 2里,我们使用raw_input()函数。这个函数会等待用户输入一些内容,然后按return键。我们需要把这个输入的值存储到一个变量里,并根据需要转换成想要的数据类型。使用类型转换时要小心哦。
x = raw_input("Enter a number: ") #String input
x = int(raw_input("Enter a number: ")) #integer input
x = float(raw_input("Enter a float number: ")) #float input
x = eval(raw_input("Enter a float number: ")) #eval input
在Python 3中,我们使用input()函数,它会返回用户输入的值。
x = input("Enter a number: ") #String input
如果你输入的是字符串、整数、浮点数或使用eval,它都会把这些当作字符串来处理。
x = int(input("Enter a number: ")) #integer input
如果你输入一个字符串想要转换成整数,就会出现ValueError: invalid literal for int() with base 10:的错误。
x = float(input("Enter a float number: ")) #float input
如果你输入一个字符串想要转换成浮点数,就会出现ValueError: could not convert string to float的错误。
x = eval(input("Enter a float number: ")) #eval input
如果你输入一个字符串想要用eval转换,就会出现NameError: name ' ' is not defined的错误。这些错误在Python 2中也是适用的。
这个 input 函数会把用户输入的数据当作 Python 代码来执行,这其实并不是你想要的结果。
一个通用的方法是把用户输入(来自 sys.stdin)当作普通文件来处理。可以试试下面的代码:
import sys
sys.stdin.readline()
如果你想要简单一点,可以使用 raw_input,它和 input 类似,但不会执行输入的内容。
使用 raw_input() 而不是 input():
testVar = raw_input("Ask user for something.")
input() 实际上会把你输入的内容当作 Python 代码来执行。我建议你不要使用它。相反,raw_input() 会直接返回用户输入的内容,保持原样。