<p>首先,这是python,不是C,所以应该使用for循环</p>
<pre><code>for prizeWinner in prizeWinners:
</code></pre>
<p>这样就不需要<code>range()</code>。”如果我需要知道索引,“我听到你问?好吧,在这种情况下,你没有,但如果你有,pythonic的方法是使用<code>enumerate()</code>像这样</p>
<pre><code>for ii,prizeWinner in enumerate(prizeWinners):
</code></pre>
<p>我知道这很迂腐,但让我们看看这个简单的更改对代码的影响。你知道吗</p>
<pre><code>def prizeHandout(prizeWinners):
for prizeWinner in prizeWinners:
if len(prizeWinners) == 24:
prizeWinner[2] = (int(prize[0]))
elif len(prizeWinners) == 12:
prizeWinner[2] = (int(prize[1]))
elif len(prizeWinners) == 6:
prizeWinner[2] = (int(prize[2]))
print(prizeWinners)
</code></pre>
<p>已经感觉好多了。<br/>
现在,“奖金是一个全局变量”已经不好了。所以我们应该将其传递到函数中,然后使用默认值。<br/>
你为什么要把奖品当作智力来投?我相信你有一个很好的理由,但如果这个理由恰好是你正在将<code>str</code>转换成<code>int</code>,我建议你使用<a href="https://docs.python.org/2/library/ast.html#ast.literal_eval" rel="nofollow noreferrer">ast.literal_eval()</a>。我要删除它,因为它与你的问题没有任何关联。
至于把奖品加在获奖者身上,让我们做出改变。你知道吗</p>
<pre><code>def prizeHandout(prizeWinners, prize=[10,20,30]):
for prizeWinner in prizeWinners:
if len(prizeWinners) == 24:
prizeWinner[2] += prize[0]
elif len(prizeWinners) == 12:
prizeWinner[2] += prize[1]
elif len(prizeWinners) == 6:
prizeWinner[2] += prize[2]
print(prizeWinners)
</code></pre>
<p>我无法从你们的节目中回答的是,为什么你们要由len(获奖者)来决定奖品?我想你要做的是看看它们在数组中是什么索引。所以,这就是<code>enumerate()</code>很方便的地方。试着穿上这件衣服,如果得奖者排在得奖者名单的第25位,那么得奖者会增加10,如果得奖者排在第13位,那么会增加20,如果得奖者排在第7位,那么会增加30。你知道吗</p>
<pre><code>def prizeHandout(prizeWinners, prize=[10,20,30]):
for ii, prizeWinner in enumerate(prizeWinners):
if ii == 24:
prizeWinner[2] += prize[0]
elif ii == 12:
prizeWinner[2] += prize[1]
elif ii == 6:
prizeWinner[2] += prize[2]
print(prizeWinners)
</code></pre>
<p>我只能说这些了。我希望你能跟我走。你知道吗</p>