Dans l'ensemble la fonction de votre fonction est: si la longueur de x est égal à 5, retour Vrai autre si le dernier caractère de la chaîne est égale à premier retour Vrai, else return False
Ce genre de condition d'autre condition ... else return False est mieux exprimé avec ou statement qui retourne False seulement si toutes les conditions sont fausses et renvoie la valeur du premier élément non-False. L'autre choix est n'importe quelle fonction qui fait fondamentalement la même chose avec n'importe quelle séquence.Ici essai de ces alternatives pour toutes les branches d'origine instruction if:
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)
(fonction hightlighted comme mot réservé en bleu, mais il est erreur dans la routine de mise en évidence sur ce site)
Dans le cas de la fonction isPalindrome , la condition de longueur n'est pas arbitraire, mais il est nécessaire de reconnaître les cas primitifs pour arrêter la récursion, dans le cas de 'anna' la fonction palindrome fait:
voir si la longueur de 'anna' est inférieure à 2 (1 ou 0), non ils ne sont pas comparer 'a' avec 'a', continuer car ils sont identiques abandonnent la première et la dernière lettre et un appel par rapport isPalindrome avec « nn »
voir si la longueur de « nn » est inférieur à 2 (1 ou 0), non, ils ne sont pas comparer 'n « , n ', continuer comme ils sont identiques abandonner la première et la dernière lettre comparée et appeler isPalindrome avec' '
voir si la longueur de' 'est inférieure à 2 (1 ou 0), oui. Renvoie True lorsque nous avons trouvé le palindrome.
Voici une autre fonction shorte du test palindrome basée sur le fait que le palindrome inversé est le même que le palindrome.
def isPalindrome(s):
return s==s[::-1]
Salut Blaenk, votre réponse me l'indique clairement. En tant que débutant, je dois donner un sens aux raccourcis, merci pour votre aide! – raoulbia