私の仕事は、入力として文字列を受け取り、入力文字列が回文であるかどうかを示すブール値を返すプロシージャ is_palindrome を定義することです。この場合、空の文字列と同様に、単一の文字が True を返す必要があります''
。
残念ながら、期待した結果が得られません。助けてくれてありがとう。
私のコードバージョン1:
def is_palindrome(s):
if s == '':
return True
else:
if (ord(s[0]) - ord(s[len(s)-1])) == 0:
is_palindrome(s[1:len(s)-1])
else:
return False
print is_palindrome('')
#>>> True (expected = True)
print is_palindrome('abab')
#>>> False (expected = False)
print is_palindrome('abba')
#>>> None (expected = True)
print is_palindrome('andrea')
#>>> None (expected = False)
print is_palindrome('abaaba')
#>>> None (expected = True)
デバッガーでコードをたどりましたが、コードが適切なパスをたどるので、ロジックは正しいようです。ただし、上記で強調表示されているように、一部のケースでは最終結果が「なし」に切り替わるようです。
コードを次のように変更すると:
私のコードバージョン2:
def is_palindrome(s):
if s == '':
result = True
else:
if (ord(s[0]) - ord(s[len(s)-1])) == 0:
is_palindrome(s[1:len(s)-1])
else:
result = False
return result
print is_palindrome('')
#>>> True (expected = True)
print is_palindrome('abab')
#>>> False (expected = False)
print is_palindrome('abba')
#>>> Error (expected = True)
UnboundLocalError: local variable 'result' referenced before assignment
print is_palindrome('andrea')
#>>> Error (expected = False)
UnboundLocalError: local variable 'result' referenced before assignment
print is_palindrome('abaaba')
#>>> Error (expected = True)
UnboundLocalError: local variable 'result' referenced before assignment