Een functie stoppen

Bijvoorbeeld:

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

Mijn probleem is dat als een bepaalde voorwaarde waar wordt (in de functie check_winner) en functie end()wordt uitgevoerd, deze teruggaat naar computer()of player()omdat er geen regel is die de computer vertelt om te stoppen met het uitvoeren van player()of computer(). Hoe stop je functies in Python?


Antwoord 1, autoriteit 100%

Een eenvoudig returnstatement zal de functie ‘stoppen’ of retourneren; in precieze termen, het ‘retourneert’ de uitvoering van de functie naar het punt waarop de functie werd aangeroepen – de functie wordt beëindigd zonder verdere actie.

Dat betekent dat je een aantal plaatsen in je functie kunt hebben waar het kan terugkeren.
Zoals dit:

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()

Antwoord 2, autoriteit 13%

In dit voorbeeld wordt de regel do_something_else()niet uitgevoerd als do_not_continueTrueis. In plaats daarvan keert de besturing terug naar de functie genaamd some_function.

def some_function():
    if do_not_continue:
        return  # implicitly, this is the same as saying `return None` 
    do_something_else()

Antwoord 3, autoriteit 6%

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

Hierboven staat een vrij eenvoudig voorbeeld… Ik heb een verklaring verzonnen voor check_winnermet behulp van score = 100om aan te geven dat het spel voorbij is.

Je zult een vergelijkbare methode willen gebruiken om scoredoor te geven aan check_winner, met behulp van game_over = check_winner(score). Vervolgens kun je aan het begin van je programma een score maken en deze doorgeven aan computeren player, net zoals game_overwordt afgehandeld.


Antwoord 4, autoriteit 6%

Ik ga dit gewoon doen

def function():
  while True:
    #code here
    break

Gebruik “break” om de functie te stoppen.


Antwoord 5, autoriteit 6%

Hiermee wordt de functie beëindigd en u kunt zelfs het bericht “Fout” aanpassen:

import sys
def end():
    if condition:
        # the player wants to play again:
        main()
    elif not condition:
        sys.exit("The player doesn't want to play again") #Right here 

Antwoord 6

Misschien ben je op zoek naar yield, het is hetzelfde als return, maar het stopt de uitvoering van de functie in plaats van de functies te beëindigen, Je kunt generatoren hier bekijken.


Antwoord 7

systeem importeren

en plaats sys.exit() waar je wilt stoppen.

Other episodes