2015-01-06 3 views
5

Например:Python: Как остановить функцию?

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 

Моя проблема заключается в том, что если определенное условие становится истинным (в функции check_winner) и функция конечного() выполняет он будет идти обратно к компьютеру() или плеера(), потому что нет ни одной линии который говорит компьютеру прекратить выполнение проигрывателя() или компьютера(). Как остановить функции в Python?

+0

'return' завершает функцию, это то, что вы ищете? – Maroun

+0

Да (до тех пор, пока он может быть использован снова без перезапуска программы). – user3711671

+0

Я забыл добавить 1 вопрос (основной) в вопрос, но у меня все еще есть проблема, как и другие, сказал, что возврат возвращается к функции, которая называется 2-й функцией (с оператором return), поэтому она никогда не остановится, добавив возврат к несколько мест ничего не сделали, и программа все равно будет выполняться, где именно мне нужно написать return? Я хочу, чтобы программа вернулась к main(), если игрок хочет, и если он этого не хочет, я полностью остановлюсь программа. – user3711671

ответ

4

Простой оператор возврата будет «останавливаться» или возвращать функцию в точном выражении, она «возвращает» выполнение функции в точку, в которой была вызвана функция, - функция прекращается без дальнейших действий.

Это означает, что у вас может быть несколько мест по всей вашей функции, где она может вернуться. Как это:

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

Так что мне просто нужно добавить 'return winner' (или просто вернуть (None)?) До end() в функции check_winner? – user3711671

+0

Да, любая точка, в которой указан возврат, прекратит выполнение функции и вернется к вызывающему коду. – Hektor

0

В этом примере линия do_something_else() не будет выполнена, если do_not_continue является True. Вместо этого Control вернется к той функции, которая называется 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 

Выше довольно простой пример ... я сделал заявление для check_winner используя score = 100 для обозначения игры завершения.

Вам необходимо использовать аналогичный метод прохождения score в check_winner, используя game_over = check_winner(score). Затем вы можете создать счет в начале вашей программы и передать его до computer и player так же, как game_over.

Смежные вопросы