Python如何在函数中结合count方法与for循环计算多值占比
代码修改方案
原有代码错误原因
- 你之前定义的
Lvl是单个整数10,整数不属于可迭代对象,直接作为for循环的遍历对象会抛出类型错误 - 循环逻辑错误:你已经把目标数值范围存到了变量
x中,实际应该遍历该数值范围而非Lvl变量
正确实现代码
方案1:复用已写好的percent_score函数计算总占比
def percent_score(Scores,Level): find = Scores.count(Level) perc = find/len(Scores) return perc Prac_1 = [9,10,5,14,7,18,10,10,10,9,11] target_lvls = range(9, 12) total_perc = 0 # 遍历所有目标数值累加占比 for lvl in target_lvls: total_perc += percent_score(Prac_1, lvl) print(f"9、10、11三个数值的总占比为:{total_perc}")
方案2:直接在循环中累加计数后计算占比
不需要重复调用函数,执行效率更高:
Prac_1 = [9,10,5,14,7,18,10,10,10,9,11] target_lvls = range(9, 12) total_count = 0 total_len = len(Prac_1) for lvl in target_lvls: total_count += Prac_1.count(lvl) total_perc = total_count / total_len print(f"9、10、11三个数值的总占比为:{total_perc}")
补充:单独查看每个目标数值的占比
如果需要分别输出9、10、11各自的占比,可以用以下写法:
Prac_1 = [9,10,5,14,7,18,10,10,10,9,11] target_lvls = range(9, 12) for lvl in target_lvls: perc = percent_score(Prac_1, lvl) print(f"数值{lvl}的占比为:{perc}")
内容的提问来源于stack exchange,提问作者gecko808
相关产品推荐
相关产品推荐

