如何在Python 2中从键盘获取用户输入?

时间:2011-09-16 20:47:03

标签: python input python-2.x

我在Python中编写了一个函数,它提示用户提供两个数字并添加它们。 它还会提示用户输入城市并进行打印。出于某种原因,当我在shell中运行它时,在进入城市后我得到“名称未定义”。

def func_add(num1, num2):
   a = input("your city")
   print a
   return num1 + num2 

6 个答案:

答案 0 :(得分:8)

如果您使用的是Python 2,则需要使用raw_input

def func_add(num1, num2):

   a = raw_input("your city")
   print a
   return num1 + num2 

input会将您输入的任何内容作为Python表达式进行评估,因此您最终会使用

a = whatever_you_typed

因此,如果没有名为whatever_you_typed的变量,您将获得NameError

使用raw_input,它只会保存您在字符串中键入的内容,因此您最终会使用

a = 'whatever_you_typed'

指向该字符串的a,这就是您想要的。

答案 1 :(得分:1)

input()

执行(实际上,评估)表达式,就像它是一个代码片段一样,查找具有您键入的名称的对象,您应该使用

raw_input()

这是一个安全隐患,因为Python 3.x,input()的行为类似于raw_input(),它已被删除。

答案 2 :(得分:0)

您想使用raw_inputinput就像是eval

答案 3 :(得分:0)

您想要使用raw_input()input()期望Python,然后获得eval编辑。

答案 4 :(得分:0)

您需要raw_input,而不是input

input(...)
    input([prompt]) -> value

    Equivalent to eval(raw_input(prompt)).

与......相反。

raw_input(...)
    raw_input([prompt]) -> string

    Read a string from standard input.  The trailing newline is stripped.
    If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
    On Unix, GNU readline is used if enabled.  The prompt string, if given,
    is printed without a trailing newline before reading.

答案 5 :(得分:0)

在Python 2.x中,input要求提供一个Python表达式(如num1 + 2),然后对其进行求值。你想要raw_input,它允许一个人要求任意字符串。