以下是我的功能:

def seq_sum(n):
    """ input: n, generate a sequence of n random coin flips
        output: return the number of heads
        Hint: For simplicity, use 1,0 to represent head,tails
    """
    flip = 0
    heads = 0
    while flip <= n:
        coin = random.randint(0,2)
        flip += 1
        if coin == 1:
            heads += 1

    print(heads)

输出如下:
55
1
0
2
1

等等。但我想要的是头的数量,加上输出的列表:
55

[1, 0, 2, 1, .....]

当我尝试打印(列表(heads))时,收到以下错误消息:
TypeError:“int”对象不可iterable

最佳答案

在你的职能中,你只是在跟踪总人数,而不是他们的历史。您需要创建一个iterable集合来保存中间值,例如list或Numpy数组。

import numpy as np

def seq_sum(n):
    flips = np.random.randint(low=0, high=2, size=n)
    return sum(flips), flips.tolist()

# Example usage.
total_heads, flips = seq_sum(n=10)

注意,对于numpy的randint函数,开始点和结束点分别是包含的和排除的。

08-07 23:16