如何在Python中使用定义中的局部变量返回? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python中使用定义中的局部变量返回? [关闭]相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个简单的AI程序,它可以玩棒游戏。问题是我想从总棒数中减去所选择的棒。这个简单的代码显示了一些错误,例如不存在的值。我无法为我的值分配返回值。还有另一种方法可以用函数减去价值吗?

import random
msg = input('Determine stick numbers:')
print('Stick number is determined as:', msg)

# First player move

def robot(stick):
    y = stick % 4
    if y==0:
        y=randint(1,3)
    mov=int(y)
    print('machine chose:', mov)
    total = stick-mov
    return total

def human(stick2):
    mov2= int(input('your turn:'))
    print('human chose:', mov2)
    total = stick2-mov2
    return total

players= {
    '1': robot,
    '2': human

        }

number1= input('Determine first player machine(1) or human(2):')
number2= input('Determine second player (1) or (2):')

player1=players[number1]
player2=players[number2]
print(player1, player2)

print('the game begins')

while True:
   player1(int(msg))
   if msg == 0: break

   print('remained sticks:', msg)
   player2(int(msg))
   print('remained sticks:', msg)
   if msg == 0: break
答案

你的玩家是参考函数:

players= {
    '1': robot,
    '2': human
        }

后来你称他们为player1player2

player1=players[number1]
player2=players[number2]

但是当您使用这些函数时,您不会对返回值执行任何操作:

player1(int(msg))
...
player2(int(msg))

所以这些函数会返回一些东西,但是你会忽略它的值。您需要打印该返回值或将其分配给变量,以便稍后可以对该值执行某些操作。

由于您的返回值称为total,您可能需要:

total = player1(int(msg))
print('new total:', total)
另一答案

当然,return确实有效;它返回一个值。但是,在您的代码中,您没有捕获该值,它会立即被丢弃。

它真的不清楚你想要什么,但也许你想要这样的东西:

msg = player1(int(msg))

以上是关于如何在Python中使用定义中的局部变量返回? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

python中使用闭包及修改外部函数的局部变量

Python函数中的变量和函数返回值

Python函数中的变量和函数返回值的使用实例

Python:将字典中的变量加载到命名空间中

python函数中局部变量与全局变量遵守规则

python中的作用域以及内置函数globals()-全局变量locals()-局部变量