首页 > 解决方案 > 如何在完全不同的函数中使用函数的返回值

问题描述

我正在写一个井字游戏,目前有以下功能:

 # Need: Board, Display Board, Play Game, Alternating Terms, Os, Xs, Wins, Losses

board = ["-", "-", "-",
         "-", "-", "-",
         "-", "-", "-", ]


def display_board():
    print(board[0] + " | " + board[1] + " | " + board[2])
    print(board[3] + " | " + board[4] + " | " + board[5])
    print(board[6] + " | " + board[7] + " | " + board[8])


def handle_turn():
    position = input("\nChoose a position from 1 to 9: ")
    position = int(position) - 1
    return position


def choose_player_marker(marker):
    player_marker = ''
    if marker == 'X' or marker == 'x':
        player_marker = 'X'
        return player_marker
    elif marker == 'O' or marker == 'o':
        player_marker = 'O'
        return player_marker


def opp_move():
    opp_marker = ''
    if choose_player_marker() == 'X':
        opp_marker = 'O'
    else:
        opp_marker = 'X'


def play_game():
    game_current = True
    display_board()
    marker = input("\nPlease choose a marker: 'X' or 'x' OR 'O' or 'o' : ")
    choose_player_marker(marker)
    opp_move()
    handle_turn()


play_game()

在函数中,def choose_player_marker(marker):我返回player_marker = 'X'or player_marker = 'O',具体取决于条件。

我想使用结果'X''O'函数def opp_move():来确定对手会选择哪个标记。但是,我很难正确委派 return 声明。我尝试marker在函数中使用作为参数,def opp_move():也尝试if choose_player_marker(marker) == 'X'无济于事。

如何正确处理 return 语句,def choose_player_marker(marker):以便我的def opp_move():函数能够确定对手会选择什么标记?

标签: pythonfunctionreturn

解决方案


现在我们可以看到您的完整代码,解决方案很简单。

你已经打电话choose_player_marker()main。你也不需要调用它opp_move。您需要做的是在 main 中调用它时捕获结果,然后将值传递给 opp_move:

def opp_move(marker):
    if marker == 'X':
        opp_marker = 'O'
    else:
        opp_marker = 'X'
    return opp_marker


def play_game():
    game_current = True
    display_board()
    marker = input("\nPlease choose a marker: 'X' or 'x' OR 'O' or 'o' : ")
    marker = choose_player_marker(marker)
    opp_move(marker)
    handle_turn()

现在这段代码还有很多其他的问题,比如 handle_turn 没有做任何有用的事情,正如其他人指出的那样,choose_player_marker 可以简单地替换为对 的调用marker.upper(),但至少这应该能让你继续前进。


推荐阅读