是否可以将定义从一个子例程转移到另一个子例程?我没有办法将dealthehand
转移到playthegame
而没有说“deckchoice is not defined
”
def dealthehand():
deck2=[123456789]
deckchoice=random.choice(deck2)
deckchoice2=random.choice(deck2)
deckchoice3=random.choice(deck2)
deckchoice4=random.choice(deck2)
deckchoice5=random.choice(deck2)
deckchoice6=random.choice(deck2)
def playthegame():
dealthehand()
print(deckchoice)
答案 0 :(得分:1)
我们的想法是从函数中返回一个值,以便调用代码可以访问结果。
def dealthehand():
deck2=[1, 2, 3, 4, 5, 6, 7, 8, 9]
deckchoice=random.choice(deck2)
deckchoice2=random.choice(deck2)
deckchoice3=random.choice(deck2)
deckchoice4=random.choice(deck2)
deckchoice5=random.choice(deck2)
deckchoice6=random.choice(deck2)
return (deckchoice, deckchoice2, deckchoice3, deckchoice4, deckchoice5, deckchoice6)
def playthegame():
hand = dealthehand()
print(hand) # will print a tuple, e.g. (5, 8, 2, 2, 1, 3)
通过索引元组来访问手中的各张牌,例如第3张牌是hand[2]
(索引从0开始)。
构造返回值(在这种情况下是一个元组)非常麻烦。你最好使用一个复杂的变量将处理过的牌组合成一只手。您可以使用元组,列表,字典或您自己的自定义类来执行此操作 - 这取决于您需要如何使用它。
以下是使用列表代表6张牌的一个例子:
def dealthehand():
cards = [1, 2, 3, 4, 5, 6, 7, 8, 9]
return [random.choice(cards) for i in range(6)]
这使用列表推导来创建6张随机卡的列表。