擅长:python、mysql、java
<p>也许你会觉得这个更像Python:</p>
<pre><code>def get(joyx):
joyx_min = -200
joyx_max = 200
from collections import namedtuple
wheel_section = namedtuple("wheel_section", "min, max, output_value")
roulette_wheel = [ wheel_section(joyx_min, -50, -100), wheel_section(-50,51,0), wheel_section(51, joyx_max,100) ]
for section in roulette_wheel:
if section.min <= joyx < section.max:
return section.output_value
return 255
</code></pre>
<p>您的代码是一个非常简化的轮盘赌算法版本。
我不确定你真的应该做一个完整的版本。你知道吗</p>
<h2>更新</h2>
<p>使用下限算法的更短更漂亮的版本:</p>
<pre><code>from bisect import bisect_left
# an intentionally larger: maps also 50 and -50 for demonstrational purposes.
data = { -200 : -100, -100 : -50, -50 : 0, 50 : 50, 220 : 100 }
keys = list(data.keys())
print data[ keys[ bisect_left(keys, -79) ] ] # prints -100
print data[ keys[ bisect_left(keys, 15) ] ] # prints 0
print data[ keys[ bisect_left(keys, 67) ] ] # prints 50
print data[ keys[ bisect_left(keys, 250) ] ] # prints 100
</code></pre>