La qualité numéro 1 du langage de programmation Python est son accessibilité, même pour les débutants.
Le code est lisible, compréhensible rapidement. Python est LE langage par excellence pour apprendre à programmer.
Si vous ne l’avez pas encore installer sur votre système, je vous engage fortement à le faire à partir du site officiel.
L’exemple de script que nous allons étudier aujourd’hui est basé sur une fonction crée par l’utilisateur, qui inverse une chaîne de caractère. Elle renverra par exemple TOM si on lui envoie MOT.
Code Python traduit en HTML:def envers (mot):
"inverse une chaine de caractères"
resultat="" # La chaine résultat est vide
for lettre in mot: # Pour chaque lettre de la chaine
resultat=lettre+resultat # On l'insère en première position
return resultat # Et on retourne la chaine
# Pour tester dans L'IDLE
a=input("chaine : " )
print (envers(a))
Le code ci-dessus que vous pouvez testé dans la console, est écrit en utilisant plusieurs couleurs :
Le rouge sert à afficher les commentaires, ceux-ci sont précédés du caractère #. Les commentaires ne sont pas des instructions exécutées par Python, mais sont destinés à la compréhension du code (Pour permettre de se replonger dans ses anciens scripts, sans risquer de maux de tête, par exemple)
En orange : les mots réservés du langage Python
ici nous avons def, for, in et return
En violet : les fonctions prédéfinies (non créées par l’utilisateur )
seule la fonction input() est utilisée dans ce script.
En bleu : Les fonctions crées par l’utilisateur
Ici une seule fonction : envers()
En vert : Les chaînes de caractères.
On en dénombre 3, dans des contextes très différents.
Une remarque importante, les espaces dans le code ont une importance capitale (On parle d’indentation du code), ainsi le bloc de code qui constitue le corps de la fonction envers est décalé de deux espaces vers la droite. Ainsi Python reconnaît la fin des instructions de cette fonction à l’arrêt de cette indentation.
Le mot clef def sert à définir notre propre fonction, il est suivi du nom de cette fonction (Ne pas utiliser de mots réservés ou de nom de fonctions prédéfinies!) puis de parenthèses enserrant une « variable » est du caractère « : »
On peut voir une fonction comme une usine, elle reçoit une matière première (ici une chaîne de caractère), effectue un travail (dans le bloc indenté) et livre (avec le mot clef
return) un produit fini (ici, une autre chaîne de caractère)
Cette ligne est étrange, c’est une chaîne de caractères, seule, sans mot clefs qui demanderait à Python de faire quelque chose, sans affectation (On y reviendra). Elle semble ne servir à rien… Et pourtant son rôle est très pratique !
Si cette fonction est chargée en mémoire, en tapant envers ( avec une parenthèse ouvrante, cette phrase apparaît dans une bulle d’aide :
resultat=« »
On définit au départ la variable resultat comme une chaîne vide. A noter pour les vrais débutants en développement, le sens particulier du signe égal. Ce caractère est le symbole de l’affectation. On range la chaîne vide « » dans une « boite » qu’on a appelé resultat. Le contenue de cette boite changera au cours du script, cette boite est une variable.
littéralement :
Pour lettre dans mot
mot est la matière première livrée à la fonction envers, une chaîne de caractères. Une chaîne de caractères étant constituée de lettres, l’expression for lettre in mot signifie que l’on va successivement affecter à la variable lettre les lettres contenues dans la chaîne mot (celle envoyée à la fonction).
Les deux points qui suivent, ainsi que l’indentation du code indique à Python que ce bloc indenté devra être exécuter pour chacune de ces lettres.
On reconnaît à nouveau ce signe égal d’affectation.
On va placer dans le membre de gauche (la variable resultat) l’évaluation de l’expression lettre + resultat. Je comprends l’étonnement de certain !
lettre est un caractère et resultat une chaîne ! Que signifie donc le signe + ?
Python comprend simplement +, pour des chaîne de caractère comme un ordre de concaténation :
Un exemple de ce qui se passe dans ce programme:
Supposons qu’on ait envoyé à la fonction envers, la chaîne « CHAT »
resultat est d’abord vide (resultat= » »)
puis la boucle FOR IN parcourt les lettres de CHAT
1. resultat= »C »+ » » soit « C »
2. resultat = »H »+ »C » soit « HC »
3. resultat = »A » + »HC » soit « AHC »
4. resultat = »T » + »AHC » soit « TAHC »
la variable resultat contient donc une fois toutes les itérations de la boucles terminées, la chaîne de départ inversée.
Et l’usine envers() peut donc livrer son produit fini:
La dernière partie du script, sert à tester la fonction:
input() est une fonction prédéfinie, son utilisation est aisée.
On range dans la variable a, la chaîne de caractères saisie au clavier par l’utilisateur.
Notez entre parenthèses une phrase d’invite pour lui indiquer ce qu’il doit faire.
print(envers(a))
affiche à l’écran envers(a), le produit de la fonction envers quand on lui envoie la variable a.
On peut donc tester notre fonction:
Elle fonctionne, c’est déjà ça !!!
Tags Python abordés dans cet article
def
for
in
return
input
Ressources :
Découvrez : une large gamme de logiciels en ligne et hors-ligne,des applications pour tablettes tactiles,
des fichiers d’exercices et des dossiers pédagogiques,les manuels scolaires et les cahiers iParcours,
des jouets multimédia pour les petits,des fichiers d’exercices pour les élèves, des applications pour iPhone et iPad,
des appareils photos, micros et accessoires audio spécialement conçus pour les enfants,des outils numériques : micros-enregistreurs et visualiseurs, etc.
la fonction reverse n’existe-t-elle pas nativement ?
reverse n’est pas une fonction, mais une méthode de l’objet liste.
maliste.reverse() retourne une liste, pas une chaîne.
On pourrait s’en sortir en commençant par
maliste=list(machaine)
puis maliste.reverse()
mais si on veut retourner une string, il faudra
ou faire une boucle
ou utiliser l’objet string et sa méthode join (en important le module string…)
>>> a = ‘bonjour’
>>> a[::-1]
‘ruojnob’
7 caractères pour une page de blabla
Bonsoir Python,
j’ai hésité a publié ton commentaire un peu méprisant, mais après tout tu enrichis mon billet en donnant la méthode la plus courte. Je t’en remercie donc.
Mais le but de ce billet était d’initier au langage Python, en évoquant les fonctions, les boucles et les entrées sorties.
Ne sois donc pas si méprisant…
Bonjour,
sogner à un autre script qui retourne le texte déjà inversé serait fantastic ! n’y pensez-vous pas ?
Cool !