2013-04-17 4 views
0

메시지가 끝날 때까지 카운트 다운되는 게임을 끝내고 텍스트 어드벤처 게임에서이 코드 블록을 반복해야하는 기능을 만들려고합니다. 그래서 나는 깔끔함과 효율성을 위해서 그것의 기능을 만들기로 결정했습니다. 그러나 그러한 함수를 정의하고 호출하는 방법을 이해할 수는 없습니다.작동 할 수있는 기능을 얻을 수 없습니다.

def exit(): 
    print "That\'s a real shame..." 
    time.sleep(1) 
    print 'Exiting program in 5 seconds:' 
    time.sleep(1) 
    print '5' 
    time.sleep(1) 
    print '4' 
    time.sleep(1) 
    print '3' 
    time.sleep(1) 
    print '2' 
    time.sleep(1) 
    print '1' 
    time.sleep(1) 
    sys.exit('Exiting Game...') 
    break 

그리고이 같은 함수를 호출 오전 :

print "That\'s a real shame..." 
time.sleep(1) 
print 'Exiting program in 5 seconds:' 
time.sleep(1) 
print '5' 
time.sleep(1) 
print '4' 
time.sleep(1) 
print '3' 
time.sleep(1) 
print '2' 
time.sleep(1) 
print '1' 
time.sleep(1) 
sys.exit('Exiting Game...') 
break 

그래서 나는이 같은 함수를 정의 :

elif ready == 'n': 
    exit 

무엇 오전 이것은 내가 실행하려고 코드입니다 내가 잘못하고있어?

+3

출구 변화는() – sashkello

답변

7

exit()을 입력하여 함수를 호출 할 수 있습니다. 귀하의 카운트 다운 코드를 수정하고 exit() 내에서 호출 한 함수로 변환하여 코드 조각에서 하나의 함수를 호출하는 방법을 보여줍니다.

def exit(): 
    print "That\'s a real shame..." 
    time.sleep(1) 
    print 'Exiting program in 5 seconds:' 
    time.sleep(1) 
    count_down(5) # Call Countdown clock 
    print 'Exiting Game...' 
    sys.exit() 

def count_down(number): 
    for i in reversed(range(number)): 
     print i+1 
     time.sleep(1) 

exit() # <-- This how you call exit, you were missing the parentheses at the end. 

출력 :

That's a real shame... 
Exiting program in 5 seconds: 
5 
4 
3 
2 
1 
Exiting Game... 

편집 :추가 더 자세한 설명.

첫 번째 줄 def count_down은 하나의 parameter을 가지며 카운트 다운을 처리하는 하나의 목적을 갖는 함수입니다.

def count_down(number): 

두 번째 행에는 for loop이 포함되어 있습니다. 이 코드의 목적은 객체를 순환하는 것입니다. 4부터 3,2,1 등으로 시작됩니다. 동일한 행에있는 변수 i은 루프가 숫자를 통과 할 때마다 변경되며 루프 내에서만 액세스 할 수 있습니다. 처음 인쇄가 실행되면 5, 다음에 4 등이됩니다. 우리는 또한 두 개의 추가 키워드와 하나 개의 매개 변수, reversed, range 및 매개 변수 number를 사용하여이 기능에

for i in reversed(range(number)): 

.

reversed(range(number)) 

range은 숫자 목록을 생성하는 데 사용됩니다. [0, 1, 2, 3, 4]의 경우 for 문이 0으로 시작하여 반복되고 다음 번호가 마지막 숫자 인 4에 도달 할 때까지 다음 번호가 끝납니다. 나는 왜 그것이 0에서 시작하고 단지 4로 가고, 나의 대답의 끝에서 5가 아니라에 관해 설명 할 것이다.

reversed은 범위로 만든 목록을 뒤집는 데 사용됩니다. 우리가 4에서 시작하고 싶기 때문에 0가 아니라.

reversed = "[0,1,2,3,4]

reversed] =>[4,3,2,1,0]

number 후에는 파라미터되기 전에. 매개 변수는 괄호 안에 값을 포함하여 exit() 함수에서 함수를 실행할 때 제공하는 값입니다 (). 이 경우에는 5를 지정 했으므로 range으로 만든 목록은 0 - 4 (0,1,2,3,4 = 총 5 개의 숫자)의 범위를 갖습니다. 대신에 괄호 안에 10을 지정하면 0부터 시작하여 9까지의 목록을 생성합니다. 코드는 5에서 1 대신에 10에서 1로 카운트 다운됩니다.

Python이 작업을 시작할 때 for loopprint으로 시작하여 sleep으로 시작하는 코드를 실행하고 range으로 생성 된 목록의 각 번호에 대해 계속해서 코드를 실행합니다. 이 경우 5를 지정 했으므로 코드를 총 5 회 실행합니다.

파이썬이 for loop 내에서 코드를 실행하기 때문에 먼저 print 함수를 호출합니다. for 루프는 5이 아닌 4으로 시작하므로 기본 연산을 수행하고 루프를 통해 반복되는 각 항목의 값을 늘려야합니다. 변수 i 뒤에 + 1을 입력하면됩니다.

4에서 시작하고 5가 아닌 이유는 프로그래밍 목록에서 0으로 시작하고 1이 아니기 때문입니다. lists이 0으로 시작하는 이유에 대한 기술적 설명이 있습니다. 목록을 뒤집은 이래로 1이 아니고 4가 아닌 5가됩니다. here

+0

이 도와 주셔서 너무 감사 종료 할 수 있습니다. 파이썬과 프로그래밍에 익숙하지 않지만 카운트 다운 기능에 대해 설명해 주시겠습니까? 난 이해가 안되는데 나는 역전되어있다. (xrange (number)) : –

+0

특별히 설명 할 필요가있는 것은 무엇입니까? – eandersson

+0

물론입니다. 몇 분만 줘. – eandersson

4

exit이 아니라 exit()으로 지정해야합니다.

0

간단합니다. 각 메시지의 지연 시간을 제어 할 수 있도록 메시지와 타이머 지연을 보유하는 tuple을 사용하십시오.

import time, sys 
messages = [ 
    ("That's a shame", 1), 
    ("Exiting program in 5 seconds", 1), 
    (None, 5) 
] 

for k,v in messages: 
    if k: 
     print(k) 
     time.sleep(v) 
    else: 
     # start countdown timer 
     while v: 
      print v 
      time.sleep(1) 
      v -= 1 

sys.exit() 
-1

이 코드를 할 수있는 좋은 방법은 다음과 같습니다

def exit(): 
    timer= 5 
    print "That\'s a real shame..." 
    time.sleep(1) 
    print 'Exiting program in 5 seconds:' 
    for i in range (5): 
     time.sleep(1) 
     print timer 
     timer = timer - 1 
    sys.exit('Exiting Game...') 

##You call the function like this 
exit() 
관련 문제