擅长:python、mysql、java
<p>您还需要循环<code>n</code>的值。还要注意,“first to <code>n</code>”与“best out <code>2n-1</code>”相同。所以我们可以说<code>m = 2 * n - 1</code>,看看谁在这一盘中赢的最多。<code>max(set(product), key=product.count)</code>是一种简短但不透明的方法,可以判断谁赢得了最多的比赛。另外,既然可以直接将值存储在元组中,为什么还要费心用字符串来表示概率,然后使用字典来读取它们呢。在</p>
<pre><code>import itertools
pWin = 0 #the probability susie wins the match
n = 0
while pWin<0.9:
n += 1
m = 2 * n - 1
pWin = 0
for prod in itertools.product([0.837,0.163], repeat=m):
#test who wins the match
if max(set(prod), key=prod.count) == 0.837:
pWin += reduce(lambda total,current: total * current, prod)
print '{} probability that Susie wins the match, with {} games'.format(pWin, n)
</code></pre>