我是一名C程序员,今天开始使用python,只是为了测试,我抛出了一些非常简单的代码,我得到了这个非常疯狂的nameError,我在这里看到了几个,但它们似乎并没有关联。
person = input('Enter your name: ')
print('Hello', person)
这就是我在终端上得到的:
C:\Users\Matt\Desktop\Python>python input.py
Enter your name: Matheus
Traceback (most recent call last):
File "input.py", line 3, in <module>
person = input('Enter your name: ')
File "<string>", line 1, in <module>
NameError: name 'Matheus' is not defined
有谁知道我该如何解决这个问题?
您正在使用Python 2,而在Python 2中,input
的使用在输入上运行eval
。因此,当您输入您认为是字符串的内容时,Python会尝试对此进行评估。
在input
的帮助下:
input(...)
input([prompt]) -> value
Equivalent to eval(raw_input(prompt)).
输入演示:
>>> a = input()
2
>>> type(a)
<type 'int'>
注意引号必须用于获取字符串:
>>> a = input()
"bob"
>>> type(a)
<type 'str'>
你最好在Python 2中使用raw_input
。因为这甚至是Python 3中使用的方法(但Python 3调用方法input
)。
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.
raw_input演示:
不必使用通知引号。
>>> a = raw_input()
bob
>>> type(a)
<type 'str'>
Python 2尝试将对input
的调用解释为代码。试试raw_input()
,它应该工作正常。