Python L1, TD/TP 28.01

On commence aujourd'hui par une interrogation écrite. Vous avez 15 minutes pour résoudre les problèmes posés. Les sujets vous seront donnés sur papier.


Exercices

Exercice 0.

Le devoir obligatoire de la semaine dernière, la somme : $\displaystyle{s_n = -\sum_{n=1}\frac{(-1)^n}{n}}$, et l'optimisation de Aitken, la construction de $r_n$ à partir de $s_n$ :
$\displaystyle{r_n = \frac{(s_{n+2}\cdot s_n - s_{n+1}^2)}{(s_{n+2}-2 s_{n+1} + s_n)}}$ .


Palindromes (reprise de la semaine dernière)

Un palindrome est une phrase (ici : chaîne) identique à son inverse, comme "Ésope reste ici et se repose" ou "kayak". (Pour nous : pas d'espaces, pas de majuscules, pas d'accents, donc : "esoperesteicietserepose", etc.). On indexe les éléments de la chaîne s par s[k], et on récupère leur longueur par len(s).

Exercice 1.

Ecrire une fonction palind(s) qui prend une chaîne en paramètre, et qui répond (retourne) True ou False en réponse à la question : est-ce un palindrome?. Faire une boucle qui parcourt la chaîne en deux sens, et qui s'arrète soit quand on arrive au centre, ou quand on trouve des caractères différents. Ceci n'est pas la seule algorithmique possible, nous verrons aussi l'usage de la récursivité.


Exercice 2.

Exercice 3A.

La suite de Fibonacci $F_n$ est, à partir des éléments numéro zéro et 1 : $F = 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, \ldots$,

ou récursivement : $F_0 = 0$, $F_1 = 1$, et $F_n = F_{n-1} + F_{n-2}$ pour tous les $n$ supérieurs à 1. Construire une fonction Python qui prend un paramètre $m$, et construit la valeur de $F_m$.

Exercice 3B.

Écrire un programme - fonction parametrée par $m$, qui construit un tableau (liste) contenant tous les éléments de la suite du premier, jusqu'au $m$-ième. Ne pas utiliser la fonction 3A, calculer itérativement tous les éléments à partir d'éléments connus.

Exercice 4.

Exercice 5.

Construire un programme qui prend deux chaînes, par ex. "ab" et "cde", et qui assemble une liste de chaînes – paires de caractères, le premier de la premère, le second de la seconde liste : ["ac", "ad", "ae", "bc", "bd", "be"].

Exercice 6.

Solution d'une équation par la méthode dichotomique. Prenons une fonction qui passe par zéro dans un intervalle, par ex :

def f(x):
   v = exp(x) - 1
   return v
dans l'intervalle $-0.8$ : $1.5$. (Concrètement f(0)=0), mais le programme ne le sait pas. Concevoir un programme, qui commence par spécifier l'intervalle d'origine, par ex. : $x_0=-0.8$, et : $x_1=1.5$.

Ensuite le programme vérifie si les signes de la valeur de la fonction sont différents, sinon, on considère que la solution est impossible. On définit $x_2 = \frac{1}{2}(x_0+x_1)$, le mi-chemin. Si le signe de $f(x_2)$ est le même que de $f(x_0)$, on rédéfinit $x_0=x_2$, sinon, on rédéfinit $x_1 = x_2$.

Tout ceci est dans une boucle, qui s'arrête, si la longueur de l'intervalle, $|x_1-x_0| < 0.00001$. Alors le $x_2$ ou toute autre valeur est considérée comme la solution, elle est imprimée, et le programme termine la boucle.


EasyGui

Exercice 7.

Ce sujet demande que vous lisiez la documentation, et on risque ne pas pouvoir travailler dessus aujourd'hui, dans ce cas on le reprendra plus tard. Il s'agit d'un vraiment simple paquetage d'interfaçage graphique – non pas pour tracer les courbes, comme Matplotlib, mais pour insérer les widgets : boutons, cases d'entrée textuelle, cases à cocher, listes, etc.

Vous allez télécharger et installer le paquetage EasyGui, qui facilite la création des interfaces visuelles ; ensuite construire l'interface avec trois champs textuels pour l'entrée de deux nombres et l'opérateur, un bouton, qui déclenche le calcul, et un autre champ textuel qui affichera le résultat. Voici les précisions.


Semaine dernière
Semaine suivante
Retour à l'index