Python 如何修复此函数代码

Python 如何修复此函数代码,python,python-3.x,Python,Python 3.x,我试图迭代三个函数,但出现以下错误:NameError:未定义全局名称“dash”。我该怎么修 代码如下: def draw(): name = input('Please type here: ').lower()#.split() if name == 'what draw': print('draw here') else: dash() draw() def paint(): name = input('Please ty

我试图迭代三个函数,但出现以下错误:NameError:未定义全局名称“dash”。我该怎么修 代码如下:

def draw():
    name = input('Please type here: ').lower()#.split()
    if name == 'what draw':
        print('draw here')
    else:
        dash()

draw()
def paint():
    name = input('Please type here: ').lower()#.split()
    if name == 'what paint':
        print('paint here')
    else:
        draw()

paint()
def erase():
    name = input('Please type here: ').lower()#.split()
    if name == 'what erase':
        print('erase here')
    else:
        paint()

erase()
def dash():
    name = input('Please type here: ').lower()#.split()
    if name == 'what dash':
        print('dash here')
    else:
        erase()

dash()

您正在尝试在其定义之前使用它

def paint(): 
   ...

def draw():
   ...

def dash(): 
   ...

def erase():
   ...


draw()
paint() 
erase() 
dash() 

按照当前编写的代码:

  • 在定义该函数之前尝试调用
    dash()
    ;及
  • 不断要求用户重新输入输入,直到他们在正确的功能中输入正确的输入 这似乎不明智。您可以通过将输入与函数分离来修复这两个问题:

    # function definitions here
    
    while True:
        name = input('Please type here: ').lower()
    
        if 'dash' in name:
            dash()
        # repeat for other functions
        elif 'quit' in name:
            break
        else:
            print("Don't know that name.")
    
    查看发生错误的行号。它写在异常中。 但我认为你的问题可能在这里:

    def draw():
      name = input('Please type here: ').lower()#.split()
      if name == 'what draw':
         print('draw here')
      else:
         dash()
    draw()
    

    您调用draw(),但draw()将调用dash(),dash尚未定义

    ,可能会重复错误消息已经告诉您的内容,
    dash
    未在您发布的代码中的任何位置定义。是否有更熟悉pyhthon的人可以评论为什么会将其标记为
    函数式编程
    ?我看不到高阶函数的任何用途,也看不到任何类型的元编程。关于错误…有没有办法,我可以要求修复这个问题?谢谢。您可以从定义
    dash
    @wakamdr开始。您可以选择:1。删除对
    仪表板的调用
    ;或2。实际上,define
    dash
    这很有效,但只使用draw()打印…是因为它是第一个名为?的。按顺序列出了draw()、paint()、erase()和dash()。如果我用paint()替换draw(),则调用paint,其余部分不迭代over@wakamdr你问过如何修复你所遇到的错误,如果你想让别人检查你的代码,这可不是个好地方。无论如何谢谢你!!