我们被指派制作一个洗牌程序。我还是一个编程新手,所以这对我来说不是一个最容易的任务。我们得到了对itertools进行研究的提示,所以我就是这么做的。到目前为止,我的计划如下:
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])
如果运行此选项,您将获得:
Order of deck:
9 of Heart
10 of Diamond
2 of Spade
1 of Heart
11 of Spade
4 of Diamond
10 of Heart
...
你得到一副洗过的牌,就像我想要的
剩下要做的唯一一件事是将1的值更改为“Ace”,将11的值更改为“Jack”
但我不知道怎么做,因为我的列表“卡片组”由52项组成,每一张卡片都是一个元组。比如说
deck[0] = (1, 'Spade')
到目前为止,我唯一学会替换的是
deck.replace(1,"Ace")
及
for n, i in enumerate(deck):
if i == 1:
deck[n] = "Ace"
但这两个都不起作用。 第一个不起作用,因为我的组不是字符串,而是列表。 如果我运行第二个,没有任何变化,输出仍然与没有那段代码时完全相同
总之,我想在我的小程序中将1改为“Ace”,然后我可以将11改为“Jack”。。。 (抱歉英语不好,希望一切都清楚)
有两种方法可以实现这一点,这取决于你正在尝试做什么。如果您想要捕获Jack的值是11的概念,那么您只需要更改显示的值(即,在打印之前进行检查,并将
11
替换为Jack
,等等)。但是,如果该值不是特别需要考虑的,则可以在创建时摆弄该组:你不需要更换任何东西。可以使用函数返回适当的字符串值
使用要显示的字符串创建列表:
相关问题 更多 >
编程相关推荐