擅长:python、mysql、java
<p>这不是您明确要求的,但是您的代码与所有这些<code>if</code>语句有点重复。你可以做的一件事是把移动的概念化为按模滚给定的量移动,然后是一个“bump”,大多数方块是0,梯子开始的方块是正数,蛇顶部的方块是负数。字典是bumps的自然数据结构,只显式地存储负的和正的bump。dictionary方法<code>get()</code>可用于返回bump(如果最后一个方块是字典中的一个键)或返回默认的<code>0</code>(如果不是的话)。那么单个游戏模拟可以是:</p>
<pre><code>bump = {1:37, 4:10, 9:22, 21:21, 28:56, 51:16, 72:19, 80:19, 17:-10, 54: -20, 63: -4, 64: -4, 87: -51, 92: -19, 95:-20, 98: -19}
def simulateGame():
pos = 0
count = 0
while pos < 100:
roll = random.randint(1,6)
pos += roll + bump.get(pos,0)
count += 1
return count
</code></pre>
<p>预计转鼓数量可通过以下公式估算:</p>
^{pr2}$
<p>上面的一些内容可能涉及到您还没有看到的东西,但是当您发现自己在编写几乎完全相同的代码时,您应该尽可能简化它。重复代码不是Python式的。在</p>
<p>如果您还没有研究过字典,但是已经研究过列表,那么您可以使<code>bump</code>一个包含101个项目的数组,初始化为:<code>bump = [0]*101</code>(101个零),然后进行一系列赋值,如<code>bump[1] = 37</code>,<code>bump[4] = 10</code>,等等,然后替换该行:</p>
<pre><code>pos += roll + bump.get(pos,0)
</code></pre>
<p>更简单的说法是:</p>
<pre><code>pos += roll + bump[0]
</code></pre>
<p>实际上是说“在当前位置加上滚动加上产生的凹凸”</p>
<p>代码</p>
^{pr2}$
<p>在sum函数内部使用生成器表达式。如果你还不熟悉这些,你可以在一个显式的循环中添加它们,就像A.Sokol的优秀答案一样</p>