-1

我有一个函数可以创建一个随机的 n × 2 整数数组,例如:

[6,6] [6,5] [3,4] [2,3]

然后该函数所做的是使用这些数组来计算数组元素的总和(我的函数就是这样做的),然后使用各种条件来确定总和是否等于赢、输或平。

和:

12(输) 11(输) 7(赢) 5(平)

然后该函数应该做的是更新/创建一个基于(这是我遇到问题的部分)的numpy数组:

win = 1, lose = -1, tie = 0

这将创建一个像这样的numpy数组:

[-1,-2,-1,-1]

如果有人可以帮助我,那就太好了!

def game_session(num_games=100):
    values = rand.randint(1,7, 2*num_games)
    rolls_array = values.reshape((num_games,2))
    for a in rolls_array:
        sum2 = a[0]+a[1]
        if sum2 == 2 or sum2 == 3 or sum2 == 12 :#lose

        elif sum2 == 7 or sum2 == 11: #win

        else: # tie/0 


    return result
4

1 回答 1

1

您的函数可能看起来很简单,但这可能是重构它的好时机。我建议创建一个函数,它接受一对值并返回它的分数——这样可以更容易地看到到底发生了什么——然后为你的每一行调用该函数rolls_array。该score函数可能如下所示:

LOSE = -1
TIE = 0
WIN = 1

def score(one, two):
    total = one + two
    if total in (2, 3, 12):
        return LOSE
    elif total in (7, 11):
        return WIN
    else:
        return TIE

然后,您可以将其应用于数组,如下所示:

>>> rolls = np.array([[1, 2], [5, 6]])
>>> result = np.array([score(*roll) for roll in rolls])
>>> print(result)
[-1 1]

然后,要将其集成到您的game_session函数中,您可以删除 for 循环并将返回更改为

    return np.array([score(*roll) for roll in rolls_array])
于 2019-03-28T03:09:04.733 回答