【问题标题】:Function won't return new value Python 2.7函数不会返回新值 Python 2.7
【发布时间】:2016-04-18 20:57:12
【问题描述】:

我正在制作简单的井字游戏(不像我想象的那么简单)。 我想创建一个函数来询问玩家想要玩哪个符号(x 或 o)。我有返回值的问题。它只是不会返回任何东西......就像没有任何改变一样。

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 赋值之类的示例,它会打印初始字符串。我做错了什么?

【问题讨论】:

  • 你是怎么调用这个函数的?看起来您的问题可能是对实际参数和返回值的误解。例如,playercomputer 在这里作为参数是没有意义的。参数用于调用者告诉函数事情,而不是函数告诉调用者事情。
  • 可能是markdown问题,但是缩进好像不对。确保 def 和 while 之后的所有内容都缩进 4 个空格。
  • 你应该对player_choicecomputer_choice 做点什么吗?对函数的调用也很棒

标签: python-2.7 return return-value function


【解决方案1】:

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

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

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()

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 忘记添加最后一行代码(它在 src 代码中)。还是有什么错误
    猜你喜欢
    • 2014-08-22
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多