<p>我们被指派制作一个洗牌程序。我还是一个编程新手,所以这对我来说不是一个最容易的任务。我们得到了对itertools进行研究的提示,所以我就是这么做的。到目前为止,我的计划如下:</p>
<pre><code>import itertools
import random
deck = list(itertools.product(range(1,14),['Heart','Spade','Club','Diamond']))
random.shuffle(deck)
print("Order of deck:")
for i in range(52):
print(deck[i][0], "of", deck[i][1])
</code></pre>
<p>如果运行此选项,您将获得:</p>
<pre><code>Order of deck:
9 of Heart
10 of Diamond
2 of Spade
1 of Heart
11 of Spade
4 of Diamond
10 of Heart
...
</code></pre>
<p>你得到一副洗过的牌,就像我想要的</p>
<p>剩下要做的唯一一件事是将1的值更改为“Ace”,将11的值更改为“Jack”</p>
<p>但我不知道怎么做,因为我的列表“卡片组”由52项组成,每一张卡片都是一个元组。比如说</p>
<pre><code>deck[0] = (1, 'Spade')
</code></pre>
<p>到目前为止,我唯一学会替换的是</p>
<pre><code>deck.replace(1,"Ace")
</code></pre>
<p>及</p>
<pre><code>for n, i in enumerate(deck):
if i == 1:
deck[n] = "Ace"
</code></pre>
<p>但这两个都不起作用。
第一个不起作用,因为我的组不是字符串,而是列表。
如果我运行第二个,没有任何变化,输出仍然与没有那段代码时完全相同</p>
<p>总之,我想在我的小程序中将1改为“Ace”,然后我可以将11改为“Jack”。。。
(抱歉英语不好,希望一切都清楚)</p>
<p>你不需要更换任何东西。可以使用函数返回适当的字符串值</p>
<pre><code>def get_face(x):
if x == 1:
return 'Ace'
elif x == 11:
return 'Jack'
else: # TODO: add others
return x
for card in deck:
print(get_face(card[0]), "of", card[1])
</code></pre>