1

私はこのプログラムをしばらく使用していて、それを続けるのは面倒に思えますがpylint、演習目的でコードを実行していると、エラーR0912: 69,0:process_ancestors: 分岐が多すぎます (7/6)が表示されます。 . 私にはこの機能が最も単純な形に見えるので、誰かがこの機能をスリム化するのを手伝ってくれるかどうか疑問に思っていました..

def process_ancestors(relation_dict, name):
    '''Figures out who the ancestors are'''
    output_str = ''
    name_found = search_name(relation_dict, name)
    if not name_found: 
            output_str = "Unknown person"      
    else: 
        ancestor_list = []
        person = name
        while True: 
            person = find_parent(relation_dict, person)
            if person == None: 
                break
            else: 
                ancestor_list.append(person)
        if ancestor_list: 
            output_str = ", ".join(ancestor_list)
        else: 
            output_str = "No known ancestors"            

    return output_str

あなたの助けに乾杯!

4

3 に答える 3

2

早く戻ってください。そうすれば、必要なelse:ブランチがはるかに少なくなります。

def process_ancestors(relation_dict, name):
    '''Figures out who the ancestors are'''
    name_found = search_name(relation_dict, name)
    if not name_found: 
        return "Unknown person"      

    ancestor_list = []
    person = find_parent(relation_dict, name)
    while person is not None:
        ancestor_list.append(person)
        person = find_parent(relation_dict, person)

    if not ancestor_list: 
        return "No known ancestors"            
    return ", ".join(ancestor_list)

また、別のブランチを削除して、ループ内にpersonあるNoneかどうかをテストする必要もなくなりました。while

于 2013-05-22T09:44:15.973 に答える
2

変更点:

  1. imeidelty を返す (2 つのブランチを削除)
  2. 最初の反復を前に実行するように設定することで while ループを変更し、ループNone内でチェックする必要をなくしました。

その結果:

def process_ancestors(relation_dict, name):
    '''Figures out who the ancestors are'''
    name_found = search_name(relation_dict, name)
    if not name_found: 
            return "Unknown person"      
    ancestor_list = []
    person = name
    person = find_parent(relation_dict, person)
    while person is not None: 
        ancestor_list.append(person)
        person = find_parent(relation_dict, person)
    return ", ".join(ancestor_list) if ancestor_list else "No known ancestors"
于 2013-05-22T09:45:22.017 に答える