函数不会 return 新值 Python 2.7

Function won't return new value Python 2.7

我正在制作简单的 Tic Tac Toe 游戏(并不像我想象的那么简单)。 我想创建一个函数,询问玩家想要玩哪个标志(x 或 o)。我对 returning 值有疑问。它不会 return 任何东西...就像什么都没有改变一样。

player_choice = ''
computer_choice = ''

def player_sign(player, computer):
    choice = raw_input("Do you want to be X or O?:  ").lower()
    while choice != 'x' and choice != 'o':
        print "Error!\n Wrong input!"
        choice = raw_input("Do you want to be X or Y?:  ").lower()
    if choice == 'x':
        print "X is yours!"
        player = 'X'
        computer = 'O'
        return player, computer
    elif choice == 'o':
        print "You've chosen O!"
        player = 'O'
        computer = 'X'
        return player, computer
    else:
        print "Error!\n Wrong input!"
        return 0
player_sign(player_choice, computer_choice)

尝试使用示例为 player_choice 和 computer_choice 赋值,并打印初始字符串。我做错了什么?

您需要在最后的代码中调用 player_sign(player_choice,computer_choice)

您想在函数内改变不可变类型(字符串)。这是不可能的。详细解释请参考问题:How do I pass a variable by reference?.

您应该做的只是将函数的 return 值分配给函数调用范围内的名称。

def player_sign():
    choice = raw_input("Do you want to be X or O?:  ").lower()
    while choice != 'x' and choice != 'o':
        print "Error!\n Wrong input!"
        choice = raw_input("Do you want to be X or Y?:  ").lower()
    if choice == 'x':
        print "X is yours!"
        player = 'X'
        computer = 'O'
        return player, computer
    elif choice == 'o':
        print "You've chosen O!"
        player = 'O'
        computer = 'X'
        return player, computer
    else:
        print "Error!\n Wrong input!"
        return None, None

player_choice, computer_choice = player_sign()