2017-04-19 88 views
-1

我想教自己的Python和我正在修改代碼,目前計數在一些翻轉頭和尾數。我希望它能夠統計連續的頭部數量。這是我迄今爲止的代碼。在Python中連續投幣計數?

def coinFlips(numberOfTosses): 
    Heads = 0 
    tossNum = 0 
    while tossNumber < numberOfTosses: 
     value = random.randint(1,2) 
     if value == 1: 
      numHeads = Heads + 1 
     tossNum = tossNum + 1 
    return (Heads, numTosses-Heads) 

我覺得答案是盯着我的臉,但我無法弄清楚我的生活!

+0

什麼是你的問題? – BrenBarn

+0

@BrenBarn @BrenBarn而不是計算正面/反面的數量,我希望它能夠返回連續翻轉的最長的「條紋」。 – arduino123

+0

想要輸出「A」但編碼爲「B」,您如何期望A到來自B? – NoobEditor

回答

0

聽起來像是你想連續groupby頭和尾巴,然後找到投擲的listmaxlen只有頭(1):

import itertools as it 
def coinFlips(numberOfTosses): 
    flips = (random.randint(1,2) for _ in range(numberOfTosses)) 
    return max(len(list(tosses)) for coin, tosses in it.groupby(flips) if coin == 1) 
      ^^ ^^ ^^        ^^     ^^ 
      max len list tosses     groupby consecutive  only heads