擅长:python、mysql、java
<p>其他人已经提到您没有存储返回值,但是我还要补充一点,您在最后没有默认的“基本情况”。在本规范中:</p>
<pre><code>def transit(zone, ticket):
fareLst = ['23', '11.5', '34.5']
if zone < 2 and ticket == 'adult':
return fareLst[0]
elif zone < 2 and ticket == 'child':
return fareLst[1]
elif zone > 4 and ticket == 'adult':
return -1
</code></pre>
<p>如果<code>zone</code>等于2、3或4怎么办?如果<code>zone</code>是4,而<code>ticket</code>是child呢?所有这些都会一直到最后,函数的默认返回值是<code>None</code>。那可能不是你想要的。如果不是,添加<code>return 20</code>或任何合理的默认票价。你知道吗</p>
<p>同样,返回前哨值也不是Pythonic,就像上面的最后一个例子。一种更为python的方法是,如果参数不好,则引发<code>ValueError</code>,然后将调用代码包装在<code>try/except</code>块中。这就不留模棱两可的余地,检查返回值是一件麻烦事。你知道吗</p>