2012-03-01 7 views
2

나는 어려운 길을 배우는 파이썬의 도움으로 파이썬을 배우려고한다. 내가 운동 41에 도달했습니다 (Gothons 행성에서 Percal는 # 25), 당신은 내가 이해할 수 >here<어려운 길을 배우기, 어려운 일 41 두통

내가

def runner(map, start) 
    next = start 

    while True: 
     room = map[next] 
     print "\n--------" 
     next = room() 

runner(ROOMS, 'central_corridor') 

지금까지 마지막 기능 러너()까지 모든 것을 이해하는 전체 코드를 볼 수 있습니다 , 다음에는 실행할 첫 번째 기능의 키인 start 값이 지정됩니다. while 루프는 해당 키의 함수를 room에 할당하기 시작합니다. 그런 다음이 함수는 대시 줄을 출력 한 다음 함수 호출의 반환 값을 변수 다음에 할당합니다.

내가 이해할 수없는 것은 사용자가 호출되는 기능을 "보는"이유입니다. 내게는 함수 호출이 변수 다음에에 할당 된 것처럼 보입니다. () 또는 room()이 다음 행이 될 것으로 예상됩니다. 둘째로 왜 while 루프가 멈추는 지 이해하지 못한다. false가되거나 종료 될 때까지 계속 진행하면 안 되는가?

이들은 대부분 당신에게 어리석은 질문처럼 보일지 모르지만 저는 프로그래밍 게임을 처음 접했고이 사이트의 다른 곳에서이 질문에 대한 답을 이해하지 못합니다.

희망 누군가가 ... 내 수준까지 벙어리 할 수있는 나에게 그것을 설명

+0

[이 검색] (http://stackoverflow.com/search?q=python+exercise+41)을 사용하여 찾은 몇 가지 질문과 중복되는 것처럼 보입니다. 이 질문에 대한 답이 도움이 될 것입니다. – gary

+0

가능한 [파이썬 하드 방법, 연습 41] (http://stackoverflow.com/questions/7909334/learn-python-the-hard-way-exercise-41)의 중복 가능 – Jacob

답변

2

사용자는 호출되는 함수를 보는 기능 인쇄 것들 때문이다. 함수는 실제로 상기 전화의 결과 ("() 실"로) 호출되고

는 다음 설정된다. 예. 방이 "the_bridge"인 경우 물건이 인쇄 된 후 "죽음", "escape_pod"또는 "the_bridge"가 반환됩니다.

사실 "while True :"가 무한 루프라는 사실은 사실이지만 파이썬은 프로그램을 완전히 종료 할 수있는 방법이 있습니다.

"exit (0)"은 전체 프로그램을 바로 종료 한 다음 질문이 없습니다.

+0

감사합니다. 지금은 이해하고 있다고 생각합니다. 리턴 된 값이 변수에 할당 되더라도 함수 호출이 여전히 화면에 씁니다. 그것은 두 가지 질문에 모두 대답합니다. –

0

는 당신이 얼마나 많은 질문 모르겠지만, 두 가지를 명확하게합니다 :

(1) next = room() 작품지도는 dict 때문에, 기능있는의 값이 너무 room = map[next] 함수를 검색을 map에서 해당 함수를 변수 room에 저장합니다. 표현 room()은 해당 함수를 호출합니다.

(2) 코드를 살펴보면 프로그램이 종료되거나 예외 (있는 경우)가 발생할 때 루프에서 유일한 종료가 나타나는 것으로 나타납니다.

0

고턴의 일도 예 41. (예전에는이 게시물이 작성되었을 때였습니까? 이제 예 43입니다.) 어쨌든, 혼란 스럽습니다. 나는 마침내 ex 41과 관련된 것을 발견했다. 그리고 나는 여기 와서 이것을 보았다.