我正在尝试设计一款具有“洗牌”功能和“发牌”功能的纸牌游戏。我遇到的问题是,每次我将“洗牌”的结果传递给“发牌”时,牌都会被洗牌。我是局部变量的新手...当我只想计算一次“洗牌”效果时,如何将局部变量从“洗牌”传递到“交易”?
这是我尝试过的简化示例:
import random
def shuffle():
x = random.randrange(1, 11)
return x
def deal():
x = shuffle()
print('\nx =', x)
inpt = input('\nEnter anything to deal again, or x to quit: ')
if inpt == 'x':
quit()
while True:
deal()
我希望“deal”打印出一致的 x 值,但每次迭代都会对其进行打乱。如何将 x 打乱一次,以便将 x 打印为一致的值?
*注意:我知道我可以通过使其只是一个函数来简化这段代码,但我需要帮助理解局部变量如何在函数之间移动。谢谢
这是一个关于如何从 52 副牌中向 2 位玩家发 7 张牌的简单示例。
import numpy as np
创建牌组并空手:
deck = list(range(52))
hands = [[], []]
就地洗牌:
np.random.shuffle(deck)
从牌组发牌到手牌:
for _ in range(7):
for i in range(len(hands)):
hands[i].append(deck.pop())
结果:
hands
#[[3, 12, 33, 46, 21, 18, 42], [19, 30, 16, 25, 23, 28, 20]]
len(deck)
# 38 = 52 - 14