我在Python中编写了一个函数,它提示用户提供两个数字并添加它们。 它还会提示用户输入城市并进行打印。出于某种原因,当我在shell中运行它时,在进入城市后我得到“名称未定义”。
def func_add(num1, num2):
a = input("your city")
print a
return num1 + num2
答案 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_input
。 input
就像是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)