TP1 : VARIABLES, TESTS, BOUCLES INSTALLATION ( sous windows) Nous utiliserons la distribution AMIENSPYTHON, basée sur Python 2.6 : Elle est portable, inclue une bibliothèque lycée utile en ISN, et un environnement de développement intégré Pyscripter francisé. Elle est téléchargeable à l'adresse http://amienspython.tuxfamily.org/download.html Attention les petites différences entre les versions Python 3.x et Python 2.x, les rendent incompatibles. Installation : choisissez l'emplacement voulu ( clef USB ou ordinateur), puis l installation se fera dans un dossier nommé «AmiensPython». Les pages suivantes sont inspirées entre autres des cours «Amienspython» ( Maille) et «Apprendre à programmer avec Python» ( Swinnen) librement téléchargeables et en lien sur le site http://isnpem.weebly.com/ L INTERFACE PYSCRIPTER est composée de plusieurs zones : Explorateur windows «Editeur» (écriture) du programme. «Console» : exécution d'instructions ou du programme Ex. 0 : Comme la coutume l exige, faire afficher par un premier programme le texte "Hello World" L exécuter ( Exécuter ou Ctrl F9 ou ) NOMS ET CARACTÈRES ACCENTUÉS Les noms de variables commencent par une lettre, mais ensuite on peut utiliser les caractères que l on veut, minuscules, majuscules, chiffres, etc. sans espace. Employez des noms de variables explicites. Les nom de fichiers doivent être sans accents. En général Python tolère mal les accents : un message d erreur peut survenir.
A) PREMIERS PAS EN PYTHON La gestion des espaces On peut sauter des lignes pour plus de clarté, ce n'est pas pris en compte en Python. Mais les espaces en début de ligne ( l indentation ) sont déterminants : Ils délimitent un bloc d instructions dans un test, une boucle,... La norme est de faire quatre espaces ou une tabulation Ex A1 : Deviner ce que fait ce programme. Vérifier en le tapant et en l exécutant. Les commentaires # ( «croisillon» ou «dièse») permet de d'écrire dans le corps du programme un commentaire non pris en compte lors de l'exécution du programme. # porte sur le reste de la ligne. Affectation - = signifie affecter une valeur numérique ou du texte dans une ( «boite» ) mémoire. - On peut faire des affections simultanées sur une seule ligne : a,b,..=5,12,... - On peut aussi échanger deux variables a,b=b,a Ex A2 : Deviner ce que font ces programmes, puis vérifier. Expliquer la différence. Entrée/ sorties print affiche la valeur d'une variable ou un texte ( entre guillemets). En Python3 on écrit print(..) Une virgule en fin de ligne, impose l'affichage d'après sur la même ligne. v=input ('question') affiche une fenêtre avec le texte 'question' et un zone ou on entrera la réponse. La réponse est alors affectée à la variable v. Ex A3 : Aire d'un rectangle Écrire un programme qui demande «Que vaut la largeur?» puis «Que vaut la longueur?» et affiche comme réponse «L'aire du rectangle vaut» suivi du résultat. Appeler le professeur pour validation
B) TESTS ET CONDITIONS if test : BLOC1 else : BLOC2 Effectue les instructions du BLOC1 si le test est vérifié, sinon effectue le BLOC2. Optionnel s'il n'y a rien à effectuer. NB : - Les deux points et l indentation sont obligatoires. - L'égalité dans un test doit s écrire = = - Différent s'écrit au choix <> ou!= - >= et <= désignent les inégalités larges - and, or, not désignent 'et' 'ou' et 'la négation' - S'il y a des conditions imbriquées on peut utiliser elif : au lieu de else :...if : Ex B1 : Premier jeu a) Quel jeu représente ce programme et comment fonctionne t il? b) Le modifier pour qu'il commence par afficher «Début du jeu de...» puis le texte «Indiquez la latitude» pour affecter la valeur de x, et «Indiquez la longitude» pour celle de y. a = 4 b = 7 print "À vous de jouer ( proposez deux entiers, un par un)" x = input() y = input() if x==a and y==b: print "Coulé" elif x == a or y == b: print "En vue" else: print "À l'eau" c) Amélioration pour les rapides : Faire afficher «Quel est votre age?» avant le Début du jeu, et «Ce jeu est déconseillé aux moins de 12 ans» si la réponse est inférieur à 12. Ex B2 : Solution de ax + b = 0 A partir de l'ex A1 faites un programme qui demande les coefficients a et b de l équation ax+b=0 et en donne la solution -b/a. Attention aux cas a=0 et b=0 Ex B3 : Indice IMC L'indice de masse corporelle ( IMC) se calcule par la formule IMC= masse taille 2 où la masse est en kg et la taille en m. On considère qu'une personne est de corpulence «normale» si cet IMC est compris entre 18,5 et 25. Elle est en surpoids si c'est au dessus de 25 et maigre si c'est en dessous de 18,5. Faire un programme qui demande la taille et le poids d'une personne, et propose ensuite des conseils ( «vous devriez faire du sport», «Votre poids est idéal continuez comme cela» ou «Faites vous plaisir allez au resto» Appeler le professeur pour validation Ex B4* : Supplément pour les rapides: signe du trinôme Faites un programme qui demande les coefficients d'un trinôme ax²+bx+c, et donne le signe du trinôme.
La boucle «tant que...» while test : BLOC C) BOUCLES Répète le bloc d instructions ( indenté) tant que le test est vérifié. NB: Il y a un risque de boucle infinie si la condition n est jamais remplie. Faire alors Ctrl F2 pour stopper le programme et le rectifier Ex C1 : Que fait le petit programme suivant? - Le modifier pour afficher les multiples de 11 inférieurs à 200. table=0 while table <=90: print table table=table+9 - Qu'à pour effet la modification suivante? Pourquoi? table=0 while table <=90: print table table=table+9 - Compléter le premier programme pour qu'il écrive «0 fois 11 vaut 0», puis «1 fois 11 vaut 11» et ainsi de suite jusqu'au dernier. Ex C2 : Punition. Faire un programme écrivant 100 fois «Je ne copie pas sur mon voisin», en numérotant les lignes. Ex C3 : Rebonds Une balle tombe d'une hauteur de 2 m et rebondi de 90 % de sa hauteur de chute. Elle ne rebondit plus si elle chute de 2 cm=0,02 m ou moins. Faire un programme calculant le nombre de rebonds de la balle. Afficher la hauteur des rebonds successifs. Ex C4 * : Fibonacci pour les rapides: La suite de Fibonacci est définie par u 0 =1 u 1 =1 puis u n =u n 1 +u n 2 pour tout entier n 2. Faire afficher la listes des termes de cette suite, inférieurs à 50 Appeler le professeur pour validation
La boucle «pour.» for i in range ( N ): Répète N fois le BLOC d instruction indenté, BLOC La variable i parcours automatiquement les entiers de 0 à N-1 On peut préciser jusqu'à trois paramètres : range (début,fin) et range (début,fin,pas) NB : Toute boucle «pour i allant de 1 à N» est en fait un cas particulier de boucle «tant que i <N» avec i= i+1 dans le BLOC d'instruction. Ex C5 : Calendrier Écrire un programme qui affiche «1 janvier», jusqu'à «31 janvier» Ex C6 : Tables de multiplications Écrire un programme qui affiche les tables de multiplications jusqu'à 10 sous la forme «1 x 1 = 1» jusqu'à «10 x 10 = 100». Attention il faudra imbriquer deux boucles. Ex C7 : Somme de carrés Faire afficher la liste et la somme des carrés des entiers jusqu'à 100, sous la forme: «0²+1²+2²+...+100² =... Appeler le professeur pour validation Ex C8* : Mini défi pour les rapides Écrire un programme qui affiche les 100 premiers nombres premiers Voici un extrait de l article sur les nombres premiers tiré de l encyclopédie en ligne wikipédia. «Un nombre premier est un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs (qui sont alors 1 et lui-même). Cette définition exclut 1, qui n a qu un seul diviseur entier positif. Par opposition, un nombre non nul produit de deux nombres entiers différents de 1 est dit composé. Par exemple 6 = 2 x 3 est composé, tout comme 21 = 3 x7, mais 11 est premier car 1 et 11 sont les seuls diviseurs de 11. Les nombres 0 et 1 ne sont ni premiers ni composés.» Opération utile : n%k donne le reste de la division de n par k. Ainsi si n%2 vaut 0, c'est que n est pair, et si n%k vaut 0 alors k divise n.
Éléments de réponses Pour vérifier, comparer ou si vous êtes bloqués A3 B1 from future import division from lycee import * a = 4 b = 7 age = input("quel est votre age?") if age >=12: print "Début du jeu de bataille navale" x = input("indiquez la latitude") y = input("indiquez la longitude" ) if x==a and y==b: print "Coulé" elif x==a or y==b: print "En vue" else: print "À l'eau" else : print "Ce jeu est déconseillé aux moins de 12 ans" B2 B3
B4 a,b,c=input("entrez les coefficient du trinome, separes par une virgule") delta=b*b-4*a*c if delta<0: if a>0: print ('P(x)>0 pour tout x réel') if a<0 : print ('P(x)>0 pour tout x réel') if delta==0: if a>0: print ('P(x)est positif pour tout x réel') if a<0 : print ('P(x)est négatif pour tout x réel') if delta >0: if a >0 : print ("P(x)>0 à l'exterieur des racines") if a <0 : print ("P(x)<0 à l'exterieur des racines") C1 C2 C3 C4 C5 C6 C7 C8