此代码引发可被 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 aboven_pet_notd = n_images - n_pet_dogpct_corr_dog = ( n_class_cdog / n_pet_dog )*100pct_corr_notdog = ( n_class_cnotd / n_pet_notd )*100pct_corr_breed = ( n_match_breed / n_pet_dog )*100即使我使用if-else语句,它也会抛出相同的错误,我应该使用异常语句,我怎么能在这种情况下使用它,我已经被告知这是因为缩进错误,但我检查了它,它应该没有问题
3 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
假设 和 是整数,我建议将分母更改为 和,以便您可以避免在那里使用 min 值,而是回退到最小值。示例:更改n_pet_dog
n_pet_notd
max(n_pet_notd, 1)
max(n_pet_dog, 1)
0
1
pct_corr_dog = ( n_class_cdog / n_pet_dog )*100
自
pct_corr_dog = ( n_class_cdog / max(n_pet_dog,1) )*100
手掌心
TA贡献1942条经验 获得超3个赞
您可以使用三元运算符来获取干净的代码。
pct_corr_dog = (n_class_cdog/n_pet_dog)*100 if (n_pet_dog != 0) else #what to do otherwise
蓝山帝景
TA贡献1843条经验 获得超7个赞
您可以通过不除以零来修复除以零。
n_pet_dog可能为零。这或多或少是不可避免的。可能没有宠物狗。( n_class_cdog / n_pet_dog )
在这种情况下,试图确定宠物狗的百分比是没有意义的,所以你应该(a)不执行这个语句,并且(b)决定在没有宠物狗的情况下,你想要你的代码做什么。
添加回答
举报
0/150
提交
取消