Je vous ai promis une introduction au parler Python, la voici la voila! Avant toute chose, il va vous falloir un petit logiciel, j’utilise PythonWin Editor, outil gratuit que vous trouverez ici. Installez le comme vous le souhaitez puis cliquez sur la petite tête de serpent pour lancez l’éditeur. Ce dernier est d’une simplicité déconcertante… presque autant que le langage lui même.
Comme vous pouvez le voir ici après, il est composé d’une fenêtre principale dans laquelle se trouve une zone d’écriture. Il se peut que vous n’ayez pas toute la rangée d’icônes que j’ai ici, mais du moment que vous avez celles de gauche c’est suffisant pour commencer. Comme vous pouvez le voir ci dessous, l’éditeur interprète directement ce que vous lui racontez: 2 + 2 ça fait 4, il en est sûr alors il le dit ; par contre Bonjour il aime pas trop… sans les guillemets en tout cas!
Vous en conviendrez, programmer ligne par ligne c’est moche, on va donc passer en mode “scripts” et pour ce faire il suffit d’ouvrir un fichier .py ou de cliquez sur File/New/Python Script. Commencez par écrire une fonction dans la fenêtre de droite comme sur l’image ci après. Les fonctions se déclarent (très) facilement. Un mot clé “def” pour indiquer que c’est une définition, le nom de la fonction, quelques paramètres (ou pas) entre parenthèses “()” et deux points “:” pour terminer. Une fois à la ligne, il suffit “d’indenter” un coup vers la droite pour que l’éditeur comprenne tout de suite que c’est le “corps” de la fonction (ça fonctionne aussi ainsi avec les boucles).
Une fois votre première fonction déclarée, vous pouvez y écrire comme ci dessus print “Blablabla”. Repérez alors les deux petites icônes fléchées ci-dessus ; celle de droite teste votre code à la recherche de fautes de syntaxe alors que celui de gauche charge le code écrit en mémoire pour pouvoir l’utiliser depuis la fenêtre de gauche (l’icône de gauche est à cliquer avant chaque test si vous voulez que vos dernières modifications soient prises en compte). Appelez la fonction depuis l’éditeur principal… magie, “Blablabla” apparait!
Sur la capture de droite se trouvent d’autres petits exemples à la con:
- Une fonction (Puissance()) qui prend des paramètres et renvoie un résultat (en utilisant au passage une fonction externe de Python Math.Power()),
- Une fonction (Genre()) qui présente la syntaxe d’utilisation d’une boucle “si-alors-sinon”.
Croyez moi ou non, mais c’est presque tout ce dont vous avez besoin pour attaquer le Projet Euler dont je vous parlais hier. Il va vous falloir une boucle “tant-que”, un opérateur “modulo” (reste de la division entière) et peut être un peu de quoi jouer avec le listes et voila, vous êtes parés. Et comme je suis sympa, je vais faire le premier avec vous.
Projet Euler 1: If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.
Pas la peine de chercher midi à 14h, on parle ici de nombres ridiculement petits (1000 haha la blague), on peut foncer dans le tas de manière totalement systématique.
Alors, comment feriez-vous pour trouver la somme des multiples de 3 ou 5 qui sont inférieurs à 1000?
…
…
…
…
Simplement en itérant un stupide compteur de 0 à 1000 en testant le dit compteur à chaque tour pour savoir s’il est multiple de 3 ou de 5 ; si oui on l’ajoute au résultat. Voila la fonction en Python:

Pour info, l’opérateur % est le modulo dont je parlais plus haut, qui retourne le reste de la division entière du premier paramètre et du second. Ex: 4 % 2 = 0, 3 % 2 = 1, 5 % 2 = 1. Vous pouvez également voir que la syntaxe du “if” et “while” se terminent toujours par “:”.
Que dire d’autre? Heu… je crois que c’est tout. Vous pouvez commencer à rigoler avec le Python et le Projet Euler.




[...] propos Nürnberger Zoo Débuter en fourchelangue Mar [...]
Sinon on peut se rendre compte que c’est la somme de 1 à 333 x 3 plus la somme de 1 à 199 x 5 moins la somme de 1 à 66 x 15 (ceux qu’on a comptés en double). Après on peut se servir de ses petits cours de math pour trouver que la somme des chiffres de 1 à n c’est n*(n+1)/2. Donc le résultat c’est 3*55 611 + 5*19 900 – 15*2211= 233 168.
Le soucis, c’est qu’on n’a pas appris le python avec ça.
Exact… et exact
Par contre, d’un point de vue complexité de l’algorithme de résolution, c’est beaucoup plus efficace que ta méthode. Surtout si on veut généraliser à la somme sur des plus grands nombres.
Exact (encore)! Mais trouver une “belle” méthode qui donne une solution “à la main” n’était absolument pas le but dans un billet sur les premiers pas en Python
le python est certainement plus noble, mais voici ma méthode en php, puisque je suis dessus en ce moment :
// paramètres
$min = 0;
$max = 1000;
$nbs = array(3,5);
// init
$total = 0;
$multiples = array();
// algo
foreach ( $nbs as $nb )
for ( $i = $min ; $i * $nb < $max ; $i++ )
if ( !in_array($i * $nb, $multiples) )
{
$multiples[] = $i * $nb;
$total += $i * $nb;
}
// résultat
echo “total: “.$total. “\n”;
et cela affiche : “total: 233168″
on peut paramétrer le tout pour n’importe quel problème du genre, avec autant qu’on veut de multiples et un début et une fin arbitraire.
en tout cas je suis ton blog depuis cet automne Tim… au plaisir de se recroiser prochainement, bye cousin,