【发布时间】:2018-11-19 01:13:41
【问题描述】:
我在使用另一种功能发牌时遇到问题。这是我到目前为止所拥有的。
import random as rand
def create():
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
suites = ['H', 'C', 'D', 'S']
deck = [[r + s] for s in suites for r in ranks]
return deck
def cards_dealt (num_cards, num_players, deck):
rand.shuffle(deck)
print(cards_dealt(5, 3, deck))
我了解该功能不完整。我需要 num_cards 是每个玩家收到的卡片数量,num_players 是玩家数量,deck 是函数 create() 中的卡片字符串列表。 例如,打印语句将显示三位玩家每人从已洗牌的列表牌组中获得的 5 张牌。我的问题是,每当我写东西时,它都会说没有定义甲板。
【问题讨论】:
-
deck是函数create中的局部变量。它在函数之外是不可见的。您必须将其设为全局或将其返回。回到你的 Python 101。 -
但我确实退货了?这就是我感到困惑的原因。
-
@DyZ
create以return deck结尾。cards_dealt有一个名为deck的参数。缺少的是代码中某处对create的调用。 -
不幸的是你没有调用你的 create() 函数,你只是定义它,在打印之前添加一个简单的
deck = create()。但我必须注意,不鼓励在函数内部和外部使用相同的变量名,因为这可能会导致稍后在变量范围方面产生混淆,但在您的示例中会这样做。 -
作为如何解决下一个问题的提示:发牌基本上只是将牌组分成大小相等的块(除了一些剩余部分)。在 Stack Overflow 上已经有很多问题有很好的答案,而且应该很容易将其中一个问题应用到您的程序中。
标签: python list loops random list-comprehension