2015-01-06 16 views
5

Ví dụ:Python: Làm thế nào để dừng một chức năng?

def main(): 
    if something == True: 
     player() 
    elif something_else == True: 
     computer() 

def player(): 
    # do something here 
    check_winner() # check something 
    computer() # let the computer do something 

def check_winner(): 
    check something 
    if someone wins: 
     end() 


def computer(): 
    # do something here 
    check_winner() # check something 
    player() # go back to player function 


def end(): 
    if condition: 
     # the player wants to play again: 
     main() 
    elif not condition: 
     # the player doesn't want to play again: 
     # stop the program 


    # whatever i do here won't matter because it will go back to player() or computer() 

main() # start the program 

Vấn đề của tôi là nếu một điều kiện nhất định trở thành sự thật (trong hàm check_winner) và chức năng end() thực hiện nó sẽ quay trở lại vào máy tính() hoặc máy nghe nhạc() vì không có dòng điều đó cho máy tính ngừng thực hiện trình phát() hoặc máy tính(). Làm cách nào để dừng các hàm trong Python?

+0

'return' chấm dứt một chức năng, đó là những gì bạn đang tìm kiếm? – Maroun

+0

Có (miễn là nó có thể được sử dụng lại mà không cần khởi động lại chương trình). – user3711671

+0

Tôi quên thêm 1 hàm (main) vào câu hỏi, nhưng tôi vẫn gặp vấn đề, như những người khác nói trả về trả về một hàm gọi là hàm thứ 2 (hàm trả về) để nó không bao giờ dừng lại, thêm trở lại một số nơi đã không làm bất cứ điều gì và chương trình vẫn sẽ thực hiện, nơi chính xác tôi cần phải viết trở lại? Tôi muốn chương trình quay trở lại main() nếu người chơi muốn và nếu anh ta không muốn hoàn toàn dừng lại chương trình. – user3711671

Trả lời

4

Một câu lệnh trả về đơn giản sẽ 'dừng' hoặc trả về hàm, theo thuật ngữ chính xác, nó trả về thực thi hàm đến điểm mà hàm được gọi - hàm bị chấm dứt mà không có hành động nào khác.

Điều đó có nghĩa là bạn có thể có một số địa điểm trong suốt chức năng của mình nơi có thể trở lại. Như thế này:

def player(): 
     do something here 
     check_winner_variable = check_winner() #check something 
     if(check_winner_variable == '1') 
      return 
     second_test_variable = second_test() 
     if(second_test_variable == '1') 
      return 

     #let the computer do something 
     computer(); 
+0

Vì vậy, tôi chỉ cần thêm 'return winner' (hoặc chỉ trả về (None)?) Trước khi kết thúc() trong hàm check_winner? – user3711671

+0

Có, bất kỳ điểm nào mà trả về được chỉ định sẽ chấm dứt thực hiện chức năng và quay lại mã gọi. – Hektor

0

Trong ví dụ này, dòng do_something_else() sẽ không được thực hiện nếu do_not_continueTrue. Thay vào đó, điều khiển sẽ trả về, cho bất kỳ chức năng nào được gọi là some_function.

def some_function(): 

    if do_not_continue: 
     return # implicitly, this is the same as saying return None 

    do_something_else() 
1
def player(game_over): 
    do something here 
    game_over = check_winner() #Here we tell check_winner to run and tell us what game_over should be, either true or false 
    if not game_over: 
     computer(game_over) #We are only going to do this if check_winner comes back as False 

def check_winner(): 
    check something 
    #here needs to be an if/then statement deciding if the game is over, return True if over, false if not 
    if score == 100: 
     return True 
    else: 
     return False 

def computer(game_over): 
    do something here 
    game_over = check_winner() #Here we tell check_winner to run and tell us what game_over should be, either true or false 
    if not game_over: 
     player(game_over) #We are only going to do this if check_winner comes back as False 

game_over = False #We need a variable to hold wether the game is over or not, we'll start it out being false. 
player(game_over) #Start your loops, sending in the status of game_over 

Trên đây là một ví dụ khá đơn giản ... Tôi tạo ra một tuyên bố cho check_winner sử dụng score = 100 để biểu thị các trò chơi là hơn.

Bạn sẽ muốn sử dụng phương pháp tương tự để chuyển số score vào check_winner, sử dụng game_over = check_winner(score). Sau đó, bạn có thể tạo điểm số ở đầu chương trình của mình và chuyển số đó qua số computerplayer giống như game_over đang được xử lý.

Các vấn đề liên quan