<p>总的来说,你的职能是:
如果x的长度等于5,则返回True
否则,如果字符串的最后一个字符等于第一个字符,则返回True,
否则返回False</p>
<p>这种条件else condition…else return False最好用or语句表示,只有当所有条件都为False并返回第一个not False元素的值时,该语句才会返回False。另一种选择是对任何序列做基本相同的任何函数。在这里测试原始if语句的所有分支的这些备选方案:</p>
<pre><code>def function(x):
if len(x) == 5: return True
else: return x[0] == x[-1]
def funcor(x):
return (len(x)==5) or (x[0] == x[-1])
def funcany(x):
return any((len(x)==5, x[0] == x[-1]))
def funcverbal(sequence):
## sequence[0] is the first element of zero based indexed sequence
## endswith is string specific function so sequence must be string
## if it's length is not 5
return len(sequence)==5 or sequence.endswith(sequence[0])
## function is normal data type in Python, so we can pass it in as variable
def test(func):
print('Testing %s function' % func)
for value in ('12345','annb','ansa','23424242',('1','2','1'), 123, '131'):
try:
print ("%r -> %r" % (value,func(value)))
except:
print ("Failed to call function with " + repr(value))
print(10 * '-'+'Finished testing '+str(func) + 10 * '-')
for thisfunction in (function, funcor, funcany, funcverbal):
test(thisfunction)
</code></pre>
<p>(功能突出显示为蓝色保留字,但在本网站的突出显示例程中出现错误)</p>
<p>对于isPalndrome函数,长度条件不是任意的,但是需要识别原始大小写来停止递归,对于'anna',回文函数会:</p>
<p>看看“anna”的长度是否小于2(1或0),不,它们不是
将“a”与“a”进行比较,继续,因为它们是相同的
删除比较过的第一个和最后一个字母,用“nn”打电话给ispaldrome</p>
<p>看看“nn”的长度是否小于2(1或0),不,它们不是
比较“n”和“n”,继续,因为它们是相同的
删除比较过的第一个和最后一个字母,并用“”呼叫ispaldrome</p>
<p>查看“”的长度是否小于2(1或0),是。返回True,因为我们找到回文。在</p>
<p>这里是回文组测试的替代短函数,基于回文反转与回文组相同的事实。在</p>
^{pr2}$