<p>这行代码有一个问题:</p>
<pre><code>newlisty = makepiles(pile1, pile2, pile3)
</code></pre>
<p>您希望<code>makepiles</code>返回3个列表,而它返回<code>None</code>(未返回显式项)</p>
<p>我想如果你从那个函数返回堆,它会工作的</p>
<p>另一件事是,你正在这样做:</p>
<pre><code>newlisty = (pileX, pileY, pileZ)
</code></pre>
<p>这将创建一个列表元组,您将遍历整个列表,而不是单个卡片。我相信你想要</p>
<pre><code>newlisty = pile1 + pile3 + pile2`
</code></pre>
<p>这将创建一个由21个元素组成的复合列表,通过线性组合较小的堆</p>
<hr/>
<p>其他意见:</p>
<p>考虑将decktype和card type存储在<code>dict</code>中。这样,您就可以快速查找并生成堆,而不必编写一长串<code>if</code>语句。示例:</p>
<p>你可以减少</p>
<pre><code>cardtype = random.randint(1,13)
if cardtype == 1:
card = "A"
elif cardtype == 2:
card = "2"
elif cardtype == 3:
card = "3"
elif cardtype == 4:
card = "4"
elif cardtype == 5:
card = "5"
elif cardtype == 6:
card = "6"
elif cardtype == 7:
card = "7"
elif cardtype == 8:
card = "8"
elif cardtype == 9:
card = "9"
elif cardtype == 10:
card = "10"
elif cardtype == 11:
card = "J"
elif cardtype == 12:
card = "Q"
else:
card = "K"
</code></pre>
<p>到</p>
<pre><code>cardtype_lookup = { 1 : 'A', 2 : '2', 3 : '3', .... 12 : 'K' }
card = cardtype_lookup[random.randint(1, 13)]
</code></pre>
<p>……等等</p>