Python:如何在 function_1 中计算局部变量并将结果发送到 function_2 而无需每次调用 function_2 时都运行 function_1?

问题描述 投票:0回答:1

我正在尝试设计一款具有“洗牌”功能和“发牌”功能的纸牌游戏。我遇到的问题是,每次我将“洗牌”的结果传递给“发牌”时,牌都会被洗牌。我是局部变量的新手...当我只想计算一次“洗牌”效果时,如何将局部变量从“洗牌”传递到“交易”?

这是我尝试过的简化示例:

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 打印为一致的值?

*注意:我知道我可以通过使其只是一个函数来简化这段代码,但我需要帮助理解局部变量如何在函数之间移动。谢谢

python local-variables
1个回答
0
投票

这是一个关于如何从 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
© www.soinside.com 2019 - 2024. All rights reserved.