7
ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la bibliothèque lycee qui est magique. ECRIRE UN PROGRAMME AVEC PYZO Pyzo est multi-plateforme et permet d’éxécuter juste une sélection du script (Alt+Entrée) ECRIRE UN PROGRAMME EN LIGNE Le site repl.it intéressant dans le cadre d’un travail collaboratif Vidéo explicative ici : https://youtu.be/UpfjAvcmIdQ 1. On écrit son programme ici 3. Le résultat apparait ici 2. On exécute le programme ici ou en tapant : Ctrl+E ou en tapant : Ctrl+F9

ECRIRE UN PROGRAMME AVEC EDUPYTHONdisciplines.ac-montpellier.fr/mathematiques/sites/...ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ECRIRE UN PROGRAMME AVEC EDUPYTHONdisciplines.ac-montpellier.fr/mathematiques/sites/...ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la

ECRIRE UN PROGRAMME AVEC EDUPYTHON

Edupython ne fonctionne que sous Windows mais contient la bibliothèque lycee qui est magique.

ECRIRE UN PROGRAMME AVEC PYZO

Pyzo est multi-plateforme et permet d’éxécuter juste une sélection du script (Alt+Entrée)

ECRIRE UN PROGRAMME EN LIGNE

Le site repl.it intéressant dans le cadre d’un travail collaboratif Vidéo explicative ici : https://youtu.be/UpfjAvcmIdQ

1. On écrit son programme ici

3. Le résultat apparait ici

2. On exécute le programme ici ou en tapant : Ctrl+E

ou en tapant : Ctrl+F9

Page 2: ECRIRE UN PROGRAMME AVEC EDUPYTHONdisciplines.ac-montpellier.fr/mathematiques/sites/...ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la

POUR (RE)DEMARRER

Exercice 1 – Dans la console Python

1. Calculer 1818 puis 18−18 puis demander (pour se faire peur) 1818 × 18−18. 2. Quel est le reste et le quotient de 123456788 par 17 ? 3. Transformer 55555 secondes en heures, minutes et secondes. 4. Deviner ce qu’affiche le scripte suivant :

x = 10

y = 'x'

print(3*y)

Exercice 2 – Des tests

On initialise une variable a à la valeur 10 avec l’instruction a=10. Vous devez deviner avant exécution ce qu’affichent les trois scripts suivants :

DES BOUCLES ET DES FONCTIONS

Les fonctions permettent de décomposer un programme en sous-programmes plus simples que l'on peut réutiliser plusieurs fois.

Exercice 3 – Premier mystère

1. Deviner ce que renvoie la fonction mystere1. 2. Taper ce script et exécuter-le sur différentes valeurs

pour confirmer ou infirmer votre réponse précédente. 3. Modifier la fonction mystere1 pour qu’elle renvoie les

coordonnées du point I, symétrique de A par rapport à B.

Exercice 4 – Fonctions vs procédures

Arnaud a besoin d’utiliser la fonction 𝒇 définir sur ℝ par 𝒇(𝒙) = 𝟓𝒙 − 𝟑. Voici son script :

def f(x):

print(5*x-3)

Calculer avec son script 𝒇(𝟓), 𝒇(𝟏𝟎) puis 𝒇(𝒇(𝟏𝟎)). Commenter puis corriger.

Exercice 5 – Return et après ?

Voici deux fonctions nommées version1 et version2. def version1(x):

print(x)

return(2*x)

print(3*x)

print(4*x)

def version2(x):

print(x)

print(2*x)

return(3*x)

print(4*x)

1. On execute version1(10). Quelle(s) valleur(s) est (sont) affichées? Quelle valeur est renvoyée ? 2. On execute version2(10). Quelle(s) valleur(s) est (sont) affichées? Quelle valeur est renvoyée ?

Page 3: ECRIRE UN PROGRAMME AVEC EDUPYTHONdisciplines.ac-montpellier.fr/mathematiques/sites/...ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la

Exercice 6 – Sans la machine : Tracer un algorithme

Donner la dernière valeur affichée par chacun de ces scripts. On pourra « tracer » les scripts en complétant un tableau du type :

Exercice 7 – Sans la machine : combien de ‘truc’ et de ‘bidule’ ?

Pour les trois scripts suivants, dire ce qui est affiché et combien de fois.

Exercice 8 – Capacité d’un lac

Lors de la construction d’un barrage, on a créé un lac artificiel contenant initialement 80 millions de m3

d’eau.

Chaque année, on estime qu’on prélève 10% du volume du lac pour produire de l’électricité. Ce lac est par

ailleurs alimenté par une rivière qui lui apporte 6 millions de m3 d’eau par an.

1. Écrire une fonction lac(n) qui affiche, année après année, la capacité du lac et renvoie sa capacité à

l’année n.

2. On sait qu’il faudra vidanger ce lac artificiel à la fin de la première année où sa capacité dépassera

les 599 millions de m3 d’eau. Sans modifier la fonction lac, trouver manuellement puis

automatiquement cette année.

Exercice 9 – Une différence entre carrés

La somme des carrés des 10 premiers entiers naturels est : 1² + 2² + ... + 10² = 385 Le carré de la somme des 10 premiers entiers naturels est : (1 + 2 + ... + 10)² = 552 = 3025 Ainsi, la différence entre la somme des carrés des 10 premiers entiers naturels et le carré de leur somme est : 3025 – 385 = 2640. 1. Trouver la différence entre la somme des carrés des 100 premiers nombres naturels et le carré de

leur somme. 2. Ecrire une fonction difference(n) qui généralise ce résultat au n premiers entiers en renvoyant

la différence cherchée.

Page 4: ECRIRE UN PROGRAMME AVEC EDUPYTHONdisciplines.ac-montpellier.fr/mathematiques/sites/...ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la

Exercice 10 - D'après le concours Kangourou junior 2002

1. On choisit deux nombres 𝑎 et 𝑏 (𝑎 < 𝑏) dans l'ensemble des entiers 1, 2, ..., 26 tels que leur produit soit égal à la somme des 24 autres valeurs restantes. Que peuvent valoir ces nombres ?

2. On va tenter ici de généraliser le problème et de se poser une autre question. « On choisit deux nombres 𝑎 et 𝑏 (𝑎 ≤ 𝑏) dans l’ensemble des entiers 1, 2, ... , n (𝑛 > 2) tels que leur produit soit égal à la somme des entiers de 1 à n à laquelle on a soustrait 𝑎 et 𝑏. »

Remarquons par exemple que si 𝑛 = 5, en prenant 𝑎 = 𝑏 = 3, on a : 1 + 2 + 3 + 4 + 5 − 𝑎 − 𝑏 = 15 − 6 = 9 et 𝑎 × 𝑏 = 3 × 3 = 9

Trouver toutes les valeurs de 𝑛 (𝑛 ≤ 3500) pour lesquelles il existe deux nombres 𝑎 et 𝑏 égaux vérifiant la propriété précédente. On affichera la valeur de 𝑛 et celle du couple trouvé.

IMPORTATION DE MODULES

Un module est une sorte de bibliothèque de fonctions qui, une fois importée dans votre programme, donne accès à des nouvelles fonctions. Deux modules seront particulièrement utiles :

Le module math qui permet d’avoir accès aux fonctions mathématiques comme le cosinus (cos),

le sinus (sin), la racine carrée (sqrt), le nombre 𝜋 (pi), la partie entière (floor)

Pour importer ce module, on pourra écrire en début de programme : from math import *

Le module random qui va permettre d’utiliser des fonctions générant des nombres aléatoires

randint(n,p) génére un nombre entier aléatoire dans ⟦𝑛, 𝑝⟧ ;

randrange(n,p,q) génére un nombre entier aléatoire dans ⟦𝑛, 𝑝⟦ avec un pas de 𝑞 ;

random() génére un flottant dans [0,1[. Pour importer ce module, on pourra écrire en début de programme : from random import * Remarque : il existe bien d'autres modules. Matplotlib (tracé de fonctions), PIL (traitement d'image), Tkinter (interfaces graphiques), Numpy (Matrices), …

Exercice 11 – Le retour

Reprendre le code de l'exercice 4 et le modifier (encore) pour qu'il renvoie la longueur du segment [AB].

Exercice 12 – Une puce

1. Écrire une fonction saut()qui choisit aléatoirement un nombre 𝑛 entre 0 et 1 et qui renvoie -1 si le nombre est strictement inférieur à 0,5 et 1 sinon.

2. Une puce se déplace en sautant sur un axe gradué. Elle part de l'origine et se déplace aléatoirement et de manière équiprobable d’une unité vers la droite ou vers la gauche. Ecrire une fonction position(n) qui renvoie la position dela puce après n sauts.

Page 5: ECRIRE UN PROGRAMME AVEC EDUPYTHONdisciplines.ac-montpellier.fr/mathematiques/sites/...ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la

Exercice 13 : A l’aide du module random

Parmi les propositions suivantes, lesquelles permettent de simuler le lancer d'un dé cubique équilibré à 6 faces numérotées de 1 à 6.

a. de = 6 * floor(random()) b. de = floor(6 * random()) c. de = floor(6 * random()) + 1 d. de = floor(6 * random() + 1) e. de = round(5 * random()) + 1 f. de = floor(10 * random()) % 6 + 1 g. de = floor(12 * random()) % 6 + 1 h. de = floor(6 * random() ** 2) + 1 i. de = 2 * floor(3 * random()) + 1 j. de = randint(0,5) k. de = randint(1,6) l. de = floor(3 * random()) + floor (4 * random()) + 1

ERREURS CLASSIQUES

Il est important de se familiariser avec les erreurs les plus classiques : Erreur de syntaxe (= au lieu de ==, symbole : oublié, parenthèse ou indentation oubliée,...) Erreur liée à l'oubli d'import de module Erreur liée au typage des variables (variable texte, entier, flottant, ...)

Exercice 14 – Des erreurs

Corriger les deux programmes erreur1.py, erreur2.py et erreur3.py

ENCORE DES FONCTIONS

Exercice 15 – Loi binomiale

1. Écrire une fonction factorielle(n) qui prend en paramètre un nombre 𝑛 qui renvoie la valeur de 𝑛!

2. Écrire une fonction KparmiN(k,n) qui prend en paramètres deux nombres 𝑛 et 𝑘 et qui renvoie

la valeur de (𝑛𝑘

) =𝑛 !

𝑘 !(𝑛−𝑘) !

3. Écrire une fonction binomiale(n,p,k) qui prend en paramètres trois nombres 𝑛, 𝑝, 𝑘 et qui renvoie la valeur de 𝑃(𝑋 = 𝑘) quand 𝑋 suit une loi binomiale de paramètres 𝑛 et 𝑝.

Rappel : 𝑥𝑘 se code x**k

Page 6: ECRIRE UN PROGRAMME AVEC EDUPYTHONdisciplines.ac-montpellier.fr/mathematiques/sites/...ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la

SCENARISER DES SITUATIONS D’APPRENTISSAGE

Problème 1 : inspiré de extrait de DNB – Amérique du Nord 2016

On étudie la fréquentation d'un télésiège, ouvert de 8h a 17 h. On dispose des informations suivantes :

𝑡 est l’heure à laquelle on mesure. Le nombre de skieurs qui arrivent par minute au télésiège est alors à tout moment à peu près donné par la fonction définie par :

{𝑓(𝑡) = 0,1𝑡4 − 5𝑡3 + 89,7𝑡2 − 680𝑡 + 1849,6 si 𝑡 ∈ [8; 17]

𝑓(𝑡) = 0 sinon.

Vitesse : 5,5 m/s Distance à parcourir : 2 453 m. 29 pylônes 146 sièges 4 personnes par siège.

A quelle heure y-aura-t-il un temps d'attente maximal ?

Problème 2 : Les anniversaires

Dans une classe de 36 élèves, quelle est la probabilité qu’il y ait au moins deux élèves qui ont leur anniversaire le même jour ? Quelle doit être, au minimum, la taille de la classe, si l’on veut que cette probabilité soit supérieure à 95 % ?

Problème 3 : d'après extrait de DNB – Centres étrangers 2016

Une boutique fabriquant des macarons souhaite créer un programme permettant d'éditer rapidement une facture a un client qui souhaite faire une commande.

On dispose des informations suivantes :

Tarifs de la boutique

Boite de 6 petits macarons 9,00 euros la boite À partir de la sixième boîte identique achetée, profitez de 20% de réduction sur toutes les boîtes suivantes de cette référence.

Boite de 12 petits macarons 16,00 euros la boite

Boite de 6 gros macarons 13,50 euros la boite

Boite de 12 gros macarons 25,00 euros la boite

Tarifs de livraison

Livraison en semaine Livraison le weekend

Zone A 12,50 euros 17,50 euros

Zone B 20 euros 25 euros

Zone C 25 euros 30 euros

Problème 4 : Etudier la fonction exponentielle à l’aide de la méthode d’Euler

On définit la fonction exponentielle comme solution de l’équation différentielle : {𝑦′ = 𝑦

𝑦(𝑡0) = 𝑦0

1. Créer une fonction Euler(t0,y0,h,n) qui renvoie la liste T des valeurs successives de

𝑡0 + 𝑘 ∗ ℎ, et la liste Y des valeurs approchées de 𝑒𝑡0+𝑘∗ℎ par la méthode d’Euler avec un pas ℎ, pour 𝑘 allant de 0 à 𝑛.

2. A l’aide du module Matplotlib , tracer alors la courbe de l’exponentielle, ainsi que de la solution pour de 𝑡0 = 0 et 𝑦0 = 1 et pour 𝑛 = 10, 𝑛 = 100 et 𝑛 = 1000. Une remarque à faire ?

Page 7: ECRIRE UN PROGRAMME AVEC EDUPYTHONdisciplines.ac-montpellier.fr/mathematiques/sites/...ECRIRE UN PROGRAMME AVEC EDUPYTHON Edupython ne fonctionne que sous Windows mais contient la

Problème 5 : Simuler une expérience aléatoire (extrait du document d’accompagnement Probas-Stats LP) Une petite ville des États-Unis a connu 9 cas de leucémie chez de jeunes garçons en l’espace de 10 années. Doit-on, comme l’ont alors affirmé les autorités, en accuser le hasard ?

Woburn est une petite ville industrielle du Massachusetts, au Nord-Est des États-Unis. Du milieu à la fin des années 1970, la communauté locale s’émeut d’un grand nombre de leucémies infantiles survenant en particulier chez les garçons dans certains quartiers de la ville. Les familles se lancent alors dans l’exploration des causes et constatent la présence de décharges et de friches industrielles ainsi que l’existence de polluants. Dans un premier temps, les experts gouvernementaux concluent qu’il n’y a rien d’étrange. Mais les familles s’obstinent et saisissent leurs propres experts. Une étude statistique montre qu’il se passe sans doute quelque chose « d’étrange ».

Le tableau suivant résume les données statistiques concernant les garçons de moins de 15 ans, pour la période 1969-1979 (Source : Massachusetts Department of Public Health).

Problème 6 : Exercice de Bac Maths Bac S (Asie 2017)

On souhaite déterminer à l’aide de la méthode de Monte-Carlo une estimation de l’aire sous la courbe

représentative de la fonction 𝑔 définie sur [0 ; 1] par ∶ 𝑔(𝑥) =1

1+𝑥².

Méthode de Monte-Carlo On initialise un compteur c à 0, on fixe un entier naturel n et on répète n fois le processus suivant : On choisit au hasard un point 𝑀(𝑥; 𝑦) en tirant de façon indépendante ses coordonnées 𝑥 et 𝑦 au

hasard selon la loi uniforme sur [0 ; 1].

Si 𝑀(𝑥; 𝑦) est au-dessous de la courbe représentative de 𝑔, on incrémente le compteur 𝑐 de 1.

On admet que 𝑓 =𝑐

𝑛 est une valeur approchée de l’aire sous la courbe représentative de 𝑔

sur [0 ; 1].

Population des garçons de moins de 15 ans à Woburn

selon le recensement de 1970 : n

Nombre de cas de leucémie infantile observés chez les

garçons à Woburn entre 1969 et 1979

Fréquence des leucémies aux Etats-Unis (garçons) : p

5 969 9 0,000 52