import random
numStreaks = 0
for experimentNum in range(10000):
# Code that creates a list of 100 'heads' or 'tails' values.
outcome = []
for i in range(100):
if random.randint(0,1) == 0:
outcome.append('H')
else:
outcome.append('T')
# Code that checks if there is a streak of 6 heads or tails in a row
Hstreak = 0
for i in range(len(outcome)):
for x in range(6):
if outcome[x] == 'H':
Hstreak += 1
if Hstreak == 6:
numStreaks += 1
else:
numStreaks = 0
print ('Chance of streak: %s%%' % (numStreaks/100))
我在第四章的硬币翻转项目上遇到了麻烦。我不知道我错过了什么或做错了什么。我试着运行代码,但什么也没出现。我查阅了其他人对这个项目的看法,但我仍然不知道为什么我的代码不起作用。
在中
if Hstreak == 6:
numStreaks += 1
else:
numStreaks = 0
每次HStreak
不为6时,都将numStreaks
设置为0。
这里有很多错误。首先,在这段代码中:
for x in range(6):
if outcome[x] == 'H':
Hstreak += 1
你只检查过每组100次中的前6次翻转。只有当它们都是"H"时,你的numStreaks
才会增加。然后,正如@Emre Sahin所说,每次Hstreak
不是6时,您都会将numStreaks
设置为0。最后,即使T打破了连胜纪录,你也不会在任何时候重置你的Hstreak计数器。总而言之,你需要重新思考寻找连胜背后的逻辑。