2014-09-30 31 views
0

我想在Python中制作一个二十一点游戏,并且我为每个选项打了一个单独的函数来等待...当我调用每个函数时,我将它传递给玩家手中的总数到目前为止:​ ​ ​返回函数似乎并没有工作

def hit(PlayerHand): 
    PlayerCard3 = random.randint(2,10) 
    print("You got %s" %PlayerCard3) 
    PlayerHand = PlayerHand+PlayerCard3 
    return(PlayerHand) 

然后,我打印的球员总手的功能之外,但它返回PlayerHand的前值,而不是新的价值。我不知道该怎么做。

+1

什么调用该函数的样子代码? – dpassage 2014-09-30 03:15:51

+3

你的代码适用于我 - 我打赌你这样做:PH = 5;击(PH);打印PH,而不是PH =命中(PH) – Colin 2014-09-30 03:18:02

+0

如果'PlayerHand'引用了'int'(对不起,但我不知道21j),那么你应该记住'int'是不可变的 - 你不能改变它们。所以当你执行'PlayerHand = PlayerHand + PlayerCard3'时,你正在创建一个新的'int'对象,而不是改变现有的对象。 – cdarke 2014-09-30 05:09:29

回答

1

确保您保存新值:

print("New value is: {}".format(hit(PlayerHand))) 

PlayerHand=hit(PlayerHand) 
print(PlayerHand)