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 return
statement 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_continue
True
is. 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_winner
met behulp van score = 100
om aan te geven dat het spel voorbij is.
Je zult een vergelijkbare methode willen gebruiken om score
door 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 computer
en player
, net zoals game_over
wordt 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.