将列表索引与字符串匹配以创建一副有效的纸牌



这是针对学校作业的。我有一个从 0 到 51 的列表,代表一副纸牌。我的目标是创建一个函数,允许用户输入一个从0到51的数字,每个数字都将匹配一副牌中的一张牌。例如,如果数字 0 代表钻石的王牌,1 代表钻石的 2,依此类推...... 每 14 个数字,花色应该换成下一个数字。这是我到目前为止所拥有的:

deck = list(range(52))
def cardid(card_num):
suits = ["diamonds", "hearts", "clubs", "spades"]
cards = ["ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack","queen", "king"]

我被困在尝试将数字与卡片匹配时。赋值说明建议使用楼层划分和除法余数,但这不需要相当多的 if 语句吗?有没有另一种(更简单(的方法可以做到这一点?请记住,我刚刚开始使用python。

这实际上非常简单。您需要两个索引,一个对应于花色列表,另一个对应于卡片列表。以下是获取它们的方法:

def cardid(card_num):
suits = ["diamonds", "hearts", "clubs", "spades"]
cards = ["ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack","queen", "king"]
suits_index = int(card_num/13) # Here's your floor division
cards_index = card_num%13      # And here's your division remainder 
print ("The card is",cards[cards_index],"of",suits[suits_index])

要进行验证,只需按如下方式调用该函数:

card_num = int(input("Enter a number: "))
# Just to make sure the input is valid for the scope of this function
if card_num >=0 and card_num < 52:
cardid(card_num)

相关内容

最新更新