【发布时间】:2017-11-21 06:19:39
【问题描述】:
我有一个带有 5 个圆环(或 4 个圆环和一个中心圆)的射箭目标。我必须给这些戒指中的每一个打分。分数将是(对于从外到内的环):1-2-5-10-25
在我听到具体的分数之前,我做了这个函数来为每个环分配分数:
def points(cDistance):
for i in range(5):
if i <= cDistance < i+1:
return 10-2*i
注意:cDistance 是鼠标点击到目标中心的距离。每个环和中间圆的半径为 1。 编辑: 此处返回的分数不是此作业的正确分数。
我已经计算出戒指的分数先乘以 2,然后再乘以 2.5。我不知道如何巧妙地将其放入 for 循环中。我可以为每个环做一个 if 语句,但我认为这看起来很难看,我应该能够让它更短。提前致谢。
【问题讨论】:
-
顺便说一下,我认为您的分数计算不正确,但这是另一个问题。
-
您可以使用
mathmodule 函数ceil或floor使事情变得更简单:如果使用正确,则不需要迭代和if 语句。 -
并且使用带有分数的数组,您可以简单地对其进行索引:
[1, 2, 5, 10, 25][math.floor(cDistance)](忽略在环的边界处发生的事情,或者在目标之外发生的情况)。 -
我的分数计算确实不正确,因为这是我要解决的问题。我会稍微修改一下我的问题以明确这一点
标签: algorithm python-3.x