如何修复此代码中可被0整除的错误

此代码引发可被 0 整除的错误


 for key in results_dic:


    # match (if dog then breed match)

    if results_dic[key][2] == 1:


        # isa dog (pet label) & breed match

        if results_dic[key][3] == 1:

            n_pet_dog += 1


            # isa dog (classifier label) & breed match

            if results_dic[key][4] == 1:

                n_class_cdog += 1

                n_match_breed += 1


        # NOT dog (pet_label)

        else:


            # NOT dog (classifier label)

            if results_dic[key][4] == 0:

                n_class_cnotd += 1


    # NOT - match (not a breed match if a dog)

    else:


        # NOT - match

        # isa dog (pet label) 

        if results_dic[key][3] == 1:

            n_pet_dog += 1


            # isa dog (classifier label)

            if results_dic[key][4] == 1:

                n_class_cdog += 1


        # NOT dog (pet_label)

        else:


            # NOT dog (classifier label)

            if results_dic[key][4] == 0:

                n_class_cnotd += 1



# calculates statistics based upon counters from above

n_pet_notd = n_images - n_pet_dog

pct_corr_dog = ( n_class_cdog / n_pet_dog )*100

pct_corr_notdog = ( n_class_cnotd / n_pet_notd )*100

pct_corr_breed = ( n_match_breed / n_pet_dog )*100

即使我使用if-else语句,它也会抛出相同的错误,我应该使用异常语句,我怎么能在这种情况下使用它,我已经被告知这是因为缩进错误,但我检查了它,它应该没有问题


海绵宝宝撒
浏览 89回答 3
3回答

Cats萌萌

假设 和 是整数,我建议将分母更改为 和,以便您可以避免在那里使用 min 值,而是回退到最小值。示例:更改n_pet_dogn_pet_notdmax(n_pet_notd, 1)max(n_pet_dog, 1)01pct_corr_dog = ( n_class_cdog / n_pet_dog )*100自pct_corr_dog = ( n_class_cdog / max(n_pet_dog,1) )*100

手掌心

您可以使用三元运算符来获取干净的代码。pct_corr_dog = (n_class_cdog/n_pet_dog)*100 if (n_pet_dog != 0) else #what to do otherwise

蓝山帝景

您可以通过不除以零来修复除以零。n_pet_dog可能为零。这或多或少是不可避免的。可能没有宠物狗。( n_class_cdog / n_pet_dog )在这种情况下,试图确定宠物狗的百分比是没有意义的,所以你应该(a)不执行这个语句,并且(b)决定在没有宠物狗的情况下,你想要你的代码做什么。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python