名称错误:名称';表格';未定义(Python3)
基本上,名称错误:名称';表格';未定义(Python3),python,error-handling,Python,Error Handling,基本上,main方法接受用户输入,检查它,如果用户没有输入quit,则调用first方法 first方法检查输入的第一部分,并根据用户输入的内容调用其他方法之一。这是我得到一个错误的点;例如,当first方法调用form方法时,我得到一个NameError:name'form'未定义异常。我对此有点困惑,因为我已经定义了每个方法,并且它们都拼写正确,而且当我调用quit方法时,它工作得非常好 主要方法: if __name__ == '__main__': for line in
main
方法接受用户输入,检查它,如果用户没有输入quit
,则调用first
方法
first
方法检查输入的第一部分,并根据用户输入的内容调用其他方法之一。这是我得到一个错误的点;例如,当first
方法调用form
方法时,我得到一个NameError:name'form'未定义
异常。我对此有点困惑,因为我已经定义了每个方法,并且它们都拼写正确,而且当我调用quit
方法时,它工作得非常好
主要方法:
if __name__ == '__main__':
for line in sys.stdin:
s = line.strip()
if not s: break
if (str(s) == "quit"): quit()
elif (str(s) == "quit") == False:
a = s.split()
print(a)
if (len(a) is 2): first(a)
elif (len(a) is 3): first(a)
else: print("Invalid Input. Please Re-enter.")
第一种方法:
def first(a = list()):
word = a[0]
if word == "ls":
ls(a[1])
elif word == "format":
form(a[1])
elif word == "reconnect":
reconnect(a[1])
elif word == "mkfile":
mkfile(a[1])
elif word == "mkdir":
mkdir(a[1])
elif word == "append":
append(a[1], a[2])
elif word == "delfile":
delfile(a[1])
elif word == "deldir":
deldir(a[1])
else:
print("Invalid Prompt. Please Re-enter.")
def reconnect(one = ""):
print("Reconnect")
def ls(one = ""):
print("list")
def mkfile(one = ""):
print("make file")
def mkdir(one = ""):
print("make drive")
def append(one = "", two = ""):
print("append")
def form(one = ""):
print("format " + one)
def delfile(one = ""):
print("delete file")
def deldir(one = ""):
print("delete directory")
def quit():
print("quit")
sys.exit(0)
其他方法(这些都是从第一个方法调用的):
这取决于您是使用Python2.7还是3,但是您的代码需要做一些小的修改
import sys
def reconnect(one=""):
print("Reconnect")
def ls(one=""):
print("list")
def mkfile(one=""):
print("make file")
def mkdir(one=""):
print("make drive")
def append(one="", two=""):
print("append")
def form(one=""):
print("format " + one)
def delfile(one=""):
print("delete file")
def deldir(one=""):
print("delete directory")
def quit():
print("quit")
sys.exit(0)
def first(a=list()):
word = a[0]
if word == "ls":
ls(a[1])
elif word == "format":
form(a[1])
elif word == "reconnect":
reconnect(a[1])
elif word == "mkfile":
mkfile(a[1])
elif word == "mkdir":
mkdir(a[1])
elif word == "append":
append(a[1], a[2])
elif word == "delfile":
delfile(a[1])
elif word == "deldir":
deldir(a[1])
else:
print("Invalid Prompt. Please Re-enter.")
line = raw_input("Some input please: ") # or `input("Some...` in python 3
print(line)
s = line.strip()
if (str(s) == "quit"):
quit()
elif (str(s) == "quit") == False:
a = s.split()
print(a)
if (len(a) is 2):
first(a)
elif (len(a) is 3):
first(a)
else:
print("Invalid Input. Please Re-enter.")
试验
你也可以试试
此错误是由于
elif word == "format":
form(a[1])
python基本上不知道什么是表单
让我告诉你:
gaf@$[09:21:56]~> python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> form()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'form' is not defined
>>>
命令
秩序也很重要
try:
form()
except NameError:
print('Oops name error raise above')
def form():
print('form foo is called')
try:
form()
except NameError:
print('Oops name error raise below')
我会给你
/home/gaf/dashboard/bin/python /home/gaf/PycharmProjects/dashboard/test.py
Oops name error raise above
form foo is called
Process finished with exit code 0
附言。
看看pep8
你的代码乱七八糟
但是不用担心,这是每个人使用第一语言时都会做的事情你确定你在调用这些方法之前定义了它们吗?是的,我已经按照与我发布的相反的顺序定义了所有方法。我也尝试过交换订单。try-form(one=a[1])@SumanKalyan没有work@GabbyFreeland请在此处尝试。您可以编写
格式a
,它会调用表单function@GabbyFreeland我用截图更新了问题。请查看提供的屏幕截图。显然,它运行了表单
函数。好吧,这很奇怪。我只是编辑了我的,当它在一个类中时,它就不起作用了,但是当你去掉这个类,保持其他的一切不变时,它就起作用了。你知道为什么吗?
import
try:
form()
except NameError:
print('Oops name error raise above')
def form():
print('form foo is called')
try:
form()
except NameError:
print('Oops name error raise below')
/home/gaf/dashboard/bin/python /home/gaf/PycharmProjects/dashboard/test.py
Oops name error raise above
form foo is called
Process finished with exit code 0