0. Avant -propos
Cette page sert à acquérir ou consolider les bases de programmation du programme deseconde.
On cherche ici à affermir un socle sur lequel vous pourrez réussir en Python au lycée.
Cette page contient :
-
De vidéos qui permettent de reprendre chez vous des points sur lesquels vous ne vous sentez pas très à l'aise ou pour vous
remémorer le contenu.
-
Des rappels écrits des notions avec des exemples,
-
Des exercices fondamentaux, ceux où apparaissent la balise "fondamental", à savoir faire pour aborder sereinement la première NSI,
-
Des exercices de renforcement, ceux en fin de page où apparaissent la balise "renforcement" et accessible directement par un lien,
pour s'assurer que les exercices fondamentaux sont maîtrisés,
-
Quelques exercices plus poussés, ceux étiquetés par la balise "confirmé".
C'est ce niveau d'exercices qu'il faut essayer d'atteindre en fin de seconde.
En parallèle vous devez vous inscrire sur le site "france-ioi". Ce site propose un entraînement au langage python( et d'autres) sous la forme d'un parcours.
Demandez à votre professeur la démarche pour rejoindre votre groupe.
Lien vers france-IOI
Outils
Pour l'ensemble de ce travail, utilisez le logiciel Edupython.
Dans le cas où Edupython ne marcherait pas sur vos machines, vous pouvez réaliser l'ensemble des exercices ici :
Affectation en Python
En programmation, nous avons besoin de stocker des éléments , de les mettre en mémoire. Pour cela , on procède à l'affectation d'une variable par une donnée.
En Python, l' affectation se réalise avec l'opérateur =
le script :
pdv = 15
met en mémoire l'entier 5 dans la variable pdv
name = "Galadriel"
met en mémoire la chaîne de caractères "Galadriel" dans la variable name
Que contient la variable pdv à la fin de ce script :
pdv= 15
attack = 12
armor = 10
pdv = pdv - attack + armor.
Un exercice de renforcement, reprenant les mêmes compétences est dispoible directement en cliquant ci-dessous :
exercice de renforcement
Un exercice plus compliqué utilisant l'affectation :
Hervé Trézène aimerait avoir un algorithme permettant de permuter les nombres stockés dans deux variables $a$ et $b$.
Pour simplifier, on suppose que la variable $a$ stocke le nombre 8,
tandis que la variable $b$ stocke le nombre -3.
-
Yves Aladaire propose l'algorithme suivant :
# ceci est un commentaire (il commence par le symbole dièse #) :
# il n'est pas pris en compte par l'interpréteur, il n'est lu que par le programmeur et l'utilisateur : vous.
# mémorisation des valeurs initiales :
a = 8
b = -3
# programme proposé par Yves pour la permutation du contenu :
a = b
b = a
-
Compléter sur une feuille la table d'exécution commencée ci-dessous, sans prendre en compte les lignes de commentaires :
ligne numéro
|
valeur stockée dans la variable $a$
|
valeur stockée dans la variable $b$ |
4 |
8 |
rien |
... |
... |
... |
... |
... |
... |
... |
... |
... |
-
Est-ce le programme proposé par Yves permet d'échanger les valeurs stockées dans les varaibles $a$ et de $b$ ?
-
Amin Bhar propose l'algorithme suivant :
# mémorisation des valeurs initiales :
a = 8
b = -3
# programme proposé par Roger pour la permutation du contenu :
b = a
a = b
-
Compléter sur une feuille la table d'exécution commencée ci-dessous, sans prendre en compte les lignes de commentaires :
ligne numéro
|
valeur stockée dans la variable $a$
|
valeur stockée dans la variable $b$ |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
-
Est-ce le programme proposé par Amine permet d'échanger les valeurs stockées dans les variables $a$ et de $b$ ?
-
Proposer un programme qui permet d'échanger les valeurs stockées dans les variables $a$ et de $b$ ?
Comme tel un Thésée vous êtes le héros de Trézène,
Hervé veut vous remercier pour votre aide : il sert un verre d'eau et un verre de jus de fruit, un pour lui et un pour vous,...
mais il se trompe de verre ! Comment permuter le contenu de ces deux verres sans changer de verre ?
Affichage en python
Une chaîne de caractères correspond à un texte pouvant contenir différents symboles.
En Python, une chaîne de caractères est le contenu délimité par ""
.
Pour afficher une chaîne de caractères en Python on utilise la fonction print()
Testez ces différents scripts :
-
print("Vivement les vacances !")
-
prenom = "Bob"
print("Mon prénom est :", prenom)
-
prenom = "Bob"
print("Mon prénom est :" + prenom)
Réaliser un script qui contient trois variables : prenom
, nom
et
age
et qui doit afficher :
"Bonjour je m'appelle Alphonse Dansletas, j'ai 358 ans. "
Dans le cas où vous vous appelleriez Alphonse Dansletas et que vous seriez âgé de 358 ans.
exercice de renforcement
Dialogue avec l'utilisateur
La fonction input
permet d'ouvrir une boite de dialogue et de récupérer une information saisie par l'utilisateur.
L'information récupérée grâce à un input
est une chaîne de caractères.
prenom=input("quel est ton prénom?")
print(prenom)
Ecrire un script en Python qui demande à l'utilisateur, son prénom, son nom et son âge et qui réalise un affichage du type : "Je me nomme Bob Bobby. J'ai 12 ans.".
exercice de renforcement
Comme l'information récupérée grâce à un input
est une chaîne de caractères, il va falloir changer le type de
la variable pour permettre d'effectuer des calculs avec.
Un boulanger désire un programme qui demande à l'utilisateur le nombre de baguettes qu'il désire,
qui calcule le prix total (sachant qu'une baguette coûte 1.10 €)
et qui affiche le prix que l'utilisateur doit payer.
-
Testez le script suivant :
nombre=input("Combien de baguettes désirez-vous ?")
prix = nombre * 1.1
print("Vous avez à payer",prix,"euros.")
-
Quel message d'erreur obtenez-vous ?
-
Testez le script suivant :
nombre=int(input("Combien de baguettes désirez-vous ?"))
prix = nombre * 1.1
print("Vous avez à payer",prix,"euros.")
-
Quelle est la différence avec le code précédent de cet exemple ?
L'instruction int
permet de changer certaines chaînes de caractères en un nombre entier.
L'instruction float
permet de changer certaines chaînes de caractères en un flottant, c'est-à-dire un
"nombre à virgule".
Vous êtes chargé.e de mettre en place une borne automatique pour régler les droits d’entrée à un parc d’attraction.
Chaque adulte doit payer 21€ pour rentrer et chaque enfant doit payer 13€.
Pour cette borne, vous devez programmer sur Python un algorithme qui renvoie le prix à payer en fonction du nombre d’adultes et d’enfants du groupe.
Sachant que la variable $A$ stocke le nombre d’adultes, $E$ le nombre d’enfants et $P$ le prix à payer,
proposez un tel algorithme qui demande à l'utilisateur le nombre de personnes dans chacune des catégories et qui affiche le prix total à payer.
exercice de renforcement
L'Indice de Masse Corporelle (IMC) est un indicateur chiffré utilisé en médecine.
L'IMC d'une personne est donné par la formule $ IMC= \frac{masse}{taille^2}$ où la masse est en kilos et la taille en mètres.
Proposez un algorithme qui demande à l'utilisateur sa taille et sa masse puis qui affiche l'IMC de la personne.
Pensez à écrire un texte clair à destination de l'utilisateur pour qu'il sache quoi saisir.
La surface $S$ en mètre carrés de la peau d'un adulte est donnée approximativement par la formule
$ \dfrac{\sqrt{L\times M}}{6}$ où $L$ est la taille de l'individu en mètres et $M$ sa masse en kilogramme.
Vous devez créer ci-dessous un programme en Python.
Votre programme doit :
-
Importer la fonction sqrt
de la bibliothèque math
en commençant votre code par la ligne suivante :
from math import sqrt
Vous pourrez ainsi utiliser la fonction racine carrée en saisissant sqrt() et en insérant dans les parenthèses le nombre
dont vous voulez calculer la racine carrée.
a=sqrt(4)
conduit au stockage du nombre 2 dans la variable
a
.
-
Demander à l'utilisateur un entier qui représente la taille en centimètres d'un adulte.
-
Demander à l'utilisateur un réel qui représente la masse en kilogrammes du même adulte.
-
Calculer ensuite la surface corporelle de cet adulte.
-
Afficher enfin cette surface avec une phrase explicative.
Exemple de trace d'exécution apparaissant dans la partie console :
Quelle est la taille en centimètres d'un adulte ? 180
Quelle est la masse en kilogrammes du même adulte ? 81.5
La surface corporelle d'un individu de 180 centimètres et de 81.5 kg est d'environ 2.0187 m^2.
Instruction conditionnelle en Python
Les tests en Python :
Chaque utilisation de ces tests renvoie une variable qui ne peut prendre que deux valeurs booléenne : True
ou False
;
On parle alors de booléen.
Attention à ne pas confondre :
exécutez le code suivant pour visualiser la différence entre affectation et test d'égalité :
La structure conditionnelle "if"
En Python, voici la structure :
if condition :
instruction(s) à effectuer dans la cas où la condition est remplie
else :
instruction(s) à effectuer dans la cas contraire
Le bloc else
n'est pas obligatoire
Vous remarquerez le symbole :
très important en Python qui marque le début d'un bloc.
C'est l'indentation (=décalage) qui délimite le bloc d'instructions.
a=float(input("Entrer un nombre réel : "))
if a>=0 :
print("Vous avez entré un nombre positif ou nul",a)
else :
print("Vous avez entré un nombre négatif",a)
Qu'affiche le programme de l'exemple dans chacun des cas suivants :
-
Avec a=8
?
-
Avec a=-6
?
-
Avec a=0
?
-
Avec a="positif"
?
On considère la facturation effectuée par un magasin d'habillement.
Si la facture dépasse 80€ alors le magasin offre 10% de réduction sur celle-ci ; dans le cas contraire, le magasin n'offre qu'une réduction de 5%.
-
Copier le script ci-dessous en langage Python dans l'éditeur d'Edupython (la partie surement en haut à droite) puis remplacer les deux lignes en pointillés afin que le programme demande
à l'utilisateur le prix initialement à payer puis affiche le prix à réellement payer par le client :
prix = float(input("Prix initialement à payer : "))
...........
prix = prix * (1-10/100)
...........
prix = prix * (1-5/100)
print("Grâce à la réduction, vous n'avez plus qu'à payer",prix,"euros !")
-
Tester le code avec, entre autre, un prix initial de :
-
30€ : vous devez voir s'afficher un prix final 28.5 euros,
-
156.50€ : vous devez voir s'afficher un prix final 140.85 euros.
Écrire un programme qui :
exercice de renforcement
Vous pouvez tester directement le programme précédent ci-dessous. En appuyant sur la touche Next>, vous visualiserez le fait que l'interpréteur du code
ne traite que l'instruction du if
ou celle du else
suivant si la condition est remplie ou non.
Il est possible d'imbriquer plusieurs instructions conditionnelles ensemble.
On peut détailler l'exemple précédent ainsi en trois cas distinctions par imbrications de deux instructions conditionnelles :
a=float(input("Entrer un nombre réel : "))
if a>0:
print("Vous avez entré un nombre strictement positif",a)
else: # ici, on est dans le cas où a<= 0
if a==0:
print("Vous avez entré un nombre nul",a)
else: # ici, on est dans le cas où a<=0 et a!=0 donc où a<0
print("Vous avez entré un nombre négatif",a)
Il est possible de simplifier l'écriture de ces imbrication en utilisant le mot clé elif
qui est la contraction de else if
.
La structure elif
:
if condition1 :
instruction(s)
elif condition2 :
instruction(s)
elif condition3 :
instruction(s)
else :
instruction(s)
On peut réécrire l'imbrication de l'exemple précédent ainsi :
a=float(input("Entrer un nombre : "))
if a>0 :
print("Vous avez entré un nombre strictement positif",a)
elif a==0 :
print("Vous avez entré un nombre nul",a)
else :
print("Vous avez entré un nombre strictement négatif",a)
Un cinéma pratique trois types de tarifs pour deux personnes.
-
si les deux personnes sont mineures, elles payent 7€ chacune,
-
si l'une seulement est mineure, elles payent un tarif de groupe de 15€,
-
si les deux personnes sont majeures, elles payent 18 € en tout.
Écrire un programme qui :
exercice de renforcement
Dans une école de rugby, il y a quatre groupes :
-
le groupe des U8 pour les joueurs entre 8 ans inclus et 10 ans exclus ;
-
le groupe des U10 pour les joueurs entre 10 ans inclus et 12 ans exclus ;
-
le groupe des U12 pour les joueurs entre 12 ans inclus et 14 ans exclus ;
-
le groupe des U14 pour les joueurs entre 14 ans inclus et 16 ans exclus.
Le dirigeant veut qu'un enfant, accompagné de ses parents, allant sur le site Internet de l'école puisse
connaître le groupe qui lui correspondrait une fois son âge saisi.
Ne sachant comment structurer le programme, il fait appel à vous afin que vous lui écriviez un programme, écrit en langage Python,
qui demande l'âge de l'enfant et renvoie la catégorie une fois la saisie de l'âge effectuée.
Fonction en Python
Une fonction en informatique est un peu comme une fonction en maths. Elle prend un ensemble d'argument et renvoie quelque chose.
Définir une fonction en Python
La syntaxe pour définir une fonction en Python est celle ci :
def nomDeLaFonction(argument1,argument2...):
instruction 1
instruction 2
.
.
.
return retourDeLaFonction
-
Prenons la fonction $f:x\longmapsto x^2$.
si vous voulez implémenter cette fonction en Python, il suffira d'écrire :
def f(x):
return x**2
Pour calculer l'image de 1 , en mathématiques vous feriez $f(1)$ , en Python c'est pareil !
Testez :
f(1)
-
Testez aussi le code suivant :
def somme(a,b):
return a+b
Écrire une fonction multiplication(a,b)
qui renvoie la multiplication de a par b.
exercice de renforcement
Dans une fonction on peut faire appelle à d'autre fonction.
Tester cette fonction :
def f(a,b):
a=somme(a,b)
b=multiplication(a,b)
return somme(a,b)
Donner l'expression de $f$ en fonction de $a$ et de $b$.
exercice de renforcement
-
Proposer une fonction, nommée mini2
qui prend comme arguments deux nombres entiers a
et b
et qui renvoie
le minimum de ces deux nombres.
-
Proposer une fonction, nommée mini4
, qui :
-
prend comme arguments quatre nombres entiers
a
, b
, c
et d
,
-
fait appel plusieurs fois à la fonction mini2
pour finalement trouver le minimum des quatre nombres
-
renvoie le minimum trouvé.
exercice de renforcement
Écrire une fonction signe_prod(a,b)
qui reçoit deux entiers a
et b
relatifs et
qui renvoie True
si le produit de a
par b
est strictement positif et
False
sinon. Attention : on ne doit pas calculer le produit des deux nombres !
Boucle itérative : pour/for
Avec l'instruction range
La structure "for" avec range
Voici la structure en Python d'une boucle répétitive for
avec range
for i in range(n):
instruction 1
instruction 2
...
Dans cette boucle $i$ prendra les valeurs de 0 à $n-1$.
Toutes les instructions dans la boucle seront appliquées pour chaque valeur de $i$.
Dans cette structure, on connait à l'avance le nombre de répétitions. Dans notre cas, il est égal à $n$.
Cette boucle fait le calcul : 0+1+2+3+...+10
s=0
for i in range(11):
s=s+i
print(s)
Vérifier que le résultat affiché correspond bien à la somme 0+1+2+3+...+10.
Vous pouvez visualiser les différentes étapes de calcul mises en oeuvre par cet algorithme ci-dessous :
Plus généralement, lors de l'instruction for i in range(m,n)
, où m
et n
sont deux entiers tels que
n>m
, i
prend toutes les valeurs entières entre m
et n-1
.
Modifier le code de l'exemmple précédent de sorte d'afficher la somme $10+11+12+13+...+99+100$.
Écrire une fonction somme(n)
où $n$ est un entier qui renvoie la valeur de la somme $1+2+3+...+n$.
exercice de renforcement
Un village en zone périurbaine compte aujourd'hui 2300 habitants. Le village voit sa population augmenter chaque année de 120 habitants.
-
Proposez une fonction nommée population
qui prend comme argument un entier $N$ et qui renvoie la population de
ce village au bout de $N$ années écoulées.
-
Testez votre fonction avec quelques valeurs.
Correction de l'exercice en vidéo accessible par ce lien.
exercice de renforcement
Votre ami Crésus dispose d'une somme de 1000€ qu'il décide de placer en banque.
La banque lui propose pour un placement d’un montant de 1000 euro fait le $\text{1}^\text{er}$ janvier 2022,
un taux d’intérêt composé annuel de 2 %. Cela signifie qu’à la fin de chaque année la somme en banque augmente de 2%.
Augmenter de 2% revient à multiplier par $\displaystyle{\left(1+\frac{2}{100}\right)}$.
-
Quelle somme d'argent disposera Crésus sur son placement en janvier 2023 ?
-
Quelle somme d'argent disposera Crésus sur son placement en janvier 2024 ?
Le but est de connaître la somme présente sur le placement au bout de 10 ans, soit en janvier 2032,
en supposant qu'aucun retrait ne sera effectué.
Pour cela, reproduire et compléter l'algorithme en pseudo-code ci-dessous en sachant que :
-
N correspond à l'année considérée,
-
P à la somme présente sur son placement l'année N.
-
i est le compteur de la boucle répétitive Pour.
N = ...
P = ...
for i in range(...) :
N = ...
P = ...
print("Au bout de 10 ans, Crésus aura",...,"€.")
Votre ami Youssouf possède une somme S de 5000€ qu’il aimerait placer sur un compte rémunéré à la banque.
La banque lui propose un taux à intérêts composés de 3% l’an, c’est à dire que son compte est augmenté de 3% chaque année.
Youssouf voudrait connaître la somme d’argent qu’il possèderait chaque année ainsi que la somme totale au bout de 15 ans.
Il fait appel à vous afin que vous lui proposiez un algorithme permettant de savoir le capital au bout de 15 ans.
Réaliser cet algorithme.
Proposez un programme qui affiche tous les résultats possibles (éventuellement redondants) du produit deux nombres entiers compris entre 0 et 10.
Pour afficher un résutat comme "2*3=6" où 2 et 3 sont stockés dans deux variables a
et b
, il suffit de saisir le code
print(a,"*",b,"=",a*b)
.
sur un objet itérable
La structure "for" avec in
Voici la structure en Python d'une boucle for avec in
for elt in iterable:
instruction 1
instruction 2
...
Dans cette boucle, elt
va parcourir les éléments de la iterable
.
La iterable
peut être une chaine de caractères
.
Le programme ci-dessous affiche séparément chaque caractère d'une chaîne de caractères :
# -*- coding: utf-8 -*-
ch="Bonjour à tou.te.s"
for elt in ch:
print(elt)
Vérifier que le programme .
Tester le script ci-dessus pour vérifier qu'il réalise bien ce qui a été annoncé et modifier la chaîne de carctères
avec une autre phrase (Vous pouvez aussi rajouter des nombres et des symboles).
-
Que fait le code suivant ?
# -*- coding: utf-8 -*-
citation="Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions."
compteur=0
for elt in citation:
if elt=="e":
compteur=compteur+1
print(compteur)
Exécuter sur code et changer la citation afin de trouver, valider ou infirmer une hypothèse sur le rôle de ce code.
-
Transformer le code pour qu'il compte le nombre de i.
exercice de renforcement
Proposer une fonction pour_perec
qui remplace tous les "e" d'une phrase par un espace " ".
Boucle itérative : while
La structure while
Voici la structure en Python d'une boucle while
while condition:
instruction 1
instruction 2
...
Tant que la condition
est vraie les instructions du bloc
sont exécutées.
Dans cette structure, on ne connait pas à l'avance le nombre de répétitions.
Deux écueils à éviter :
-
Ne jamais entrer dans une boucle : si la condition au départ vaut False
, la boucle while
ne sera jamais exécutée.
-
Tourner indéfiniment : Si la condition ne change jamais de valeur, la boucle ne s'arrêtera pas et l'algorithme
restera bloqué sur le while
.
Une balle part d'une hauteur de 2 mètres et perd 10% de sa hauteur à chaque rebond. On cherche le nombre de rebonds pour la balle atteigne un
maximum de 1,5 mètre de hauteur. Ce problème (on parle de problème de seuil) peut être traité en python par le script suivant :
hauteur = 2
rebond = 0
seuil = 1.5
while hauteur>seuil:
rebond = rebond+1
hauteur = hauteur*0.9
print(rebond)
Tester ce script
Vous pouvez visualiser les étapes de mise en oeuvre de ce programme en utilisant le lien suivant :
Modifier les valeurs pour que la balle démarre à une hauteur de 3 mètres et atteigne la hauteur de 2 mètres.
Une cuve d'eau à une contenance de 1000L.
-
En moyenne la cuve d'eau se remplis de 3L d'eau par jours.
Écrire une fonction remplir()
qui renvoie le nombre jours qu'il faudra pour remplir la cuve.
- Écrire une fonction
remplir(quant)
où quant
est un entier correspondant au volume d'eau arrivant dans la cuve par jours, qui renvoie le nombre jours qu'il faudra pour remplir la cuve.
On place 1000 euros sur un livret A. Le taux annuel de rémunération est 0,25%. Écrire une fonction
doublement()
qui renvoie le nombre d'année qu'il faut pour doubler la somme de 1000 euros.
exercice de renforcement
Arjuna souhaite travailler dans un centre d'arts martiaux quelques heures par semaine. À la suite d'un entretien, deux possibilités
de salaire s'offrent à lui :
-
Proposition 1 : toucher 8 euros de l'heure,
-
Proposition 2 : versement de 91€ en début de mois, puis toucher 5 € chaque heure travaillée.
- Écrire une fonction
prop1(h)
qui renvoie le salaire de Arjuna après avoir travaillé h
heures avec la proposition 1.
- Écrire une fonction
prop2(h)
qui renvoie le salaire de Arjuna après avoir travaillé h
heures avec la proposition 2.
-
Proposer une fonction choix()
qui renvoie le nombre d'heures à partir duquel la proposition 1 est préférable pour Arjuna.
Lorsque l'utilisateur saisit une donnée, il peut être utile de vérifier qu'elle est conforme à ce qu'on attend de lui.
-
Proposer une fonction saisie()
qui demande à l'utilisateur de rentrer un nombre positif et qui renvoie ce nombre.
-
Ecrire une fonction saisie2()
qui demande à l'utilisateur de saisir un nouveau nombre si le nombre entré est négatif qui renvoie le nombre.
On utilisera la fonction saisie()
.
-
Écrire une fonction repeter_lim(times)
qui affiche le message : "Bravo tu es capable de choisir un nombre positif" si on propose un nombre positif en moins de times
fois et qui affiche "Quel idiot ! tu ne sais pas ce qu'est un nombre positif !".
On utilisera la fonction saisie()
Une banque propose à ses clients une carte de crédit. Chaque mois elle prélève le minimum entre 3 euros et 1%
du montant des transactions effectuées par cette carte de crédit. Dans le cas, où il ne reste plus assez sur le compte
pour payer les frais, elle ne prélève que le restant sur le compte.
-
Proposer une fonction minimum
qui renvoie le minimum des deux nombres entrés comme
arguments.
-
Proposer une fonction frais
qui prend en paramètres deux nombres réels : la somme
sur
le compte et le montant
des transactions effectués par carte bancaire et qui renvoie les frais bancaires
qui seront prélevés.
-
Un client impécunieux possède 5073.68€ sur son compte. Il possède une carte de crédit avec laquelle il retire chaque mois
200€. Sachant qu'il ne remet pas d'argent sur son compte, pendant combien de temps pourra-t-il prélever ainsi
de l'argent sur son compte.
Pour accéder au code de la correction : lien
Votre enseignant vous exploite : il vous demande de créer un programme qui lui renverra la moyenne des notes saisies.
Pour cela, il vous donne le cahier des charges suivant :
-
Créer une fonction continuer
, sans paramètre d'entrée qui demande à l'utilisateur s'il veut poursuivre ou non la saisie
de notes et qui renvie un booléen True
en cas de poursuite et False
sinon.
-
Créer une fonction moyenne
qui calcule la nouvelle moyenne liée à l'ajout d'une note.
-
Créer dans le programme principal une fonction main
qui conduit à demander une nouvelle note et à calculer la moyenne
obtenue alors jusqu'à ce que l'utilisateur décide d'arrêter la saisie.
-
Proposer une fonction continuer
qui répond au cahier des charges. Faire en sorte que la casse (=minuscule ou majuscule) ne
soit pas un problème pour la saisie, par exemple en utilisant ma méthode upper
.
"mélanGes".upper()
renvoie 'MÉLANGES'
.
-
Tester la fonction continuer
créée.
-
Proposer une fonction moyenne
qui répond au cahier des charges. Cette fonction aura trois paramètres :
moy
un flottant qui correspond à la moyenne pour l'instant obtenue,
nb_notes
un entier qui correspond au nombre de notes déjà pris en compte dans la moyenne moy
,
new_note
un flottant qui correspond à la nouvelle note à prendre en compte pour la moyenne.
Cette fonction renverra la moyenne de l'ensemble des notes saisies (en comptant aussi la dernière).
Aide mathématique :
On considère deux ensembles de notes A et B de moyenne respective $moy_A$ et $moy_B$ comprenant respectivement $nb_A$ et $nb_B$ notes.
La moyenne des notes formant la réunion de ces deux ensembles est doné par la formule :
$$ moyenne = \frac{moy_A \times nb_A + moy_B \times nb_B}{nb_A + nb_B}$$.
-
Tester la fonction moyenne
créée.
-
Proposer une fonction main
qui répond au cahier des charges. Cette fonction fera appel aux deux fonctions
continuer
et moyenne
et n'aura pas de paramètre ; elle renverra la moyenne de toutes les notes successivement
saisies.
-
Tester votre programme principal, par exemple en saisissant successivement les valeurs 10, 19 et 13.
Pour accéder au code de la correction : lien
Exercices de renforcement
Sur l'affectation
Quel nombre est stcokée dans la variable $a$ à la fin de ce script :
a=5
a=2*a
b=2*a
a=a*a
a=a-b+1
Pour accéder au code de la correction : lien
Sur l'affichage
Réaliser un script qui contient trois variables : prenom
, nom
et
num_tel
et qui doit afficher :
"Bonjour, je veux joindre Mélusine Hamphaïte au 0665432100 "
Dans le cas où vous vouliez joindre votre amie Mélusine Hamphaïte dont vous connaissez le numéro.
Pour accéder au code de la correction : lien
Sur la saisie
Pour accéder au code de la correction : lien
Pour accéder au code de la correction : lien
Sur l'instruction conditionnelle
Proposer un algorithme qui :
-
Demande à l'utilisateur de saisir un nombre,
-
Affiche si ce nombre est plus grand ou égal à 10 ou s'il est strictement plus petit.
Pour accéder au code de la correction : lien
Un théâtre pratique trois types de tarifs suivant le nombre de pièces regardées.
-
Pour au plus de 2 pièces vues, la personne doit payer 15€ la séance,
-
Entre 3 et 5 pièces vues, la personne doit payer 12€ la séance,
-
À partir de 6 séances, la personne doit payer 10€ la séance.
Écrire un programme qui :
Pour accéder au code de la correction : lien
Sur les fonctions
En vous inspirant de l'exercice sur l'IMC (cf. lien direct), proposez une fonction nommée IMC
qui demande à l'utilisateur sa taille et sa masse puis qui renvoie son IMC.
Rappel :
L'IMC d'une personne est donné par la forumle $ IMC= \frac{masse}{taille^2}$ où la masse est en kilos et la taille en mètres.
Pour accéder au code de la correction : lien
Un site en ligne propose une promotion sur des téléphones portables suivant les cas suivants :
-
Si l'appreil coûte moins de 200€, la promotion est de 10% (cela revient à dire que le prix initial est multiplié par 0.9 pour obtenir le prix
après réduction).
-
Si l'appreil coûte plus de 200€, la promotion est de 20%.
-
Proposez une fonction promotion
qui prend comme argument le prix initial et qui renvoie le prix en prenant en compte la promotion.
-
Les frais de port de 10€ sont offerts si le montant de la commande, après promotion (mais hors frais de port) est strictement supérieur à 100€.
Proposez une fonction payer
qui :
-
demande le prix initial,
-
utilise la fonction promotion
pour déterminer le prix après promotion,
-
prend en compte l'éventuelle offre des frais de port,
-
renvoie le prix final à payer.
-
Testez votre programme avec quelques prix initiaux. Par exemple, avec 50€, 100€, 200€, 1000€, ...
Pour accéder au code de la correction : lien
On suppose que vous disposez déjà des deux fonctions mini2
et mini4
programmées dans un exercice précédent
(cf. lien direct)
Proposer une fonction, nommée
mini4
, qui :
-
prend comme arguments huit nombres entiers, nommés de a
à h
,
-
fait appel aux fonctions mini2
et mini4
pour finalement trouver le minimum des huit nombres,
-
renvoie le minimum trouvé.
Pour accéder au code de la correction : lien
Sur la boucle répétitive for
Écrire une fonction somme_carree(n)
où $n$ est un entier qui renvoie la valeur de $1^2+2^2+...+n^2$.
Pour accéder au code de la correction : lien
Éléonore Wouétel fait des économies. Elle a placé en début d'année 1000€ sur un compte rémunéré en banque.
Elle pense que durant chacune des huit années suivantes, elle pourra déposer sur ce compte 200€.
De plus, la banque lui verse, à la fin de chaque année, 1% d'intérêt, c'est à dire qu'elle rajoute sur le compte 1% de la somme
présente sur le compte en début d'année.
Proposer un algorithme qui affiche la somme qu'Élénore aura sur son compte au bout de huit années de placement.
Pour accéder au code de la correction : lien
Proposer une fonction nommée nb_voyelles
qui prend en arguments une chaîne de caractères et qui renvoie le nombre de voyelles
(minuscules non accentuées) de cette chaîne. Tester ensuite par exemple en exécutant nb_voyelles("Ah oui ! Vive l'été !"")
.
Vous pouvez utiliser le mot-clé or
; exemple : elt=='e' or elt='i'
signifie que l'on teste si "elt est un 'e'
ou un 'i' ".
Pour accéder au code de la correction : lien
Sur la boucle répétitive conditionnelle while
Chaque année la consommation énergétique d'un data center est estimée augmenter de 8 %.
Déterminer le nombre d'années nécessaires au doublement de la consommation énegétique de ce data center.
Le résultat ne dépend pas de la consommation énergétique actuelle de ce data center.
Pour accéder au code de la correction : lien