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

问题描述 投票:-1回答:2

我正在尝试创建一个简单的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
python return definition subtraction
2个回答
1
投票

你的玩家是参考函数:

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)

1
投票

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

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

msg = player1(int(msg))
© www.soinside.com 2019 - 2024. All rights reserved.