2015-01-06 19 views
5

Zum Beispiel:Python: Wie man eine Funktion stoppt?

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 

Mein Problem ist, dass, wenn eine bestimmte Bedingung wahr wird (in der Funktion check_winner) und Funktionsende() führt es zurück zum Computer gehen() oder Spielern(), weil es keine Linie ist Das weist den Computer an, die Ausführung von player() oder computer() zu beenden. Wie stoppt man Funktionen in Python?

+0

'return' beendet eine Funktion, ist das wonach Sie suchen? – Maroun

+0

Ja (solange es ohne Neustart des Programms wieder verwendet werden kann). – user3711671

+0

Ich habe vergessen, 1 Funktion (main) in der Frage hinzuzufügen, aber ich habe immer noch ein Problem, wie andere sagte Rückkehr Rückkehr zu einer Funktion, die die 2. Funktion (die mit Return-Anweisung), so wird es nie aufhören, Hinzufügen von Rückkehr zu mehrere plätze haben gar nichts gemacht und das programm wird immer noch ausgeführt, wo genau muss ich zurückschreiben? ich will das programm auf main() zurückgehen wenn der player will und wenn er will will ich nicht komplett aufhören das Programm. – user3711671

Antwort

4

Eine einfache return-Anweisung wird 'stoppen' oder gibt die Funktion zurück, in genaueren Worten, es 'kehrt' Funktionsausführung zu dem Punkt zurück, an dem die Funktion aufgerufen wurde - die Funktion wird ohne weitere Aktion beendet.

Das bedeutet, dass Sie in Ihrer Funktion eine Reihe von Stellen haben könnten, an die sie zurückkehren könnte. So:

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

Also ich muss nur 'Rückkehr Gewinner' hinzufügen (oder einfach nur (None)?) Vor Ende() in der Funktion check_sieger? – user3711671

+0

Ja, jeder Punkt, an dem die Rückgabe angegeben wird, beendet die Ausführung der Funktion und kehrt zum aufrufenden Code zurück. – Hektor

0

In diesem Beispiel ist die Linie do_something_else() wird nicht ausgeführt, wenn do_not_continueTrue ist. Die Steuerung gibt stattdessen die Funktion some_function zurück. das Spiel zu bezeichnen ist über

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 

über ein ziemlich einfaches Beispiel ist ... habe ich eine Erklärung für check_winner mit score = 100 up.

Sie wollen score in check_winner, der vorbei mit game_over = check_winner(score) ähnlichen Methode verwenden. Dann können Sie am Anfang Ihres Programms eine Punktzahl erstellen und diese an computer und player weiterleiten, so wie game_over gerade bearbeitet wird.

Verwandte Themen