2017-04-19 1 views
0

나는 파이썬을 2.7로 배우고 사전을 가지고 배우면서 키가 호출 될 때 내 프로그램에서 함수를 실행하려고했다. 그물을 꽤 많이 보았지만, 관련이 없거나 단순히 이해하지 못할 수도 있습니다. 아래는 내가 좋아하는 게임 중 하나를 배우면서 개념으로 시작한 것입니다. 다음은 사전에서 프로그램의 함수 호출하기

내가에서 현재 어딘지 좀 더 정확한 표현이다 : 나는 등, 값을 수정, 인쇄와 문자열로 사전을 사용할 때 ... 그냥 일할 수있는 기본 재료를 입수했습니다

myDict = { 
    'descript': "This is some text to be printed", 
    'NORTH': northOfHouse (not sure if this is correct format) 
    } 

def westOfHouse(): 

    print myDict['descript] 

    if action == ('n' or 'north'): 
     myDict['NORTH]() (Not sure about proper format) 
    else: 
     print "there is no path in that direction 

함수를 실행하는 방법을 얻는 것. 당신이하려고하는 무엇을 매우 단순화 된 데모로

+1

당신이지고 어떤 오류 :

내가 권하고 싶습니다 또 다른 것은 옆으로 이동 할 수있는 현재의 위치를 ​​결정하는 방법, 각 기능에서 사전을 반환하는 것입니다? – Astrom

+1

가능한 [Python : 실행할 함수를 선택하기 위해 사전을 사용하는] 가능한 복제본 (http://stackoverflow.com/questions/9168340/python-using-a-dictionary-to-select-function-to-execute) – FamousJameous

+0

' 사전을 만들 때 현재'myDef' *를 호출합니다. * 실제로 myDict [ 'key']()'같은 것이 필요합니까? – jonrsharpe

답변

1

, 다음에 봐 :

def northOfHouse(): 
    print "north" 
    action = raw_input() 
    myDict[action]() 
def westOfHouse(): 
    print "west" 
    action = raw_input() 
    myDict[action]() 

myDict = { 
    "WEST": westOfHouse, 
    "NORTH": northOfHouse 
} 

action = raw_input() 
myDict[action]() 

우선은이 개 기능 (northOfHousewestOfHouse)를 정의했다. 이 기능들 각각은 단순히 그 위치를 인쇄하고 새로운 입력을 요구할 것입니다. 그런 다음 그들은 이력서에서 주어진 입력에 대한 함수를 호출하려고 시도합니다.

다음 내가 키 "WEST""NORTH" 참조 에 대한 올바른 기능을 사용하여 내 경우에는, 사전에 정의 (필자는 함수를 호출 아니에요 참고). 그런 다음 적절한 myDict["WEST"]() 또는 myDict["NORTH"]()을 사용하여 호출 할 수 있습니다.

"NORTH""WEST"을 입력하고 적절한 함수가 호출되는 것을 볼 수 있습니다.이 것은 분명히 원하는대로 확장 될 수 있습니다 (적절한 입력 유효성 검사를 포함하고 루프 기반으로이 지시 사항을 수행함). 재귀 적으로 제공된 코드와 마찬가지로 재귀 깊이 오류가 발생하면 너무 오래 기다릴 것입니다.)

def northOfHouse(): 
    print "You're in the NORTH of the house\nYou can go 'WEST'" 
    myDict = { 
     "WEST": westOfHouse 
    } 
    return myDict 

def westOfHouse(): 
    print "You're in the WEST of the house\nYou can go 'NORTH'" 
    myDict = { 
     "NORTH": northOfHouse 
    } 
    return myDict 

currentMoves = northOfHouse() 
while 1: 
    action = raw_input() 
    if(action in currentMoves): 
     currentMoves = currentMoves[action]() 
    else: 
     print "Invalid Input" 

Try Here on repl.it

+0

더 많이 만들수록 더 커다란 무언가에 더 많이 넣고 싶습니다. 그러나 클래스와 중첩 된 사전은이 질문의 범위를 벗어납니다. –

+0

Nick A, 고맙습니다. 또한 사전을 내 정의 아래로 이동하면 northOfhouse 값을 정의 할 수있었습니다. – Darwin

+0

@Darwin, 코드의 나머지 구조는 확실하지 않지만 문제가 될 수 있습니다. 문제가 해결되면 대답을 수락하지 마십시오. –