Как я могу получить список с m хвостами?питон - PullRequest
0 голосов
/ 26 сентября 2018

Итак, мне нужно создать список с m хвостами.Элементы списка будут случайным выбором между хвостом и головой.Мне понравилось:

Def S(m):
    list=[]
    counter=0
    signs=["head","tail"]
    while counter<(m):
        list.append(random.choice(signs))
        for k in list:
            if k=="tail":
               counter+=1
    print(list)

Так что этот дает мне список, но не с m хвостами.Я думаю, что время здесь не так, но я не уверен, как написать код.Можете ли вы помочь мне изменить это?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Если вы хотите, чтобы ваш собственный код работал, вы можете просто добавить:

counter = 0

После условия while .Ошибка в вашем коде - приращение количества.То, что он делает, для одного цикла, он подсчитывает все хвосты в вашем списке и добавляет это к счетчику, затем, как эффект снежного кома, ЖЕ хвосты подсчитывались и добавлялись ОПЯТЬ для каждого последующего цикла.

Эта коррекция немного неэффективна, так как вы всегда очищаете значение счетчика, а затем снова начинаете считать.Если ваш список достигает больших значений индекса, это может замедлить ваш код.

Удачи!

0 голосов
/ 26 сентября 2018

это будет работать:

from random import choice

def S(m):
    lst = []
    counter = 0
    signs = ["head", "tail"]
    while counter < m:
        toss = choice(signs)
        lst.append(toss)
        if toss == 'tail':
            counter += 1
    return lst

lst = S(10)
print(lst)                # ['head', 'tail', 'head', 'head', 'tail', ...]
print(lst.count('tail'))  # 10
...