我得到一个错误,当我试图运行这个简单的脚本:
input_variable = input("Enter your name: ")
print("your name is" + input_variable)
假设我输入“dude”,我得到的错误是:
line 1, in <module>
input_variable = input("Enter your name: ")
File "<string>", line 1, in <module>
NameError: name 'dude' is not defined
我正在运行MacOSX10.9.1,我正在使用安装了Python3.3的PythonLauncher应用程序来运行脚本。
由于您是为Python 3.x编写的,因此您需要以以下内容开始编写脚本:
#!/usr/bin/env python3
如果您使用:
#!/usr/bin/env python
它将默认为Python2.x。如果没有以#开头的内容,这些内容将出现在脚本的第一行!(又名shebang)。
如果您的脚本只是以:
#! python
然后您可以将其更改为:
#! python3
虽然这种较短的格式只被少数程序识别,比如启动器,所以它不是最好的选择。
前两个示例使用得更广泛,有助于确保您的代码可以在安装了Python的任何机器上运行。
您运行的是Python 2,而不是Python 3。要在Python2中实现这一点,请使用raw\u input
。
input_variable = raw_input ("Enter your name: ")
print ("your name is" + input_variable)
TL; DR
Python 2.7中的输入
函数,计算任何输入,作为Python表达式。如果你只是想读取字符串,那么使用Python 2.7中的raw_input
函数,它不会计算读取的字符串。
如果使用Python 3. x,raw_input
已重命名为输入
。引用Python 3.0发布说明,
raw\u input()
被重命名为input()
。也就是说,新的input()
函数从sys.stdin
中读取一行,并返回它,同时去掉尾随的换行符。如果输入过早终止,则会引发eoferor
。要获取input()
的旧行为,请使用eval(input())
在Python2.7中,有两个函数可用于接受用户输入。一个是input
,另一个是raw\u input
。你可以把它们之间的关系想成如下
input = eval(raw_input)
考虑下面的代码以更好地理解这一点
>>> dude = "thefourtheye"
>>> input_variable = input("Enter your name: ")
Enter your name: dude
>>> input_variable
'thefourtheye'
input
接受来自用户的字符串,并在当前Python上下文中计算该字符串。当我键入dude
作为输入时,它发现dude
绑定到值fourtheye
,因此求值结果成为fourtheye
,并分配给input\u变量。
如果我输入了当前python上下文中不存在的其他内容,它将失败,并出现
namererror
。
>>> input("Enter your name: ")
Enter your name: dummy
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'dummy' is not defined
Python 2.7的
输入的安全注意事项
:
因为无论评估何种用户类型,它都会带来安全问题。例如,如果您已经使用导入操作系统在程序中加载了操作系统模块,然后用户输入
os.remove("/etc/hosts")
python将把它作为函数调用表达式进行计算,并执行它。如果您正在以提升的权限执行Python,
/etc/hosts
文件将被删除。看,这有多危险?
为了演示这一点,让我们再次尝试执行
input
函数。
>>> dude = "thefourtheye"
>>> input("Enter your name: ")
Enter your name: input("Enter your name again: ")
Enter your name again: dude
现在,当执行
input(“输入您的名字”)
时,它会等待用户输入,并且用户输入是一个有效的Python函数调用,因此也会被调用。这就是为什么我们看到再次输入您的姓名:
再次提示。
因此,您最好使用
原始输入
函数,如下所示
input_variable = raw_input("Enter your name: ")
如果您需要将结果转换为其他类型,那么您可以使用适当的函数来转换由
raw_input
返回的字符串。例如,要将输入读取为整数,请使用int
函数,如本答案所示。
在Python3.x中,只有一个函数可以获取用户输入,称为
input
,它相当于Python2.7的raw\u input
。
我正在使用cogs来缩短和组织我的discord机器人。然而,在尝试“事件”cog时,我遇到了一个名称错误,即没有定义changePlaying,尽管它实际上是关于on_ready命令的 我忘了输入discord。ext并因此导入了该文件。B:我已经尝试过在changePlaying事件中更改可能状态列表的位置 嗯,我认为很明显预期的结果是什么,但要澄清机器人应该启动。它确实在线,并听取命令,但状
问题内容: 好的,所以我正在用python编写成绩检查代码,我的代码是: 当我通过python编译器运行它并选择时,出现一条错误消息: “ NameError:未定义名称’n’” 当我选择我再有是问题,但是当我做别的事情,代码运行正常。 任何帮助是极大的赞赏, 谢谢。 问题答案: 在Python 2中使用来获取字符串,在Python 2中等效于。 因此,当您输入类似的内容时,它会认为您正在寻找一个
我对不和谐是新手。py并遵循有关齿轮的教程。我遵循了教程告诉我的所有内容,但在运行命令时出现了名称错误。 代码如下: 当我在discord消息框中键入时,我得到了这个回溯 回溯(最近一次调用):文件“C:\Users\bryan\source\repos\discord\u music\u bot\env\lib\site packages\discord\ext\commands\bot.py”
我只是在复制ProductHunt。com网站和地址的网址,我得到了错误的名称错误!当我输入'localhost:8000/accounts/signup'时,它会将我带到一个html页面,这是我为测试所做的!主URL。py看起来像: 因此,它会转到帐户文件夹urls.py看起来像:从django.urls导入路径,包括从。导入视图 然后是视图。py看起来像:来自django。快捷方式导入渲染 至
问题内容: 当我尝试运行此简单的python脚本时出现错误: 假设我输入“花花公子”,我得到的错误是: 我正在运行Mac OS X 10.9.1,并且正在使用python 3.3安装随附的Python Launcher应用程序来运行脚本。 编辑:我意识到我以某种方式运行这些脚本与2.7。我想真正的问题是如何在3.3版中运行脚本?我以为,如果将脚本拖放到应用程序文件夹中Python 3.3文件夹内的
问题内容: 指令代码 HTML 我遇到此错误:。怎么了? 问题答案: 在作用域中是可访问的,因此您可以在控制器或链接阶段或模板中进行访问。一个简单的解决方案是将模板更改为