我有一个超级基本的问题,但我刚刚开始学习python。我的剧本:
print('What is your name?')
person = input("Enter name: ")
print("Hello ", person)
返回错误:NameError: name 'Bob' is not defined
。
我基本上只是复制并粘贴了教程中的内容,但除非我将名称放在引号中,否则它仍然无法正常工作。我做错了什么?
答案 0 :(得分:0)
您的代码在Python 3中应该可以正常工作。但是,在Py2中它将抛出NameError
,因为input()
和raw_input()
之间存在差异。从本质上讲,Python 2中的input()
与eval(raw_input(""Enter name: "))
相同,这意味着它将尝试将input
ed代码作为Python运行。
在Python 3中,raw_input()
不再存在,input()
按照您期望的方式运行:打印一行,接受输入,并以字符串格式将其分配给变量。< / p>
答案 1 :(得分:0)
你根本就没有使用Python 3.在Python 2中,input()
的工作方式不同;从文档中看到这段摘录。
相当于
eval(raw_input(prompt))
。
因此,当您键入Bob
而没有引号时,您基本上是在说eval(Bob)
。引号为eval("Bob")
。 Python 3中不存在raw_input()
,因此如果您使用Python 3运行它将不会被定义。
确保使用Python 3运行文件:
which python
和which python3
以确保您同时拥有这两个。python
和python3
,查看python shell打开时运行的版本。import sys; print(sys.version)
。python3 yourfile.py
运行您的代码。#!/usr/bin/env python3
添加到文件的第一行。有可能,您要么写了#! /usr/bin/env python
,它在OS X上是2.7.x(我认为它是2.7.2,我认为python
是python27
二进制文件的符号链接并且只是通过输入其名称来运行您的文件,或者您通过python
运行它。