以下是我的功能:
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
函数,开始点和结束点分别是包含的和排除的。