Cześć
Mam problem z zadaniem z książki pt.Automate the Boring Stuff with Python
Siedzę nad tym drugi dzień i nie mogę wpaść na rozwiązanie - wiem, że kod jest brzydki, chciałbym, żeby na początek po prostu chodził, średnio to ogarniam, prawie cały kod powstał na zasadzie 'spróbuję tak, może zadziała, jak nie, to może tak..'.
W zadaniu chodzi o to, by wygenerować listę 100 rzutów, 'Head' / 'Tail' i sprawdzić jaka jest szansa, że przy 10 tysiącach takich list trafi się nam seria 6 takich samych wyników z rzędu (6x head lub 6x tail obok siebie). Przez kilka godzin w ciągu tych dwóch dni napisałem tyle:
# Coin Flip Streaks
import random
for experimentNumber in range(5):
list_of_heads_tails = []
for coin_flip in range(100):
head_or_tail = random.randint(0, 1)
if head_or_tail == 0:
list_of_heads_tails.append('H')
if head_or_tail == 1:
list_of_heads_tails.append('T')
#print(list_of_heads_tails)
number_of_streaks = 0
tails = 'T'
heads = 'H'
streaks = []
for ht in range(len(list_of_heads_tails) - 5):
if list_of_heads_tails[ht] == heads:
if list_of_heads_tails[ht + 1] == heads:
if list_of_heads_tails[ht + 2] == heads:
if list_of_heads_tails[ht + 3] == heads:
if list_of_heads_tails[ht + 4] == heads:
if list_of_heads_tails[ht + 5] == heads:
#print('There is a "H" streak!')
number_of_streaks += 1
if list_of_heads_tails[ht] == tails:
if list_of_heads_tails[ht + 1] == tails:
if list_of_heads_tails[ht + 2] == tails:
if list_of_heads_tails[ht + 3] == tails:
if list_of_heads_tails[ht + 4] == tails:
if list_of_heads_tails[ht + 5] == tails:
#print('There is a "T" streak!')
number_of_streaks += 1
streaks.append(total_streaks)
print('Number of streaks: ' + str(number_of_streaks))
print(streaks)
Prawdopodobnie od tych ifów będą niektórych bolały oczy xD Próbowałem z pętlami, ale chwilowo odpuściłem, chcę, by to działało. Number_of_streaks to jest liczba trafionych szóstek w każdej 100-wynikowej liście. Chciałbym zsumować w tej chwili liczbę number_of_streaks z 5 prób, ale nie mogę do tego dojść.. próbowałem jakoś ze zmiennymi, operacje '+=', w pętli, poza pętlą, próbowałem stworzyć dodatkową listę i zaappendować wyniki, ale cały czas dochodzę do sytuacji gdzie pokazuje mi tylko ostatni wynik number_of_streaks. Może ktoś zechce podpowiedzieć jak to zrobić? Będę też wdzięczny za wszelkie sugestie.
Te listy jakoś mnie przerastają, pewnie powinienem spędzić nad nimi więcej czasu.