CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de...

54
CHAPITRE 2 : LE LANGAGE PYTHON Objectifs et mise en œuvre Jusqu'à présent, nous avons conçu des algorithmes, c'est-à-dire une suite d'instructions bien précises pour résoudre un problème posé. Cependant un algorithme n'est pas un programme. Ce-dernier doit être écrit dans un langage de programmation que l'ordinateur interprétera. A l'issu de quelques séances d'introduction à l'algorithmique en langage usuel, il est indispensable que les élèves se confrontent à un langage de programmation ou du moins un avatar. Les notions vues précédemment vont y trouver des applications innombrables, et la rigueur sera obligatoire, la créativité mise à l'épreuve. Il faudra en effet : Repérer les données nécessaires à la résolution du problème (variables, données saisies au clavier par l'utilisateur...) Créer un algorithme utilisant ces données pour apporter une solution au problème Le transcrire en langage informatique. Dans cet ouvrage, un logiciel libre va être étudié : le langage Python (essentiellement la version 3.1). Comme d'autres logiciels, il a ses particularités, ses forces et ses faiblesses pour l'enseignement du second degré. Sa puissance tient à ses nombreuses possibilités, alliée à une simplicité de syntaxe remarquable, condition essentielle pour un premier contact avec un langage de programmation. La progression de l'apprentissage proposée est : 1. Prise en main du logiciel (séance 1) 2. Travail sur la notion de boucle (séances 2 et 3) 3. Travail sur la notion d'instruction conditionnelle (séance 4) 4. Travail avec des données du type chaîne de caractères et du type liste (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7. Fiches de TP en lien avec les chapitres du programme de seconde Certaines séances demandent du temps (2 à 3h ou plus) et peuvent donner lieu à une recherche personnelle à la maison.

Transcript of CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de...

Page 1: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

CHAPITRE 2 : LE LANGAGE PYTHON

Objectifs et mise en œuvre

Jusqu'à présent, nous avons conçu des algorithmes, c'est-à-dire une suite d'instructions bien précises pour résoudre un problème posé. Cependant un algorithme n'est pas un programme. Ce-dernier doit être écrit dans un langage de programmation que l'ordinateur interprétera.

A l'issu de quelques séances d'introduction à l'algorithmique en langage usuel, il est indispensable que les élèves se confrontent à un langage de programmation ou du moins un avatar. Les notions vues précédemment vont y trouver des applications innombrables, et la rigueur sera obligatoire, la créativité mise à l'épreuve. Il faudra en effet :– Repérer les données nécessaires à la résolution du problème (variables, données saisies au clavier par l'utilisateur...)– Créer un algorithme utilisant ces données pour apporter une solution au problème– Le transcrire en langage informatique.

Dans cet ouvrage, un logiciel libre va être étudié : le langage Python (essentiellement la version 3.1). Comme d'autres logiciels, il a ses particularités, ses forces et ses faiblesses pour l'enseignement du second degré. Sa puissance tient à ses nombreuses possibilités, alliée à une simplicité de syntaxe remarquable, condition essentielle pour un premier contact avec un langage de programmation. La progression de l'apprentissage proposée est :

1. Prise en main du logiciel (séance 1)2. Travail sur la notion de boucle (séances 2 et 3)3. Travail sur la notion d'instruction conditionnelle (séance 4)4. Travail avec des données du type chaîne de caractères et du type liste

(séance 5)5. Travail sur la notion de fonction informatique (séance 6)6. Compléments utiles en pratique : les annexes.7. Fiches de TP en lien avec les chapitres du programme de seconde

Certaines séances demandent du temps (2 à 3h ou plus) et peuvent donner lieu à une recherche personnelle à la maison.

Page 2: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

2 Chapitre 2

TP PYTHON N°1

1 L'environnement de travail

Python présente la particularité intéressante de pouvoir être utilisé de plusieurs manières différentes. Vous l'utiliserez en premier lieu en mode interactif, c'est-à-dire d'une manière telle que vous pourrez dialoguer avec lui directement depuis le clavier. Dans un second temps, vous apprendrez comment créer vos premiers programmes (scripts) et les sauvegarder sur disque dur ou sur clef USB. On présente ci-dessous l'environnement de travail IDLE :

Les trois caractères « supérieur à » constituent le signal d'invite, ou prompt principal, lequel vous indique que Python est prêt à exécuter une commande.

2 Calculer avec Python

Vous pouvez utiliser l'interpréteur comme une simple calculatrice de bureau. Testez par exemple les commandes suivantes dans l'environnement IDLE que vous obtenez via Tous les programmes>Python3.1>IDLE(Python gui) :

>>> 15+3

>>> 2-17

>>> 8 + 3 * 4

>>> (8+3)*4 #Remarquez la différence

>>> 20/3

Comme vous pouvez le constater, les opérateurs arithmétiques pour l'addition,

Page 3: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 3

la soustraction, la multiplication et la division sont respectivement +, -, * et / Les règles de priorité opératoires sont respectées.

3 Affectation-réaffectation

Nous avons vu en cours l'opération d'affectation, qui consiste à donner à une variable une valeur (nombre entier, réel, chaîne de caractères, etc...).

En pseudo-langage, l'opération d'affectation a été symbolisée par le sigle "←"Exemple : a←5 ; J'affecte à la variable a la valeur 5

En langage Python l'opération d'affectation s'écrit =

Testez par exemple les commandes suivantes :

>>> a=3>>>a

>>>a+10

>>>a/2

Ne croyez pas que cette affectation soit définitive. On peut réaffecter à la variable « a » une nouvelle valeur en réutilisant le symbole « = ».

>>>a #Quelle est la valeur actuelle de a ?

>>>a=a+5 #On réaffecte à a sa valeur précédente augmentée de 5>>>a

#Que vaut a maintenant ?

Remarque : le signe « = » utilisé ici n'a absolument aucun rapport avec l'égalité au sens mathématique du terme.

Python a une convention : si ce que l'on écrit est vrai, il renverra true en réponse ; si c'est faux, il renverra false.

Par exemple, testez les commandes suivantes (en vous souvenant bien de la dernière valeur affectée à la variable a).

>>> a<1

>>>a>2

Page 4: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

4 Chapitre 2

>>>a==8 #Le sigle double égale == est l'égalité classique, au sens mathématique usuel. >>>a!=4 #Le sigle != signifie « différent ».

Que va renvoyer l'instruction a>=4 ?

Synthèse partielle : Quelle différence fondamentale faîtes-vous entre l'écriture a=10 et a==10 ?

4 Typage des variables

La variable a que nous avons rencontrée jusqu'ici appartient à une seule catégorie : celle des entiers. En anglais, cela se dit « Integer ».

Testez les commandes suivantes :

>>>a

>>>type(a) #Quel est le résultat affiché ? Signification ?

>>>b=2.3 #Le séparateur décimal est le point, pas la virgule.

>>>type(b) #Quel est le résultat affiché ? Signification ?

>>>c="Salut"

>>>type(c)

>>>d=[20,35,87,12]

>>>type(d)

>>>e=[5, "coucou",32.5,"Hugh"] #Mélange de types dans un autre ?

>>>type(e)

Ces variables appartiennent à des types très différents. Nous verrons dans quelle mesure les utiliser séparément, puis ensemble. Rappeler ces types :

5 Opérations sur les variables

Commençons par réaffecter à chacune des valeurs a,b c et d d'autres valeurs. Testez les commandes suivantes:

Page 5: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 5

>>>a=2>>>b=5.5>>>c="Hello " #Avec l'espace entre Hello et le guillemet de fin.>>>d="vous !"

>>>a+b

>>>c+d

>>>print(c+d)

Quelle différence remarquez-vous entre les deux commandes précédentes ?

>>>a+c #On ne mélange pas les genres !

>>> a*2

>>>a**2

>>>a**3

>>>a**4

>>>a**5

Que signifie l'opération « ** » entre un nombre et un entier ?

>>>c*2

>>>c*3

Même question entre une chaîne de caractères et un entier non nul pour « * ».

Exercice 1 : Signalons au passage l'opérateur modulo, représenté par le symbole %.Cet opérateur fournit le reste de la division entière d'un nombre par un autre. Essayez par exemple :>>> 10 % 3>>> 10 % 5Cet opérateur vous sera très utile plus loin, notamment pour tester si un nombre a est divisible par un nombre b. Il suffira en effet de vérifier que a % b donne un résultat égal à zéro.

Vérifier à l'aide de la commande modulo si le nombre 33294 est divisible par 3 puis par 17.

Page 6: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

6 Chapitre 2

Exercice 2 : Écrire un programme qui permet d'échanger la valeur de deux nombres a et b indépendamment des valeurs affectées à a et à b au départ.

Pour un complément sur la notion d'affectation avec Python, se référer à la fiche : Plus sur l'affectation.

Page 7: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 7

Récapitulatif

1 Affectation

Définition : La notion d'affectation (ou d'assignation) désigne l'opération par laquelle on établit un lien entre le nom de la variable et sa valeur (son contenu). On l'a noté en langage usuel avec le symbole ←

Question 1 : Comment se note-t-elle en Python ?

Question 2 : Comment fait-on pour affecter à une variable a la valeur 3 ?

Question 3 : Cette affectation est-elle définitive ? Comment fait-on pour lui ré-affecter une autre valeur ?

Question 4 : Quelle est la signification du symbole « == » en Python ?

Question 5 : On écrit les lignes de commande suivantes. Quel résultat va renvoyer l'ordinateur ?>>>a=5

>>>a

>>>a==3

>>>a==5

>>>a=18

>>>a<20

>>>a>10

>>>a=a+6

>>>a

>>>b=30

>>>b>a

>>>a+b

Page 8: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

8 Chapitre 2

Question 6 : On écrit les lignes de commande suivantes. Quel résultat va renvoyer l'ordinateur ?>>>a=10>>>b="salut">>>a+b

Même question avec :>>>a=10>>>b= 5.2>>>a+b

2 Typage des variables

Question 7 : Rappeler les différents types de variables rencontrés.

Question 8 : a) Comment assigne-t-on à une variable a le type string ? (chaîne de caractères)

b) Que signifie l'opération concaténer deux chaînes de caractères ?

c) Que va renvoyer les commandes suivantes ?>>>a="Bonjour ">>>b="vous !">>>a+b>>>print(a+b)

Question 9 : Que va renvoyer la commande suivante ?>>> a="Oui ">>>a*3

Question 10 : On admet que le premier élément d'une liste LIST se note LIST[0], le second LIST[1], etc... On se donne une liste par la commande suivante :>>>LIST=[5,48,-57,"ABC",451.9,"soleil",-789]Quel résultat vont renvoyer les commandes suivantes ?>>>LIST[0]

>>>LIST[2]

Page 9: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 9

TP PYTHON N°2

Consignes : La dernière fois, nous avons utilisé Python en mode interactif grâce à l'interface IDLE (Python Gui). De cette manière, nous avons été en mesure d'apprécier « en direct » quelques outils néanmoins fondamentaux : affectation d'une valeur à une variable, les différents types de variables : int, float, string, list... Mais dès lors que nous fermons la fenêtre dans laquelle nous avons travaillé, toutes les données sont irrémédiablement perdues. Au cours de cette séance, vous allez apprendre comment écrire un script et l'enregistrer pour une éventuelle ré-utilisation dans le futur.

1 Exercices

Exercice 1 : votre premier programmeRemarque : Tout ce qui suit le signe dièse : # est considéré par Python comme un commentaire. Cela n'apparaîtra pas dans le script final et n'est destiné qu'à votre intention ou à celle des lecteurs du programme. Il sera ESSENTIEL que vous commentiez vos programmes. D'une cela facilite leur compréhension, et de deux cela vous aidera à les reprendre plus tard si vous ne les avez pas terminés.

1) Rechercher le logiciel Python dans menu démarrer>programmes>Python 3.1>IDLE(Python GUI)2) Ouvrir une nouvelle fenêtre à l'aide de l'onglet file puis New window. Il apparaît une fenêtre vierge attendant vos instructions.3) Saisir alors exactement le texte ci-dessous. La mise en forme se fait automatiquement. En particulier l'indentation du bloc d'instructions suivant while est ESSENTIELLE. Elle se fera automatiquement sous IDLE.

TRÈS IMPORTANT : enregistrez ce fichier sur votre clef USB dans le dossier TP Python en lui donnant le nom suivant : TP2_exercice1.py (l'extension .py est capitale)

Page 10: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

10 Chapitre 2

Vous allez compiler le programme en appuyant simultanément sur les touches Ctrl et F5.Alors, que se passe-t-il ?

Exercice 2 : En créant une nouvelle feuille vierge grâce à l'instruction file New Window, répondez au problème suivant. Vous l'enregistrerez sous le nom : TP2_exercice2.pyConstruire la figure suivante en utilisant l'instruction while (la longueur d'un côté du quadrillage est de 50).Quel nom porte cette figure ?

2 Quelques instructions pour obtenir les figures demandées.

from turtle import *

reset()goto(x,y)forward(x)backward(x)up()

down()

left(x)

right(x)

Permet d'importer les commandes pour les tracés.On efface tout et on recommenceAller à l'endroit(x,y)Avancer de la distance xReculer de la distance xRelever le crayon (pour pouvoir avancer sans dessiner).Abaisser le crayon pour recommencer à dessiner.Tourner à gauche d'un angle en degrés égal à x.Tourner à droite d'un angle en degrés égal à x.

Page 11: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 11

Instructions en Python Commentaireswhile condition:

Bloc d'instructions

while signifie « tant que »Les « : » sont indispensables pour dire « faire »L'indentation après while est obligatoire.

Exercice 3 : En utilisant toujours l'instruction while, soit une fois soit deux fois, obtenir la figure suivante (longueur d'un côté d'un petit carré : 50. Cette figure devra être construite en une seule fois. On construira d'abord les côtés de l'hexagone puis les trois diagonales. De même, après avoir écrit votre programme dans une nouvelle feuille vierge, enregistrez-le sur votre clef USB sous le nom : TP2_exercice3.py.

Exercice 4 : Écrire un programme dans une nouvelle feuille vierge calculant et affichant le résultat de

S = 591317...101105 . Vous l'enregistrerez sur votre clef USB sous le nom : TP2_exercice4.pyLa commande pour afficher une variable S est : print(S)

Page 12: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

12 Chapitre 2

Récapitulatif

1 Écrire une boucle « Tant que » avec Python

Syntaxe en langage usuel Syntaxe en PythonTant que condition vérifiée faire

bloc d'instructionsFin Tant que

while condition vérifiée :

bloc d'instructions

Remarques : – Les : sont obligatoires après la condition associée à while.– L'indentation du bloc d'instructions associé à while est obligatoire.

2 Utilisation du module turtle

Toute utilisation des outils graphique du module turtle nécessite qu'on l'ait « appelé » par la commande : from turtle import * avant toute chose. On redonne les commandes usuelles pour tracer des figures :

reset()

goto(x,y)

forward(x)

backward(x)

up()

down()

left(x)right(x)

On efface tout et on recommence

Aller à l'endroit(x,y)

Avancer de la distance x

Reculer de la distance x

Relever le crayon (pour pouvoir avancer sans dessiner).Abaisser le crayon pour recommencer à dessiner.Tourner à gauche d'un angle en degrés égal à x.Tourner à droite d'un angle en degrés égal à x.

Page 13: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 13

TP PYTHON N°3

Consignes : on veillera dans cette séance à enregistrer soigneusement ses programmes pour une utilisation ultérieure dans certains scripts.

Exercice 1 :1) Rappeler dans l’encart de texte ci-dessous un script écrit en Python qui permet de dessiner un carré de côté 10. Vous utiliserez une boucle while.

2) En modifiant ce script, en écrire un autre qui trace une série de dix carrés de côté 10. L’espace entre les carrés est de 10. Vous enregistrerez votre programme sous le nom : TP3_exercice1.py

3) En modifiant le script précédent, en écrire un autre qui trace une série de quatre carrés dont les côtés augmentent de 15 en 15. Le premier carré a un côté de 10 et l’espace entre chaque carré est de 10. Vous l’enregistrerez sous le nom : TP3_exercice1bis.py.

Page 14: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

14 Chapitre 2

Exercice 2 : Écrire un script en Python qui trace une série alternée de carrés et d’hexagones espacés de 30. Les carrés comme les hexagones ont leurs côtés égaux à 20. Vous l'enregistrerez sous le nom TP3_exercice2.py.

Exercice 3 : Considérons une liste de nombres entiers ou flottants :a=[20,3.5,44, 37, 151, 28,15.5]Le premier élément de la liste se note a[0], le second a[1], etc. Il existe une fonction prédéfinie en Python qui renvoie le nombre d'éléments d'une liste : c'est la fonction len. Dans le cas présent, si l'on tape len(a), l'ordinateur affichera 7. Écrire un script qui : 1) part d'une liste de nombres entiers ou flottants, par exemple on prendra la liste précédente. 2) En parcourant la liste, renvoie au final la somme des éléments qui la constitue. Vous utiliserez une boucle while et la fonction len. 3) Vous enregistrerez votre programme sous le nom TP3_exercice3.py

Pour un complément sur la notion de saisie de données avec Python, se référer à la fiche : Plus sur la saisie de données.

Page 15: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 15

TP PYTHON N°4

Consignes : on enregistrera également tous les programmes réalisés au cours de la séance.

1 Écrire une instruction conditionnelle « Si...alors » avec Python

Syntaxe en langage usuel Syntaxe en PythonSi condition vérifiée faire

bloc d'instructions

Fin Si

if condition vérifiée:

bloc d'instructions

Exercice 1 : Écrivez un programme qui :1) demande à l'utilisateur de saisir une chaîne de caractères2) compte le nombre d'occurrences du caractère « g » dans cette chaîne.Enregistrez votre programme sous le nom TP4_exercice1.py

Remarques : Les « : » sont obligatoires après la condition associée à if.L'indentation du bloc d'instructions associé à if est obligatoire.

2 Écrire une instruction conditionnelle « Si...alors...sinon » avec Python

Syntaxe en langage usuel Syntaxe en PythonSi condition vérifiée faire

bloc d'instructions 1

Sinon faire

bloc d'instructions 2Fin Si

if condition vérifiée:

bloc d'instructions 1

else:

bloc d'instructions 2

Remarques : – Les « : » sont obligatoires après la condition associée à if ainsi qu'après else.– L'indentation du bloc d'instructions associé à if est obligatoire ; même chose pour celui associé à else.

Page 16: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

16 Chapitre 2

– if et else sont indentés identiquement.

Exercice 2 : Écrivez un programme qui affiche les 15 premiers termes de la table de multiplication par 7, en signalant au passage (à l'aide d'une astérisque) ceux qui sont des multiples de 3.Exemple : 0 7 14 21* 28 35 42* 49 (penser à utiliser la commande modulo %). Enregistrez votre programme sous le nom TP4_exercice2.py

Exercice 3 : Écrire un programme qui demande à l'utilisateur de saisir un entier naturel N. Si N est un multiple de 5, il sera affiché « multiple de 5 », sinon ce sera « pas multiple de 5 ». Enregistrez votre programme sous le nom TP4_exercice3.py

Exercice 4 : Écrire un programme qui demande à l'utilisateur de saisir un entier naturel N. Si N est pair, le programme dessinera un carré de côté 50, sinon il dessinera un triangle équilatéral de côté 70. Enregistrez votre programme sous le nom TP4_exercice4.py

3 Écrire une instruction conditionnelle « Si...Sinon si...sinon » avec Python

Syntaxe en langage usuel Syntaxe en PythonSi (condition 1 vérifiée) faire

bloc d'instructions n°1

Sinon si (condition 2 vérifiée) faire

bloc d'instructions n°2

…etc...

Sinon si (condition N-1 vérifiée) faire

bloc d'instructions n° N-1

Sinon faire

bloc d'instruction n° N

Fin Si

if (condition 1 vérifiée):

bloc d'instructions n°1

elif (condition 2 vérifiée):

bloc d'instructions n°2

...etc...

elif (condition N-1 vérifiée):

bloc d'instructions n° N-1else: bloc d'instruction n°N

Remarques : – elif signifie sinon si– Les « : » sont obligatoires après la condition associée à if ainsi qu'après

Page 17: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 17

celles associées aux elif et à else.– L'indentation du bloc d'instructions associé à if est obligatoire ; même chose pour celui associés aux elif et à else.– if, elif et else sont indentés identiquement– Toutes les conditions énoncées sont par construction incompatibles deux à deux.

Exercice 5 : Lors d'un sondage, une personne interrogée a le choix entre trois réponses :satisfait : S moyennement satisfait : M pas satisfait : P Écrire un programme qui demande à l'utilisateur son avis parmi ces trois propositions dans l'ordre précité. Si la première réponse S est donnée, il affichera "Merci ! Very Good" ; si c'est la seconde M il affichera "Ok ok" sinon il affichera "Snif ! ". On ne programmera pas de test pour vérifier si une et une seule de ces trois réponses est donnée.

Page 18: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

18 Chapitre 2

TP PYTHON N°5

Consignes : on enregistrera tous les programmes réalisés au cours de la séance. Le reste de la séance se traitera de manière interactive via l'interface IDLE.

1 Les chaînes de caractères (type string)

Sous Python, une donnée de type string est une suite quelconque de caractères (texte ou même nombres) délimitée soit par des apostrophes (simple quotes), soit par des guillemets (double quotes).

Exemple : Tester sous IDLE les commandes suivantes >>> phrase1='Voilà un écrit '>>> phrase2='bien intéressant'>>> print(phrase1,phrase2)Voilà un écrit bien intéressant

À l'intérieur d'une chaîne de caractères, l'antislash « \ » permet d'insérer un certain nombre de codes spéciaux (sauts à la ligne, apostrophes, guillemets, etc.). On ne donne que l'exemple des apostrophes.>>> phrase3='Comment s\'appelle-t-il ?' #L'antislash est placé avant l'apostrophe>>> print(phrase3)Comment s'appelle-t-il ?

Python considère les chaînes de caractères comme une collection ordonnée d'éléments. Pour accéder à un élément de la chaîne, on saisit le nom de la variable et on lui accole entre crochets le numéro de l'élément considéré. Attention, la numérotation commence à zéro !

Exemple : Tester sous IDLE les commandes suivantes>>> mot='erg4ju6op'>>> print(mot[0])e>>> print(mot[3])4

2 Opérations sur les chaînes de caractères

2.1 La concaténation

Cette opération consiste à mettre bout à bout les éléments constitutifs de plusieurs chaînes de caractères. Elle se symbolise à l'aide de l'opération +

Page 19: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 19

Exemple : Tester sous IDLE les commandes suivantes>>> mot1='Mais c\'est '>>> mot2='merveilleux !'>>> print(mot1+mot2) #On concatène mot1 et mot2Mais c'est merveilleux !>>> print(mot2+mot1)merveilleux !Mais c'est #L'ordre est important.

2.2 Déterminer la longueur d'une chaîne

Cette opération s'effectue grâce à la fonction len(). Exemple : Tester sous IDLE les commandes suivantes>>> mot="adseghbm55f">>> len(mot)11

2.3 Convertir une chaîne de caractères en nombre

Exemple : Tester sous IDLE les commandes suivantes>>> nb1='54'>>> nb1+5Traceback (most recent call last): File "<pyshell#27>", line 1, in <module> nb+5TypeError: Can't convert 'int' object to str implicitly>>> int(nb1)+5 #On convertit la chaîne nb1 en entier grâce à la fonction int()59>>> nb2='20.36'>>> float(nb2)+4 #On convertit la chaîne nb2 en flottant grâce à la fonction float()24.36

Remarque : La chaîne qui ne contient aucun élément se note "" (rien entre les guillemets)

Exercice 1 : Écrire un programme qui :1) demande à l'utilisateur de saisir une chaîne de caractères2) compte le nombre d'occurrences du caractère « a » dans cette chaîne.3) Si « a » n'apparaît pas, le programme le rajoute à la fin de la chaîne.Enregistrez votre programme sous le nom TP5_exercice1.py

Exercice 2 : Écrire un programme qui recopie une chaîne (dans une nouvelle variable) en l'inversant. Ainsi par exemple, « bouchon »

Page 20: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

20 Chapitre 2

deviendra « nohcuob ».Enregistrez votre programme sous le nom TP5_exercice2.py

3 Les listes d'éléments (type list)

Sous Python, on peut définir une liste comme une collection d'éléments (éventuellement de types divers) séparés par des virgules, l'ensemble étant encadré par des crochets.

Exemple : Tester sous IDLE les commandes suivantes>>> maliste=['abc','hello',20,3.14,'coucou']>>> print(maliste)['abc', 'hello', 20, 3.14, 'coucou']

Remarque : Comme les chaînes de caractères, les éléments d'une liste sont numérotés en commençant à zéro.

Exemple : Tester sous IDLE les commandes suivantes>>> maliste=['abc','hello',20,3.14,'coucou']>>> maliste[0]'abc'>>> maliste[2]20

À retenir : l'indice d'une liste de n éléments commence à 0 et se termine à n-1

4 Opérations sur les listes

4.1 Concaténation et duplication

Comme pour les chaînes de caractères, l'opérateur + sert pour concaténer des listes et * pour les dupliquer. Exemple : Tester sous IDLE les commandes suivantes>>> liste1=[325,'bonjour',65,69]>>> liste2=['ha','gros',564]>>> liste1+liste2[325, 'bonjour', 65, 69, 'ha', 'gros', 564]>>> liste2*3['ha', 'gros', 564, 'ha', 'gros', 564, 'ha', 'gros', 564]

4.2 Ajouter ou supprimer un élément dans une liste

Python est un langage « orienté objet ». On dispose de méthodes spécifiques permettant d'effectuer certaines actions sur des objets. Nous considérerons ici qu'une liste est un objet.

Page 21: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 21

4.2.1 Ajouter un élément à la fin d'une liste

Exemple : Tester sous IDLE les commandes suivantes>>> maliste=[201,45.8,12]>>> maliste.append(35)>>> maliste[201, 45.8, 12, 35]

On a appliqué la méthode append() à l'objet maliste avec l'argument 35. La syntaxe est :liste.append(objet)

4.2.2 Ajouter un élément à l'intérieur d'une liste

Exemple : Tester sous IDLE les commandes suivantes>>> maliste=[201,45.8,12,35,89]>>> maliste.insert(3,100)>>> maliste[201, 45.8, 12, 100, 35, 89]

La commande liste.insert(indice,objet) insère l'objet dans la liste avant l'indice précisé.

4.2.3 Supprimer un élément dans une liste

Cette opération s'effectue grâce à la commande del liste[indice]

Exemple : Tester sous IDLE les commandes suivantes>>> maliste=[55,201,89,33]>>> del maliste[1]>>> maliste[55, 89, 33]

Remarque : la liste vide se note []. La méthode append() est particulièrement adaptée pour construire une liste à partie d'une boucle.

La fonction len() renvoie également le nombre d'éléments d'une liste.

Exemple : >>> maliste=[55,120,40,-8]>>> len(maliste)4

Page 22: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

22 Chapitre 2

Exercice 3 : Écrire un programme qui :1) saisisse la liste de nombres [20,35,11,56,41,10].2) détermine le plus grand élément de cette liste,3) affiche cet élément.Ici il s'affichera : le plus grand élément de cette liste est 56Enregistrez votre programme sous le nom TP5_exercice3.py

Exercice 4 : Écrire un programme qui :1) prend comme variables deux listes,2) alterne les éléments de la première liste avec ceux de la seconde.Ici l'utilisateur saisira par exemple ['coucou','bonjour','ça va ?'] et ['Charles','Edouard','Au poil !'], il s'affichera alors : ['coucou','Charles','bonjour','Edouard','ça va ?','Au poil !']Enregistrez votre programme sous le nom TP5_exercice4.py

Page 23: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 23

TP PYTHON N°6

Motivation : De même qu'un organisme vivant (donc une structure biologiquement complexe) est constitué d'un assemblage de nombreuses cellules, un programme « compliqué » se structure en un assemblage de plus petits sous-programmes, chacun ayant un rôle bien défini. Nous allons découvrir au cours de cette séance comment créer ces petits sous-programmes et les utiliser pour en construire un autre plus compliqué. L'utilité de ces sous-programmes, que l'on appellera fonctions est primordiale lorsque l'on veut réaliser plusieurs fois la même opération au sein d'un même programme.

La syntaxe Python pour définir une fonction est la suivante :

Remarques : – Vous pouvez donner à votre fonction n'importe quel nom sauf ceux réservés au langage comme while, if, etc... et sans utiliser de caractères spéciaux ou accentués. – L'indentation est obligatoire après le mot clef « def » qui introduit le corps de la fonction et là encore celui-ci est terminé par un double-point :– Enfin les parenthèses peuvent ou non contenir un ou plusieurs arguments. Nous détaillerons cette notion dans les exemples qui suivent ainsi que dans les TP.

Tout en suivant les instructions, vous répondrez sur cette feuille aux questions posées au cours des exercices après les symboles #.

Exercice 1 : Pour le moment nous allons utiliser Python en mode interactif. Ouvrez un fichier vierge via : menu démarrer>tous les programmes>Python 3.1>IDLE (Python GUI). Recopiez ensuite le script de la page suivante :

def nom_de_la_fonction(liste de paramètres):

Blocs d'instructions

Page 24: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

24 Chapitre 2

>>> def carre(): #Pas de paramètres en argument icii=0 #Remarquez l'indentation du bloc d'instructions de defwhile i<4:

forward(50)left(90)i=i+1

#Tapez deux fois Entrée

>>>from turtle import *>>>carre()

#Que s'affiche-t-il à l'écran ?Remarques : – L'intérieur des parenthèses est vide. Dans cette fonction, nous n'avons utilisé aucun paramètre, c'est-à-dire que l'utilisateur ne se donne pas le choix de faire varier par exemple le côté du carré.– Bien remarquer l'indentation après l'instruction def suivie de deux points. Elle est obligatoire.

Exercice 2 : On aimerait pouvoir dessiner des carrés de tailles et de couleurs variables. Encore faut-il les choisir ! Pour cela, on mettra ces données en paramètre. À la suite de ce que vous avez saisi précédemment, écrire le script ci-dessous :

>>> def carre(taille,couleur):color(couleur)i=0while i<4:

forward(taille)left(90)i=i+1

Appuyez deux fois sur la touche Entrée. Le prompt de commande >>> réapparait. Saisir :

>>>from turtle import *>>>carre(40,'pink')

#Que s'affiche-t-il à l'écran ?Saisir ensuite :

>>>carre(80,'blue')#Que s'affiche-t-il à l'écran ?

Remarques : – Le fait d'avoir mis la taille et la couleur du carré en paramètres (à

Page 25: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 25

l'intérieur des parenthèses) permet de tracer le carré avec les informations fournies. Il suffit de remplacer la taille et la couleur par les valeurs choisies en appelant la fonction.– On aimerait néanmoins demander à l'utilisateur de saisir la taille et la couleur à l'écran pour qu'ensuite la fonction soit appelée et dessine le carré. On séparera donc en deux la construction de la fonction et le programme principal.

Exercice 3 : À partir de la fenêtre présentement ouverte, ouvrir une fenêtre vierge via la commande file>New Window. Saisir ensuite le script qui suit :

def carre(taille): #Construction de la fonction carrei=0while i<4:

forward(taille)left(90)i=i+1

#programme principal

from turtle import *n=int(input("Saisissez le nombre de carrés à tracer "))taille=int(input("Saisissez la taille de chaque carré "))espacement=int(input("Saisissez l\'espacement entre chaque carré "))j=0 # on aurait pu tout aussi bien réutiliser iwhile j<n:

carre(taille)up()forward(taille+espacement)down()j=j+1

Enregistrez ce programme sous le nom : TP6_exercice3.py. Appuyez sur Ctrl + F5 simultanément pour le faire fonctionner.

Remarque : Tout programme en Python un peu complexe prendra nécessairement la forme suivante :

Liste de fonctions

#il peut n'y en avoir qu'une

Programme principal

#on utilise les fonctions précédentes

Page 26: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

26 Chapitre 2

Attention à la portée des variables que vous définissez !Pour un complément sur la notion de fonction avec Python, se référer à la fiche Plus sur la notion de fonction

Exercice 4 : Ouvrir une autre fenêtre vierge via file>New Window 1) Recopier la fonction carre(taille) de l'exercice précédent permettant de dessiner un carré de côté taille.2) Écrire le programme principal à la suite. Celui-ci :a) demandera à l'utilisateur de saisir la taille du côté d'un carréb) dessinera cinq carrés de la taille choisie, l'espace entre les carrés étant de la même taille que chacun des carrés. Enregistrez le programme sous le nom TP6_exercice4.pyLe tester en appuyant sur Ctrl+F5 simultanément.

Exercice 5 : Pour chacune des figures proposées, vous ouvrirez une autre fenêtre vierge via file>New Window 1) Copier le script de la fonction carré de l'exercice 3. 2) Écrire le programme principal à la suite. Celui-ci : a) demandera à l'utilisateur de saisir la taille du côté du carré initial,b) construira les figures telles que proposées dans les modèles.Vous enregistrez ce programme sous le nom TP6_exercice5_figure_i.py (i varie de 1 à 2 : numéro de la figure demandée)

Figure 1 : vous pourrez par exemple choisir 80 pour la taille des carrés.

Figure 2 : les dix carrés ont un côté de 40.

Page 27: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 27

Exercice 6 : Écrire un programme utilisant deux fonctions carre(taille,couleur) et triangle(taille,couleur) permettant de dessiner le motif suivant. Pour représenter le motif, vous pourrez choisir par exemple les carrés comme les hexagones de côtés égaux à 80 ; les carrés étant dessinés en bleu et les triangles en rouge. Vous l'enregistrerez sous le nom TP6_exercice6.py

Remarque : La liste des couleurs est : 'blue','red','green','yellow','pink',etc.Pour affecter une couleur à une ligne la commande est : color(couleur)

Exercice 7 : En créant deux fonctions carre(taille,couleur) et pentagone(taille,couleur)1) écrire un programme qui dessine une alternance de carrés (de côté 30, de couleur bleue) et de pentagones réguliers (de côté 30, de couleur rouge) six fois de suite. L'espacement entre la base d'un pentagone et d'un triangle est également de 30. Vous l'enregistrerez sous le nom TP6_exercice7_1.py 2) modifier le programme précédent pour obtenir la figure suivante

Vous l'enregistrerez sous le nom TP6_exercice7_2.py

Page 28: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

28 Chapitre 2

Exercice 8 : en créant une fonction motif() qui dessine la figure de l'exercice 71) écrire un programme qui dessine la figure suivante. On partira du point de coordonnées (-250,0), et les motifs seront composés de figures de côté 15 et espacés de 100 entre eux. Vous l'enregistrerez sous le nom TP6_exercice8_1.py

2) Pareillement avec la configuration qui suit :

Vous l'enregistrerez sous le nom TP6_exercice8_2.py

Remarque : cette notion de fonction est essentielle en informatique et nous l'utiliserons dans de nombreux contextes autres que graphiques. La difficulté tiendra aux nombres de variables à créer ainsi qu'à leur nature : locale, interne ou globale.

Page 29: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 29

FICHES DE COMPLÉMENT

Motivation : Ces fiches ont pour objet de donner des compléments aux élèves concernant le langage de programmation Python. Certains raccourcis sont très avantageux et permettent de réduire la taille des scripts. Elles peuvent être distribuées au fur et à mesure que les notions sont présentées et mises en œuvre.

– La première fiche donne un éclairage sur la notion d'affectation et peut être étudiée dès la fin du TP N°1.– La seconde fiche concerne l'entrée et la sortie des données, notions indispensables pour concevoir un programme. – La troisième fiche entraîne l'utilisateur à écrire une boucle « Pour », compactant ainsi les scripts écrits avec un boucle conditionnelle « Tant que ». On y découvre la fonction prédéfinie range.– La quatrième fiche est centrée sur les fonctions informatiques et peut être étudiée tout au long des trois années de lycée. La notion de variables informatiques et de passage des paramètres est délicate et demande du temps. – Enfin la dernière fiche aborde la récursivité, notion très pratique pour le dessin d'objets fractals. Son étude est abordable en seconde à condition d'avoir suffisamment mûri les autres notions au cours de nombreux TP.

Page 30: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

30 Chapitre 2

PLUS SUR LA NOTION D'AFFECTATION

Dans le langage de programmation Python, on dispose de l'opération d'affectation symbolisée par le signe « égale » : =Par exemple, analysez les séquences d'instructions suivantes :

1 L'affectation simple

>>> a = 3 #J'affecte à la variable a la valeur 3>>> b = 4 #J'affecte à la variable b la valeur 4

2 L'affectation parallèle

>>> a,b = 3,4 #J'affecte simultanément à a la valeur 3 et à b la valeur 4

Ici, la ligne de code ci-dessus parvient exactement au même résultat que les deux lignes de codes précédentes.

♦♦♦ ATTENTION ! Il convient cependant de bien comprendre comment fonctionne l'affectation parallèle par rapport à l'affectation simple.

Exercice résolu : on souhaite échanger les valeurs de 2 variables a et b.

• Résolution avec l'affectation simple >>> a = 3>>> b = 4

#Fausse bonne idée : échanger directement les valeurs de a et b>>> a = b #a prend la valeur 4>>> b = a #La valeur 4 étant à présent affectée à la variable a, b la prend aussi !

#Au final, a et b valent 4#On va avoir besoin d'une variable

supplémentaire pour stocker la valeur initiale de a. Corrigeons le script...>>> a = 3>>> b = 4>>> c= a #J'affecte à c la valeur initiale de a, c'est-à-dire 3>>> a = b #a prend la valeur de b, c'est-à-dire 4>>> b = c #b prend la valeur de c, c'est-à-dire la valeur initiale de a : 3

• Résolution avec l'affectation parallèle>>> a,b= 3,4 #J'affecte simultanément à a la valeur 3 et à b la valeur 4>>> a,b = b,a #ET LÀ GROSSE DIFFÉRENCE : les expressions de la partie droite sont

Page 31: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 31

d'abord toutes évaluées avant qu'aucune affectation ne se fasse. Comme b vaut 3 et a vaut 4, le tour est joué !

Exercice : Quelles valeurs vont être affectées à a et à b au final après les lignes de codes suivantes ?

>>> a,b = 6,10 >>> a,b= 6,10>>> a = b OU >>> a,b = b, a - b>>> b = a – b

On a aussi la notion d'affectation multiple. Exemple a=b=5 #On affecte simultanément à a et b la valeur 5

Page 32: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

32 Chapitre 2

PLUS SUR LA SAISIE DE DONNEES

1 La commande input()

Dans le langage de programmation Python, on dispose de la fonction prédéfinie input() qui permet à l'utilisateur de saisir des données à l'écran.

Par exemple testez sous IDLE :>>> a=input() #L'ordinateur attend la saisie de l'utilisateur. 3>>> a'3' #Attention même si c'est un entier qui est saisi, a est du type « string »>>> type(a)<class 'str'> #Comment le convertir en entier ?>>> a=int(input())3>>> a3>>> type(a)<class 'int'>

La commande input() permet aussi d'afficher du texte. Il suffit d'écrire entre guillemets ou simple quotes le message à l'intérieur des parenthèses. Exemple : >>> a=input("Saisissez un nombre décimal ")Saisissez un nombre décimal #L'ordinateur attend la saisie de l'utilisateur

#Si l'on veut que a soit du type float, on doit composer deux instructions.#On modifie la ligne précédente par :>>> a=float(input("Saisissez un nombre décimal "))Saisissez un nombre décimal 20.6 # Je saisis 20.6 par exemple>>> type(a)<class 'float'> #La variable a a été convertie en flottant

On retiendra : la commande a=input() permet d'affecter à la variable a ce qui est saisi par l'utilisateur à l'écran. ATTENTION ! On gardera à l'esprit que a est du type string. Si l'on souhaite travailler avec des nombres ou des listes, il faudra convertir a en composant une instruction adéquate avec la commande input().

Page 33: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 33

2 Entrées de données : un résumé

La commande de base est l'instruction input() qui attend que l'utilisateur saisisse une donnée à l'écran. Attention, en Python (version 3.1), tout ce qui est saisi sera automatiquement interprété comme une variable de type str (chaîne de caractères). Si nous avons à saisir un nombre (entier ou flottant, il faudra composer avec une autre instruction). On retiendra ceci :

2.1 Pour saisir une chaîne de caractères :c=input("Saisir votre texte ")

2.2 Pour saisir un entier :d=int(input("Saisir un entier "))

2.3 Pour saisir un nombre flottant :e=float(input("Saisir un nombre réel "))

Remarque : la commande input() permet de saisir un message de votre choix écrit entre guillemets.

3 Sorties de données : un résumé

Selon que l'on veuille simplement écrire la valeur d'une variable issue d'un calcul, du texte ou les deux, la syntaxe sera la suivante :

3.1 Pour écrire la valeur d'une variable saisie ou traitée auparavant :print(variable)

3.2 Pour écrire du texte :print("Texte") #Le texte est entre guillemets

3.3 Pour mixer les deux :print("Texte 1",variable 1,"Texte 2",variable 2, etc...)

4 Exercices

Exercice 1 : écrire un programme qui étant donné un triangle ABC rectangle en A, demande à l'utilisateur de saisir les côtés AB et AC et renvoie la valeur de l'hypoténuse BC.

Exercice 2 : écrire un programme qui étant donné un triangle équilatéral ABC renvoie la mesure de sa hauteur.

Page 34: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

34 Chapitre 2

PLUS SUR LA NOTION DE BOUCLE

1 La fonction range()

Dans le langage de programmation Python, on dispose de la fonction prédéfinie range() qui permet à l'utilisateur d'obtenir une suite d'entiers en progression arithmétique. Par défaut le pas est de 1.

>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #On commence à 0 >>> range(-3,5)[-3, -2, -1, 0, 1, 2, 3, 4] #On part de -3>>> range(-5, 20, 3) #La raison de la suite est 3 ici[-5, -2, 1, 4, 7, 10, 13, 16, 19]

2 La boucle Pour

En langage naturel En PythonPour i variant dans ensemble faire traitement des donnéesFin Pour

for i in collection: traitement des données

Remarque 1 : Les « : » sont indispensables.L'indentation du bloc d'instructions est indispensable.

Remarque 2 : on combine avantageusement les fonctions for et range pour des problèmes nécessitant la répétition d'un même bloc d'instructions.

Exemple 1 : Que fait le programme suivant ?>>> a=['Salut', 'Mars', 'Brrr', 'Bye']>>> for i in range(len(a)):. . . print i, a[i]. . .

Exemple 2 :a) Écrire un programme en Python utilisant une boucle for qui calcule et affiche le résultat de S = 123...100 .b) Même question pour S = 246…150

Page 35: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 35

Solution :

a) En langage naturel En PythonS ← 0Pour i variant de 1 à 100 faire S ← S + iFin Pour Afficher S

S=0for i in range(1,101): S = S+i

print(S)

b) En langage naturel En PythonS ← 0Pour i variant de 2 à 150 (de 2 en 2) faire S ← S + iFin Pour Afficher S

S=0for i in range(2,151,2): S=S+i

print(S)

Page 36: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

36 Chapitre 2

PLUS SUR LA NOTION DE FONCTION

1 Comment retourner une valeur ?

Lorsqu'une fonction est destinée à renvoyer une valeur, on utilise l'instruction return(argument)

Exercice 1 : Dans une fenêtre vierge, recopier le script suivant :

def puissance3(x)return(x**3)

Puis testez ce programme en l'enregistrant sous le nom : TP_fonctions_calcul1.py . Appuyez ensuite sur Ctrl+F5. Testez:puissance3(2)puissance3(10)

Exercice 2 : On souhaite dans cet exercice calculer le volume d'un parallélépipède rectangle. Écrire une fonction volume dépendant de trois paramètres qui renvoie le volume d'un tel parallélépipède. Testez-la ensuite sur quelques exemples. Vous enregistrerez ce programme sous le nom : TP_fonctions_calcul2.py

2 Variables locales et globales

Lorsque l'on définit une fonction, il est nécessaire de connaître la portée des variables.

Exemple : Définissons une fonction en mode interactif sous IDLE. >>> def fonction1():

x=3print("Dans cette fonction x est égal à ",x)

>>> fonction1()Dans cette fonction x est égal à 3>>> x #Message d'erreurTraceback (most recent call last): File "<pyshell#14>", line 1, in <module> xNameError: name 'x' is not defined

Page 37: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 37

Remarque : la variable x n'existe pas en dehors de la fonction où elle a été définie. On dit que x est une une variable locale.

Par contre, une valeur déclarée à la racine du module principal est visible partout.

Exemple : Tester les commandes suivantes sous IDLE>>> def fonction2():

print(x)

>>> x=4>>> fonction2()4>>> x=5>>> fonction2()5

On dit que x est une variable globale. Cette variable est visible dans tout le module.

††† ATTENTION aux types modifiables comme les listes †††

>>> liste=[1,2,3] #liste est une variable globale>>> def change_liste():

liste[1]=-15

>>> change_liste()>>> liste[1, -15, 3] #liste a été modifiée par la fonction change_liste()

De la même manière, en passant une liste en arguments, elle est tout autant modifiable !

>>> liste=[1,2,3]>>> def change_liste2(x): #x est passé en argument

x[1]=-20

>>> change_liste2(liste)>>> liste[1, -20, 3] #liste a été modifiée par la fonction change_liste2()

Page 38: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

38 Chapitre 2

3 La règle LGI

Nous avons vu au paragraphe précédent les notions de variables locales ou globales. Il existe aussi un troisième type de variables : les variables internes. Exemple : la fonction len() qui renvoie la taille d'une liste ou d'une chaîne de caractères et qui existe dès qu'on lance Python.

Python traite les variables par ordre de priorité :1. D'abord, il regarde si la variable considérée est une variable locale,2. Ensuite, si elle n'existe pas localement, il regarde si c'est une variable

globale,3. Enfin, il regarde si c'est une variable interne.

Exemple : >>> def fonction():

x=10 #x est une variable locale print('Dans la fonction x vaut ',x)

>>> x=20 #x est une variable globale>>> fonction()Dans la fonction x vaut 10>>>print('Dans le module principal x vaut ',x)Dans le module principal x vaut 20

Remarque : Notez bien ce qui s'est passé. x a pris en priorité la valeur qui lui était définie localement par rapport à celle qui lui était définie globalement.

Il est possible de forcer une variable à prendre sa valeur globale dans une fonction avec le mot clé : global

Exemple : >>> def double():

global xx=x*2

>>> x=3>>> double()>>> x6

Remarque : cette notion a son importance lorsque dans une fonction qui renvoie une ou plusieurs valeurs, on souhaite que ces dernières servent dans le programme principal. On doit donc les déclarer en tant que variables globales.

Page 39: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 39

Exemple : On souhaite subdiviser un intervalle [a ; b] en n sous-intervalles égaux. On accepte le chevauchement aux points de subdivision.

def subdivision(a,b,n): global subdi #La variable subdi est déclarée comme globale subdi=[] #On initialise subdi par la liste vide i,c=0,0 while i<=n: c=a+i*(b-a)/n #On construit les points de la subdivision subdi.append(c) i=i+1

return subdi

# programme principala=float(input("Entrer la borne inférieure de l\'intervalle "))b=float(input("Entrer la borne supérieure de l\'intervalle "))n=int(input(" Entrer le nombre d\'intervalles n de la subdivision "))subdivision(a,b,n)print (subdi)

#On compile le programme avec Ctrl+F5

Entrer la borne inférieure de l'intervalle 2Entrer la borne supérieure de l'intervalle 10Entrer le nombre d'intervalles n de la subdivision 20[2.0, 2.4, 2.8, 3.2, 3.6, 4.0, 4.4, 4.8, 5.2, 5.6, 6.0, 6.4, 6.8, 7.2, 7.6, 8.0, 8.4, 8.8, 9.2, 9.6, 10.0]

Page 40: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

40 Chapitre 2

LA RÉCURSIVITÉ

Définition : Un algorithme est dit récursif s'il s'appelle lui-même.

Reprenons l'exemple de la factorielle vu en classe. On rappelle que : n doit être un entier naturel. Si n=0, on a n! = 1 c'est-à-dire 0! = 1Si n est supérieur ou égal à 1, on a n!=1×2×3×...×n . n! se lit « factorielle n »

Écrire une fonction factorielle(n) qui renvoie la factorielle d'un entier naturel n choisi par l'utilisateur.

Quel lien existe-t-il entre n! et n−1! ?n! = nn−1!

Ce lien nous suggère l'algorithme récursif suivant, où la fonction factorielle va s'appeler elle-même.

def factorielle(n): if n = = 0: return 1 else: return n * factorielle(n-1) #La fonction factorielle est appelée à l'intérieur d'elle même.

def factorielle(n):

global fact

if n==0:

fact=1

else:

i,fact=1,1

while i<=n:

fact=fact*i

i=i+1

return fact

Page 41: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 41

Essayez de comprendre ce qui se passe. Schématisez-le pour n=2.

Exercice : on pose u0 = 2 et pour tout entier naturel n non nul, un = 3un−18 . Créer une fonction suite(n) en utilisant un

algorithme récursif capable de calculer n'importe quelle valeur un .

Test avec un tableur :

Calcul des 20 premiers termes

Formule dans B3 :

=3*B2+8

A B1 n u_n2 0 23 1 144 2 505 3 1586 4 4827 5 14548 6 43709 7 1311810 8 3936211 9 11809412 10 35429013 11 106287814 12 318864215 13 956593416 14 2869781017 15 8609343818 16 25828032219 17 77484097420 18 232452293021 19 697356879822 20 20920706402

Page 42: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

42 Chapitre 2

Utilisation du logiciel Python :

def suite(n): if n==0: return 2 else: return 3*suite(n-1)+8

# programme principal a=0while a<=20: print suite(a) a=a+1

On compile ensuite ce codevia Ctrl+F5

Résultat à l'écran

>>>

2145015848214544370131183936211809435429010628783188642956593428697810860934382582803227748409742324522930697356879820920706402>>>

Page 43: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 43

FICHES DE TP EN SECONDE GT

Motivation : Les présentes fiches couvrent de nombreux domaines du programme de seconde générale et technologique et peuvent être traitées pour la plupart d'entre elles après les quatre premières séances d'initiation à Python. Elles trouvent ainsi naturellement leur place dans une progression annuelle. Deux parmi elles (fonctions numériques et un exercice de statistiques) se servent des bibliothèques spécialisées de calcul numérique et scientifique : numpy et scipy, actuellement compatibles avec la version 2.6 de Python. Ceci entraîne quelques légères modifications de syntaxe qui sont détaillées dans les corrigés. Les versions compatibles avec Python 3.x ne sauraient tarder à être disponibles. Consultez régulièrement le site http://www.python.org L'intérêt d'utiliser de tels objets est de familiariser l'élève (ou l'étudiant professeur) à utiliser quelques outils clefs en main : tracé d'une ou plusieurs courbes dans une fenêtre graphique adaptée, tracé de boîtes à moustaches ou de diagramme en bâtons, etc. Ce qui ne dispense pas d'une réflexion préalable. Pour ceux qui souhaitent utiliser un kit complet regroupant de nombreux logiciels spécialisés à vocation scientifique, je vous conseille le téléchargement de Sage sur http://www.sagemath.org ; logiciel libre sous licence GPL et dont la communauté d'utilisateurs grandit de jour en jour. Enfin, un exemple de devoir donné en classe a été ajouté en fin de chapitre.

Page 44: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

44 Chapitre 2

TP GEOMETRIE N°1

Question 1 : Écrire une fonction milieu(x_A,x_B,y_A,y_B) qui étant donné les coordonnées x A et yA d'un point A, puis x B et y B d'un point B, renvoie les coordonnées du point I, milieu du segment [AB].

Question 2 : Écrire une fonction distance(x_A,x_B,y_A,y_B) qui étant donné les coordonnées x A et y A d'un point A, puis x B et y B d'un point B, renvoie la distance AB.

Sous Python la fonction racine carrée se note sqrt() : sqrt(x) est la racine carrée d'un réel positif x.

Question 3 : Soit C le cercle de diamètre [AB]. Dans un repère orthonormé on se donne A(-2 ;2) et B(3 ; -5). On cherche à savoir si un point M(x ; y) appartient ou non au cercle C.

1) Écrire un programme utilisant les deux fonctions précédentes qui réponde à la question.

2) Le tester avec M 1 ;14 puis M 2 ;−3652

Rappels mathématiques :

1. Si A x A ; y A et B x B ; y B alors I milieu de [AB] a pour

coordonnées I x Ax B

2;

y Ay B

2 .

2. Dans un repère orthonormé O ;i ;j , si A x A ; y A et B x B ; y B , alors AB = x B−x A

2 y B− y A2

Indication : Vous pouvez répondre à toutes les questions sans utiliser la notion de fonction. La question 3 sera alors plus longue à programmer.

Page 45: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 45

TP GEOMETRIE N°2

Question 1 : On considère un repère O ;i ;j . On se donne deux points A, B repérés par leurs coordonnées. Écrire une fonction vecteur(x_A,x_B,y_A,y_B) qui étant donné les coordonnées

x A et y A d'un point A, puis x B et y B d'un point B, renvoie celles du vecteur AB sous la forme d'une liste.

Question 2 : On se donne quatre points distincts du plan A, B, C et D repérés par leurs coordonnées. En utilisant la fonction créée à l'exercice1,

1) Écrire un programme qui étant donné les coordonnées des points A,B,C et D affiche si le quadrilatère ABCD est un parallélogramme.2) Écrire un programme qui étant donné les coordonnées des points A,B,C et D affiche si le quadrilatère ABCD est un trapèze.

Tester les programmes avec A(-1 ; 2), B (3 ; 4), C(1 ; 5) et D(9 ; 7). Vérifier le résultat obtenu par un calcul manuel.

Question 3 : On se donne trois points du plan A,B et C repérés par leurs coordonnées. Écrire un programme qui étant donné les coordonnées des points A,B,C détermine les coordonnées x D ; yD du point D tel que ABCD soit un parallélogramme.

Rappels mathématiques :

1. Si A x A ; y A et B x B ; y B alors AB x B−x A ; y B− y A . 2. ABCD est un parallélogramme si et seulement si AB=DC3. ABCD est un trapèze si et seulement si les vecteurs AB et DC

sont colinéaires.

Page 46: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

46 Chapitre 2

TP FONCTION

Comment créer un graphique avec Python ?

Il faut d'abord importer les modules matplotlib et numpy associés à votre distribution de Python et à votre système d'exploitation. Vous pouvez les trouver à l'adresse suivante : http://www.python.org. Ici nous utilisons la version 2.6

Exemple : on souhaite tracer la fonction f définie sur [−4; 5] par

f x = 16 x3−x 21 .

Le module matplotlib a tous les outils graphiques utiles pour les tracés de fonctions.Le module numpy possède quant à lui plein de fonctions prédéfinies.

Ouvrez une fenêtre via démarrer>tous les programmes>python 2.6>IDLE (Python Gui)Testez ensuite les commandes suivantes :>>> import matplotlib.pyplot as plt>>> import numpy as np>>> x=np.linspace(-4,5,100) # la courbe est tracée à partir de 100 points>>> plt.plot(x,x**3/6-x**2+1)[<matplotlib.lines.Line2D object at 0x03AD2D10>]>>> plt.show()

Vous devez obtenir le dessin suivant :

Page 47: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 47

Remarque : le curseur de la souris indique les coordonnées du point. Après avoir importé les modules matplotlib et numpy comme dans l'exemple précédent vous pourrez vous servir des commandes suivantes :

Commandes significationnp.linspace(a,b,N)

plt.plot(x,f(x))plt.show()plt.clf()plt.axis([xmin,xmax,ymin,ymax])plt.savefig()plt.grid(True ou False)

On crée une matrice ligne de N valeurs régulièrement espacées entre a et b.Tracer la fonction f de variable xAfficher le graphiqueEfface la fenêtre graphique Spécifie un rectangle de représentationSauvegarde le graphique en format PNGAffiche une grille en pointillés

Exercice : 1) Tracer dans une fenêtre graphique la courbe représentative C de la fonction f définie sur [−4; 8] par f x = x 2−3 x−10 . On affichera une grille. 2) Résoudre graphiquement l'équation f x = 0 .3) Sur le même graphique, tracer la droite d'équation y = 124)Trouver les antécédents de 12 par f.5) Résoudre graphiquement l'inéquation f x 12 . 6) Tracer la droite d'équation y = −107) Trouver les coordonnées du sommet S de C.

Indication : tracer d'abord tous les graphiques : C et les deux droites avant d'utiliser l'instruction plt.show()Remarquer aussi que x0 = 1 pour le tracé des droites horizontales.

Page 48: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

48 Chapitre 2

TP PROBAS-STATS N°1

Question 1 : Écrire un programme qui demande à un utilisateur de saisir N notes entre 0 et 20 (N choisi par l'utilisateur) sous la forme d'une liste et N nombres entre 1 et 3 (les coefficients de ces notes), puis qui renvoie la moyenne pondérée de ces N notes.

Question 2 : On considère un dé à 6 faces parfait et 3 urnes numérotées de 1 à 3. L'urne 1 contient 3 boules blanches, 4 boules noires et 3 boules vertes.L'urne 2 contient 2 boules blanches, 2 boules noires et 6 boules vertes.L'urne 3 contient 4 boules blanches, 4 boules noires et 2 boules vertes. Toutes ces boules sont indiscernables au toucher.On considère l'expérience aléatoire qui consiste à lancer d'abord le dé puis :

• Si le numéro est 1 ou 2, on tire une boule dans l'urne n°1• Si le numéro est 3, 4 ou 5 on tire une boule dans l'urne n°2• Sinon, on tire une boule dans l'urne n°3.

1) Modéliser cette situation à l'aide d'un arbre de probabilité. On pourra prendre comme événements : « U_1 » : obtenir 1 ou 2 ; « U_2 » : obtenir 3, 4 ou 5 ; « U_3 » : obtenir 6, puis « B » : tirer une boule blanche ; « N » : tirer une boule noire et « V » : tirer une boule verte. 2) Écrire un algorithme modélisant le lancer du dé, suivi du tirage d'une boule dans l'une des 3 urnes et le programmer sous Python. 3) Faire tourner le programme n fois (n choisi par l'utilisateur) et relever la fréquence d'apparition d'une boule blanche, d'une boule noire et d'une boule verte. On testera avec n=50, 100 et 1000. 4) Compléter le tableau donné en annexe avec n=500005) Calculer p(B), p(N) et p(V) et comparer avec les résultats trouvés à la question précédente.

Remarque : Pour simuler le tirage au sort d'un entier aléatoire entre 1 et N, on importe la fonction randint de la bibliothèque random via la commande from random import randint ; randint(a,b) renvoie un entier aléatoire entre a et b. L'instruction break sert à sortir d'une boucle.

Indication : On pourra numéroter les boules de chaque urne pour modéliser le tirage dans les urnes ; par exemple dans l'urne 1 on notera : 1,2,3 pour les boules blanches ; 4, 5, 6, 7 pour les boules noires et 8, 9, 10 pour les boules vertes.

Page 49: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 49

Fréquence Expérience n°

f B f N f V

1

2

3

4

5

Moyenne des fréquences

f B est la fréquence d'apparition d'une boule blanche, etc.

Page 50: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

50 Chapitre 2

TP PROBAS-STATS N°2

Question 1 : Une étude sur 90 arbres d'une plantation a permis de relever les diamètres de ces derniers (exprimé en cm). On a obtenu les résultats suivants :Diamètre des arbres

[0 ; 10[ [10 ; 20[ [20 ; 30[ [30 ; 40[ [40 ; 50[ [50 ; 60[ [60 ; 70[

Effectif 5 11 18 25 16 11 4

1) Tracer un histogramme représentant cette série statistique.2) Tracer le courbe des effectifs cumulés croissants.3) En déduire la valeur du premier quartile, de la médiane.

Question 2 : 1) Générer une liste aléatoire de 10000 entiers compris entre 0 et 2 via les commandes :

from random import *liste=[ 1 for n in range(3000)] + [2 for n in range(1500)] + [0 for n in range(5500)]shuffle(liste)

2) On prélève ensuite un échantillon de 100 entiers via la commande :echantillon=sample(liste,100)

3) On évalue la proportion de '1' dans cet échantillon.Écrire un script qui prélève un échantillon de 100 entiers compris entre 0 et 2 dans les proportions indiquées au début et renvoie la fréquence de '1' dans l'échantillon.

4) On recommence 50 fois les deux opérations précédentes.Modifier le script précédent pour construire une matrice ligne de 50 éléments, chacun d'entre eux correspondant à la proportion de '1' dans les échantillons prélevés. On pourra la noter prop_de_1.

Création d'une boite à moustaches5) En modifiant le script précédent, saisir les commandes suivantes :

import matplotlib.pyplot as pltplt.boxplot(prop_de_1,notch=0,sym='+',vert=1,whis=1.5,positions=None,width

Page 51: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 51

s=None,patch_artist=False)

Une multitude de boites à moustaches

6) Modifier le script précédent pour obtenir une série de 20 boites à moustaches comme créées précédemment.

Page 52: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

52 Chapitre 2

TP EQUATIONS DE DROITE

Question 1 : Écrire une fonction estverticale(x_A,y_A,x_B,y_B) qui étant donné deux points A x A ; y A et B x B ; yB détermine si la droite (AB) est verticale ou pas. La valeur renvoyée par cette fonction sera un booléen : True pour vertical et False dans le cas contraire.

Question 2 : En se servant de la fonction créée à la question précédente, écrire une fonction equation(x_A,y_A,x_B,y_B) qui :dans le cas où la droite (AB) ne soit pas verticale,

1) calcule le coefficient directeur m2) calcule l'ordonnée à l'origine p3) affiche le résultat sous la forme : "La droite (AB) a pour équation y = ",m,"x+",p

On stockera le couple (m,p) dans une liste. Si la droite est verticale, le programme donnera également son équation sous la forme x=constante .

Question 3 : Écrire un programme qui détermine si les droites (AB) et (CD) sont parallèles ou pas. Le cas où ces deux droites sont verticales sera considéré.

Rappels mathématiques : Une équation de droite s'écrit sous la forme x=c (droite verticale) ou sous la forme y=m x p (équation réduite d'une droite non verticale). Le réel m est appelé coefficient directeur et p ordonnée à l'origine. Deux droites parallèles (et non verticales) ont le même coefficient directeur. Réciproquement, si deux droites ont le même coefficient directeur, elles sont parallèles (au sens large).

Page 53: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

Chapitre 3 53

Seconde B 2009-2010 le 10/12/2009

Devoir de programmation

Exercice 1 (sur 5 points, à faire sans l'ordinateur !)Écrire dans la zone de texte adjacente le résultat affiché à l'écran par l'ordinateur pour chacun des programmes suivants :

N°1i,S=1,0while i<6:

S = S + ii = i + 1

N°2from turtle import *forward(50)left(90)forward(30)goto(0,0)

N°3i = 1while i<5:if i%2 = = 0:

print 3*ielse:

print i

N°4N = 4a = 7if N<a:

print « Eh »else:

print « Oh »

Page 54: CHAPITRE 2 : LE LANGAGE PYTHON - Les-Mathematiques.net (séance 5) 5. Travail sur la notion de fonction informatique (séance 6) 6. Compléments utiles en pratique : les annexes. 7.

54 Chapitre 2

N°5a,b=3,4a = bb = aprint a,b

Exercice 2 (sur 5 points)Écrire un script utilisant la fonction while permettant de calculer et d'afficher

S = 1222...102

Exercice 3 (sur 10 points)A l'aide du mode turtle, écrire un script permettant d'obtenir la figure ci-dessous. Cette figure devra être construite en une seule fois. On construira d'abord les côtés de l'hexagone (de longueur 50) puis les trois diagonales. Indication : la fonction while sera utilisée 2 fois.