在Python中,如何在定义中返回局部变量?

在Python中,如何在定义中返回局部变量?,python,return,definition,subtraction,Python,Return,Definition,Subtraction,我正在尝试创建一个简单的AI程序来玩棍子游戏。问题是我想从棒的总数中减去选择的棒。这个简单的代码显示了一些错误,例如不存在值。我无法为我的值分配返回值。有没有其他方法可以用函数减去值 import random msg = input('Determine stick numbers:') print('Stick number is determined as:', msg) # First player move def robot(stick): y = stick % 4

我正在尝试创建一个简单的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
return
当然有效;它返回一个值。但是,在代码中,您没有捕获该值,它会立即被丢弃

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

msg = player1(int(msg))

您的播放器具有以下功能:

players= {
    '1': robot,
    '2': human
        }
稍后您将它们称为
player1
player2

player1=players[number1]
player2=players[number2]
但当您使用这些函数时,不会对返回值执行任何操作:

这些函数返回了一些东西,但是忽略了值。您需要打印该返回值或将其分配给变量,以便以后可以对该值进行处理

由于返回值被称为
total
,因此您可能需要:

total = player1(int(msg))
print('new total:', total)

什么不起作用?定义函数不作为减去的值返回“player2(int(msg))”应该做什么?请创建一个最小的示例,而不是粘贴整个代码。在您的情况下,这将是一个函数、一个函数调用和一个显示“返回不起作用”的打印。最有可能的是,当您创建这样一个最小的示例时,您将自己看到解决方案。如果没有,请在这里询问。欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。这是有意义的,我会尝试一下。非常感谢。非常感谢,我现在明白了。对不起,这个问题。我问错了。
total = player1(int(msg))
print('new total:', total)