Differences between revisions 4 and 5
Revision 4 as of 2012-11-21 20:41:37
Size: 543
Editor: roq13-2-78-235-210-46
Comment:
Revision 5 as of 2012-11-21 21:01:40
Size: 2399
Editor: roq13-2-78-235-210-46
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
== Premier exercice == == Tester l’appartenance ==

Écrivez une fonction :
{{{#!highlight python
def trouve(l,x):
 ...
}}}
qui renvoie `True` si `x` est un élément de la liste `l` et `False` sinon.

Testez :
{{{#!highlight python
l=[1,6,6,4]
trouve(l,0)
trouve(l,1)
trouve(l,6)
trouve(l,4)
trouve('Bonjour','B')
trouve('Bonjour','b')
}}}

Transformez légèrement la fonction pour qu’elle renvoie l’indice de
`x` dans `l` (le numéro de la « case » où `x` apparaît) au lieu de `True`.
Testez :
{{{#!highlight python
trouve(l,6)
trouve(l,6) == False
trouve(l,1)
trouve(l,1) == False
}}}
Argh ! Que s’est-il passé ? Le test d’égalité prend en fait en compte
des conversions possibles entre les types, et permet de considérer
que `False == 0` et `True == 1`. Donc `False` n’est pas un bon choix de valeur
d’erreur. On pourrait prendre `-1` par convention, mais seulement parce qu’on
sait qu’on attend un résultat positif. La manière « propre » de gérer ce cas,
c’est d’utiliser la constante `None`, de type `NoneType`, qui a la propriété
de n’être égale qu’à elle-même. Modifiez donc encore la fonction pour renvoyer
`None` plutôt que `False` dans le cas où on ne trouve pas l’élément.



== Renverser une chaîne ==
Line 14: Line 54:
Si vous êtes arrivés jusque là, vous avez fait le tour d’à peu près tout ce qui
est nécessaire pour couvrir les besoins du programmeur/algorithmicien généraliste
au quotidien.
Rappelez-vous qu’il n’y a pas de manière naturelle en Python de dire quelque chose comme :
« on part avec un tableau vide de n cases », et surtout que les chaînes ne sont pas mutables.
Il faut donc ''construire'' le résultat.
Line 18: Line 58:
Bravo !
== Renverser une liste (en place) ==

Écrivez une fonction :
{{{#!highlight python
def ret(entree):
 ...
 return sortie
}}}
qui prend en argument une chaîne `entree` et renvoie la chaîne
renversée, c’est-à-dire que `renverse('abcde')` doit renvoyer (et pas afficher) `'edcba'`.

Rappelez-vous qu’il n’y a pas de manière naturelle en Python de dire quelque chose comme :
« on part avec un tableau vide de n cases », et surtout que les chaînes ne sont pas mutables.
Il faut donc ''construire'' le résultat.

Quelques exercices de programmation classiques

Tester l’appartenance

Écrivez une fonction :

   1 def trouve(l,x):
   2         ...

qui renvoie True si x est un élément de la liste l et False sinon.

Testez :

   1 l=[1,6,6,4]
   2 trouve(l,0)
   3 trouve(l,1)
   4 trouve(l,6)
   5 trouve(l,4)
   6 trouve('Bonjour','B')
   7 trouve('Bonjour','b')

Transformez légèrement la fonction pour qu’elle renvoie l’indice de x dans l (le numéro de la « case » où x apparaît) au lieu de True. Testez :

   1 trouve(l,6)
   2 trouve(l,6) == False
   3 trouve(l,1)
   4 trouve(l,1) == False

Argh ! Que s’est-il passé ? Le test d’égalité prend en fait en compte des conversions possibles entre les types, et permet de considérer que False == 0 et True == 1. Donc False n’est pas un bon choix de valeur d’erreur. On pourrait prendre -1 par convention, mais seulement parce qu’on sait qu’on attend un résultat positif. La manière « propre » de gérer ce cas, c’est d’utiliser la constante None, de type NoneType, qui a la propriété de n’être égale qu’à elle-même. Modifiez donc encore la fonction pour renvoyer None plutôt que False dans le cas où on ne trouve pas l’élément.

Renverser une chaîne

Écrivez une fonction :

   1 def renverse(entree):
   2         ...
   3         return sortie

qui prend en argument une chaîne entree et renvoie la chaîne renversée, c’est-à-dire que renverse('abcde') doit renvoyer (et pas afficher) 'edcba'.

Rappelez-vous qu’il n’y a pas de manière naturelle en Python de dire quelque chose comme : « on part avec un tableau vide de n cases », et surtout que les chaînes ne sont pas mutables. Il faut donc construire le résultat.

Renverser une liste (en place)

Écrivez une fonction :

   1 def ret(entree):
   2         ...
   3         return sortie

qui prend en argument une chaîne entree et renvoie la chaîne renversée, c’est-à-dire que renverse('abcde') doit renvoyer (et pas afficher) 'edcba'.

Rappelez-vous qu’il n’y a pas de manière naturelle en Python de dire quelque chose comme : « on part avec un tableau vide de n cases », et surtout que les chaînes ne sont pas mutables. Il faut donc construire le résultat.

WikISN: TPAlgoÉlémentaire (last edited 2016-01-25 14:01:22 by LionelVaux)