【问题标题】:Percent from a list列表中的百分比
【发布时间】:2019-11-27 11:26:53
【问题描述】:

我有一个包含测试分数的列表

points= [0,0,0,0,0,0,8,8,8,9,10,11,11,12,12,13,14,14,15,15,16,
 16,17,17, 18, 19,21,21,23, 23, 24, 24, 24, 25,25, 25,
 26, 27, 27, 28, 29, 29, 29, 29, 30, 30, 30, 31,31, 32,
 34, 35, 36, 36, 37, 38]

如果我们假设所有参与者在接下来的两次测试中都获得满分(总共 80 分,每次测试 40 分),那么仍然有多少百分比的参与者可以达到“A”的分数。该函数应返回百分比,在数学意义上,介于 0 和 1 之间。 如果你有超过 88 分,你可以得到 A。

到目前为止,这是我的代码,我不知道下一步该做什么

答案应该是这样的:

潜在最高分:89.285714%

【问题讨论】:

  • 请将代码作为实际文本发布,而不是屏幕截图。

标签: python list function lambda percentage


【解决方案1】:

这是一个没有 numpy 的简单解决方案:

sum(  i +80 >= 88 for i in points  )/len(points)*100

这会返回(在 Python 3 中):

89.28571428571429

编辑:由 h4z3s 提示简化。

【讨论】:

  • 返回 0。Python 2
  • 虽然他没有使用 python 2
  • 从他的印刷品中可以看出。
  • 1 for i in points if i +80 >= 88 可以简化为 i+80 >= 88 for i in points 因为布尔值是整数和 True==1 ;)
  • 感谢你们的帮助!
【解决方案2】:

使用这个:

没有numpy:

potential = [p + 80 for p in points]
percentage = sum([1 for i in potential if i>=88]) / float(len(potential)) * 100
89.28571428571429

使用numpy

import numpy as np

potential = [p + 80 for p in points]
percentage = sum(np.array(potential)>=88) / float(len(potential)) * 100
89.28571428571429

【讨论】:

  • 太棒了!如果我的回答有助于考虑支持并接受它,以便其他人也可以从中受益
猜你喜欢
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
相关资源
最近更新 更多