gpt4 book ai didi

python - 如果一个家庭不平衡,如何编写一个函数来获取?

转载 作者:太空宇宙 更新时间:2023-11-04 04:52:39 25 4
gpt4 key购买 nike

目标是找出一个家庭是否平衡。例如,我们有以下 2 个数组:

kids= {
"Adam": ["Matjaž", "Cilka", "Daniel"],
"Aleksander": [],
"Alenka": [],
"Barbara": [],
"Cilka": [],
"Daniel": ["Elizabeta", "Hans"],
"Erik": [],
"Elizabeta": ["Ludvik", "Jurij", "Barbara"],
"Franc": [],
"Herman": ["Margareta"],
"Hans": ["Herman", "Erik"],
"Jožef": ["Alenka", "Aleksander", "Petra"],
"Jurij": ["Franc", "Jožef"],
"Ludvik": [],
"Margareta": [],
"Matjaž": ["Viljem"],
"Petra": [],
"Tadeja": [],
"Viljem": ["Tadeja"],
}

child 数组告诉你谁是家庭成员谁是 child 。 (这是一个全局数组)

money= {
"Adam": 42,
"Aleksander": 3,
"Alenka": 3,
"Barbara": 37,
"Cilka": 242,
"Daniel": 4,
"Erik": 32,
"Elizabeta": 8,
"Franc": 16,
"Herman": 12,
"Hans": 55,
"Jožef": 7,
"Jurij": 5,
"Ludvik": 37,
"Margareta": 20,
"Matjaž": 142,
"Petra": 3,
"Tadeja": 45,
"Viljem": 55
}

金钱数组告诉你每个人有多少钱。

我们有这个功能:

def balanced(person, money):
#should return true if the family is balanced or not, if not returns false

例如:我们调用函数:

balanced("Adam", money)

它应该返回 true,因为 Adam 有 3 个 child ,而这些 child 也有 child 。如果我们将他们的金额相加,我们将得到相同的值。

  1. 马加兹 (142)
    • 维尔杰姆 (55)
      • 塔德亚 (45)总和 = 242
  2. 西尔卡 (242)
    • 没有 child 总和 = 242
  3. 丹尼尔 (4)
    • 伊丽莎白 (8)
      • 路德维克 (37)
      • 尤里 (5)
        • 法郎(16)
        • 约瑟夫 (7)
          • 阿伦卡 (3)
          • 亚历山大 (3)
          • 佩特拉 (3)
      • 芭芭拉 (37)
    • 汉斯 (55)
      • 赫尔曼 (12)
        • 玛格丽特 (20)
      • 埃里克 (32)总和 = 242

所有 3 个 child 返回的总货币值(value)为 242,因为所有 3 个 child 都这样做,所以返回 TRUE 作为一个平衡的家庭。

我已经写了一个函数来计算一个家庭成员及其后代的钱:

def amount_of_money(person, money):
amount = 0
for kid in kids[person]:
amount += amount_of_money(kid, money)
return amount + money[person]

如果发生这种情况,我该如何编写函数 balanced 使其返回 true?

最佳答案

因此,我们首先要使用您已有的函数生成所有 child (以及那里的 child )的钱的列表。我们可以通过理解来做到这一点。

然后,我们可以在 generator 上使用 all() 来检查 child 的所有钱是否相同(即 平衡).

总而言之,该函数归结为 2 行:

def balanced(person, money):
kidsMoney = [amount_of_money(k, money) for k in kids[person]]
return all(m == kidsMoney[0] for m in kidsMoney)

它确实有效:

>>> balanced("Adam", money)
True

关于python - 如果一个家庭不平衡,如何编写一个函数来获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47847283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com