<h2>使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.digitize.html" rel="nofollow noreferrer">^{<cd1>}</a>:</h2>
<ul>
<li>它允许更干净的代码</li>
<li><code>yearlySalary</code>是装箱的,没有混乱的代码,如:
<ul>
<li><code>yearlySalary > 9526 & yearlySalary < 38700</code></li>
<li><code>elif(yearlySalary in range (38701, 82500))</code></li>
</ul></li>
<li>对于以下代码,箱子大小如下
<ul>
<li>0-9525为10%</li>
<li>9526-38700的12%</li>
<li>38701-82500为22%</li>
<li>82501-157500的24%</li>
<li>157501-200000的32%</li>
<li>200001-500000的35%</li>
<li>500001及以上为37%</li>
</ul></li>
<li><code>.digitize</code>的工作原理是找到<code>bins</code>的索引,其中<code>income</code>落在其中。给定索引,在<code>tax_per</code>中找到相应的值。你知道吗</li>
<li><code>bin_</code>用作变量,因为<code>bin</code>是一个内部python函数,我们不会覆盖内部函数。你知道吗</li>
</ul>
<pre class="lang-py prettyprint-override"><code>import numpy as np
def tax_bracket(income: float) -> float:
tax_per = np.array([.10, .12, .22, .24, .32, .35, .37])
bin_ = np.digitize(income, bins=[9526, 38701, 82501, 157501, 200001, 500001])
return income - income*(tax_per[bin_])
yearlySalary = float(input("Please enter your yearly salary: "))
print(tax_bracket(yearlySalary))
</code></pre>
<h3>输出:</h3>
<pre class="lang-py prettyprint-override"><code>Please enter your yearly salary: 37524
33021.12
</code></pre>
<h2>使用<code>if - elif - else</code>:</h2>
<ul>
<li>从大到小排列箱子。你知道吗</li>
</ul>
<pre class="lang-py prettyprint-override"><code>def old_way(yearlySalary):
if yearlySalary > 500000:
tax = yearlySalary * .37
yearlySalary = yearlySalary-tax
elif yearlySalary > 200000:
tax = yearlySalary * .35
yearlySalary = yearlySalary-tax
elif yearlySalary > 157500:
tax = yearlySalary * .32
yearlySalary = yearlySalary-tax
elif yearlySalary > 82500:
tax = yearlySalary * .24
yearlySalary = yearlySalary-tax
elif yearlySalary > 38700:
tax = yearlySalary * .22
yearlySalary = yearlySalary-tax
elif yearlySalary > 9525:
tax = yearlySalary * .12
yearlySalary = yearlySalary-tax
else:
tax = yearlySalary * .10
yearlySalary = yearlySalary-tax
return yearlySalary
</code></pre>