Hướng dẫn stop function python - dừng chức năng python

Ví dụ:

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 đúng (trong hàm check_winner) và chức năng end() thực thi, nó sẽ quay lại computer() hoặc player() vì không có dòng nào bảo máy tính ngừng thực hiện player() hoặc computer(). Làm thế nào để bạn dừng các chức năng trong Python?

Georgy

11.1k7 Huy hiệu vàng62 Huy hiệu bạc69 Huy hiệu đồng7 gold badges62 silver badges69 bronze badges

Đã hỏi ngày 6 tháng 1 năm 2015 lúc 15:53Jan 6, 2015 at 15:53

Hướng dẫn stop function python - dừng chức năng python

3

Một câu lệnh

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()
1 đơn giản sẽ 'dừng' hoặc trả lại chức năng; Nói một cách chính xác, nó 'trả lại' thực thi chức năng đế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 nữa.

Đ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 bạn, nơi nó 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()

Georgy

11.1k7 Huy hiệu vàng62 Huy hiệu bạc69 Huy hiệu đồng7 gold badges62 silver badges69 bronze badges

Đã hỏi ngày 6 tháng 1 năm 2015 lúc 15:53Jan 6, 2015 at 15:56

Một câu lệnh

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()
1 đơn giản sẽ 'dừng' hoặc trả lại chức năng; Nói một cách chính xác, nó 'trả lại' thực thi chức năng đế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 nữa.Hektor

Đ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 bạn, nơi nó có thể trở lại. Như thế này:14 silver badges19 bronze badges

2

Đã trả lời ngày 6 tháng 1 năm 2015 lúc 15:56

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

Georgy

11.1k7 Huy hiệu vàng62 Huy hiệu bạc69 Huy hiệu đồng7 gold badges62 silver badges69 bronze badges

Đã hỏi ngày 6 tháng 1 năm 2015 lúc 15:53Jan 6, 2015 at 15:57

Một câu lệnh

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()
1 đơn giản sẽ 'dừng' hoặc trả lại chức năng; Nói một cách chính xác, nó 'trả lại' thực thi chức năng đế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 nữa.jez

Đ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 bạn, nơi nó có thể trở lại. Như thế này:3 gold badges34 silver badges60 bronze badges

Đã trả lời ngày 6 tháng 1 năm 2015 lúc 15:56

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 

HektorhektorFeb 14, 2020 at 17:42

adriancm93adriancm93adriancm93

1.77514 Huy hiệu bạc19 Huy hiệu đồng2 silver badges5 bronze badges

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

Trong ví dụ này, dòng

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()
2 sẽ không được thực thi nếu
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()
3 là
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()
4. Kiểm soát sẽ trả về, thay vào đó, bất kỳ hàm nào được gọi là
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()
5.

Đã trả lời ngày 6 tháng 1 năm 2015 lúc 15:57

JezjezJan 6, 2015 at 16:03

14.4K3 Huy hiệu vàng34 Huy hiệu bạc60 Huy hiệu ĐồngMrAlexBailey

Điều này sẽ kết thúc chức năng và bạn thậm chí có thể tùy chỉnh thông báo "lỗi":18 silver badges30 bronze badges

1

Đã trả lời ngày 14 tháng 2 năm 2020 lúc 17:42

832 huy hiệu bạc5 huy hiệu đồngApr 27, 2021 at 13:42