我尝试运行这个简单的python脚本时收到错误:
input_variable = input ("Enter your name: ")
print ("your name is" + input_variable)
Run Code Online (Sandbox Code Playgroud)
让我说我输入"dude",我得到的错误是:
line 1, in <module>
input_variable = input ("Enter your name: ")
File "<string>", line 1, in <module>
NameError: name 'dude' is not defined
Run Code Online (Sandbox Code Playgroud)
我正在运行Mac OS X 10.9.1,我正在使用安装python 3.3附带的Python Launcher应用程序来运行脚本.
编辑:我意识到我用2.7运行这些脚本.我想真正的问题是我如何使用3.3版运行我的脚本?我想如果我将我的脚本拖放到我的应用程序文件夹中的Python 3.3文件夹内的Python Launcher应用程序之上,它将使用3.3启动我的脚本.我想这个方法仍然用2.7启动脚本.那么我如何使用3.3?
你如何使用@patch装饰器来修补内置的input()函数?
例如,这是我要测试的question.py中的一个函数,它包含对input()的调用:
def query_yes_no(question, default="yes"):
""" Adapted from http://stackoverflow.com/questions/3041986/python-command-line-yes-no-input """
valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False}
if default is None:
prompt = " [y/n] "
elif default == "yes":
prompt = " [Y/n] "
elif default == "no":
prompt = " [y/N] "
else:
raise ValueError("invalid default answer: '%s'" % default)
while True:
sys.stdout.write(question + prompt)
choice = input().lower()
if default is not None and choice == '':
return valid[default]
elif choice in valid: …Run Code Online (Sandbox Code Playgroud) 我有一个愚蠢但问题.假设我有一个包含不同值的列表.像这样:
[1,2,3,'b', None, False, True, 7.0]
Run Code Online (Sandbox Code Playgroud)
我想迭代它并检查每个元素是否都不在某些禁用值的列表中.例如,这个列表是[0,0.0].
当我检查是否为假时,[0,0.0我得到了True.我知道python会False转到0这里.但我怎么能避免它并使这个检查正确 - 该False值不在[0,0.0]列表中?
我正在使用以下示例:
我想按照概述制定它自己的定义,然后根据需要调用它,如下所示:
def log_manager():
question = "Do you wish to continue?"
choice = query_yes_no_quit(question, default="yes")
if choice == 'y':
print ("you entered y")
else:
print ("not working")
Run Code Online (Sandbox Code Playgroud)
无论我输入什么,总是打印"不工作".任何指导都会非常感激!
python ×4
input ×2
mocking ×1
nameerror ×1
prompt ×1
python-2.7 ×1
python-3.x ×1
unit-testing ×1