2014-02-20 4 views
-3

세 가지 기능을 반복하지만이 오류가 발생합니다. NameError : 전역 이름 '대시'가 정의되지 않았습니다.이 함수 코드를 수정하는 방법

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() 
+4

을 대시 (호출) (그릴) 및 대시 아직 정의되지 않은 이미 대시 (dash)는 게시 한 코드의 어디에도 정의되어 있지 않습니다. – jonrsharpe

+0

pyhthon에 익숙한 사람이 왜'function-programming' 태그가 붙을 수 있는지에 대해 언급 할 수 있습니까? 고차원 함수 나 메타 프로그래밍을 전혀 사용할 수 없습니다. 오류에 대한 –

+0

... 방법이 있습니까, 내가 이것을 고칠 수 있습니다 물어 봐도 될까요? 고맙습니다. – wakamdr

답변

1

현재 기록으로, 코드 : 그 함수가 정의되기 전에

  1. 시도 횟수가 dash()를 호출;
  2. 올바른 기능을 수행하면서 올바른 입력을 입력 할 때까지 사용자가 입력을 다시 입력하도록합니다.

이것은 현명하지 않은 것처럼 보입니다. 당신은 기능에서 입력을 분리하여 모두를 해결할 수 : 오류가 발생하는 줄 번호에서

# 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.") 
4

당신은 정의하기 전에 그것을 사용하려고 : 나는 그것을 를 해결하려면 어떻게해야이 코드입니다.

def paint(): 
    ... 

def draw(): 
    ... 

def dash(): 
    ... 

def erase(): 
    ... 


draw() 
paint() 
erase() 
dash() 
+0

잘 작동하지만 draw()로만 인쇄됩니다 ... 그 첫 번째 호출은? .. u는 draw(), paint(), erase() 및 dash() 순으로 나열 되었기 때문입니까? draw()를 paint()로 대체하면 페인트가 호출되고 나머지는 – wakamdr

+0

@ wakamdr을 반복하지 않습니다. 오류를 수정하는 방법을 물었습니다. 코드를 검토하기를 원하는 경우 이것이 장소가 아닙니다. 그에 대한. – corn3lius

+0

멋진 남자 나는 단지 내가 지적한 것을 제안했다. 어쨌든 고마워! – wakamdr

2

봐. 그것은 예외로 작성되었습니다. 는하지만 문제가 여기에있을 수 있다고 생각 :

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

당신은 무승부()를 호출하지만 오류 메시지를 반복의 위험에

관련 문제