返回的人数更多

时间:2017-11-30 23:50:22

标签: python

我是python的新手,我的代码有问题。我的函数count_transitive_sellers_with_degree仅从人员卖家返回计数。我需要知道卖家和卖家卖家的退货数量等等。我不知道如何写它..你能帮助我并说出它的问题吗?谢谢:))

class Person:
    def __init__(self, name, year_of_birth, degree):
        self.name = name
        self.year_of_birth = year_of_birth
        self.degree = degree
        self.leader = None
        self.sellers = []

def create_leadership(leader, seller):
    seller.leader = leader
    leader.sellers.append(seller)

def count_transitive_sellers_with_degree(person, degree):
    count = 0
    for seller in person.sellers:
        if seller.degree == degree:
            count += 1 + count_transitive_sellers_with_degree(seller,degree)
    return count

>>> martin = Person('Martin', 1991, 'phd')
>>> tom = Person('Tom', 1993, 'mgr')
>>> josh = Person('Josh', 1995, 'bc')
>>> create_leadership(martin, tom)
>>> create_leadership(tom, josh)
>>> count_transitive_sellers_with_degree(martin, 'bc')     

它应该写什么... - > 1

现在正在写什么... - > 0

3 个答案:

答案 0 :(得分:1)

目前你只对那些自己拥有你正在考试的学位的卖家打电话给count_transitive_sellers_with_degree,我没有测试下面的,但我认为它应该有效。

def count_transitive_sellers_with_degree(person, degree):
    count = 0
    for seller in person.sellers:
        if seller.degree == degree:
            count += 1 
        # A seller's sellers should be counted irrespective of
        # if they have the degree or not
        count += count_transitive_sellers_with_degree(seller,degree)
    return count

答案 1 :(得分:0)

你的问题就在这里。你的if条件不允许你去递归部分因为汤姆的学位不是'bc'。

if seller.degree == degree:
            count += 1 + count_transitive_sellers_with_degree(seller,degree)

答案 2 :(得分:0)

if seller.degree == degree:

并不反映您所说的程序应该执行的操作:如果他们具有相同的学位,它只会添加该人的子女