Initiation à Python.

🕐 Historique:

  • 1989 : Guido van Rossum a écrit une première version du langage en une semaine. Le nom Python vient de son appréciation pour "Les Monty Python".
  • 2000 : Version 2 du projet
  • En 2021, Python est le deuxième langage le plus utilisé dans le monde (source)

1. Python:

Python est un langage de programmation interprété.

Plusieurs logiciels permettent de l'éxecuter. En classe nous utilisons Pyzo ou eduPython.

2. Une première vue sur les types:

Python manipule différents types d'objets, notamment:

3. Interface de Pyzo ou eduPython:

4. Affectations:

Dans Python, nous pouvons affecter des integers, des floats ou des strings à des variables.

Le symbole = n'a pas la même signification en langage mathématiques et en langage Python.

x=3 en Python signifie qu'à partir de maintenant, x prend la valeur de 3.

5. Exercice:

Copier le code ci-dessous dans la partie de gauche de Pyzo.

x=2
y=3
z=4.5+x+y
a=" "
b="ça"
w="coucou"
k="va"
ponctu="?"
phrase=w+a+b+a+k+ponctu

Une fois ceci fait, exécuter le code puis :

  1. Dans la console, taper z puis la touche "entrée".
  2. Dans la console, taper phrase puis la touche "entrée".

On remarque que lorsqu'on additionne deux strings, on obtient un string unique formé des deux chaînes de caractères mis bout à bout. On appelle cela de la concaténation.

6. Exercice:

Que vaut x après l'exécution de ces commandes?

x=3
y=x+3
x=6
x=x+1
x=y+1

7. Instruction print:

Dans Python, nous pouvons faire afficher dans la console le contenu des variables avec l'instruction print.

8. Exemple:

Copier le code ci-dessous dans la partie de gauche de Pyzo.

x=2
y=3
z=4.5+x+y
a=" "
b="ça"
w="coucou"
k="va"
ponctu="?"
phrase=w+a+b+a+k+ponctu
print("La valeur de z est ",z,"et la phrase était :",phrase)

9. Exercice:

On considère le programme suivant:

  1. x prend la valeur 2.
  2. x est multiplié par 2.
  3. On ajoute 10 au résultat et cela devient la nouvelle valeur de x.
  4. y vaut la moitié de ce résultat.
  5. On affiche le résultat de la somme de x et de y.

On vous demande donc de :

  1. Programmer ceci en Python.
  2. Qu'affiche ce programme?
  3. Qu'affiche ce programme si au début la valeur de x est 10?

10. Puissance:

Dans Python, nous effectuons l'opération puissance à l'aide de **.

11. Exercice:

Dans votre cahier, écrire les résultats obtenus à l'aide de Python :

  1. \(3^2\)
  2. \(8^3\)
  3. \({0,5}^2\)
  4. \({13,8}^3\)
  5. \(10^{-2}\)
  6. \(3 \times 56^2 + 4 \times 23^2\)

12. Exercice:

Sans exécuter le code, que vaut x+y après l'exécution de ces lignes?

x=4
y=3
z=x**2
x=z+1
y=y+5

13. Importation de la bibliothèque math:

Sans importer de bibliothèques, Python dispose de fonctionnalités limitées afin qu'il soit léger et puisse s'exécuter rapidement.

Par exemple, Python ne peut pas faire de racine carrée sans que l'on importe la bibliothèque math.

On peut ainsi faire des racines carrées avec la commande sqrt en procédant ainsi:

from math import *
print(sqrt(2))

14. Exercice:

On considère le programme suivant :

from math import sqrt
AB=6
AC=8
print("Un côté mesure ",AB," cm et l'autre côté ",AC," cm.")
print("ABC est un triangle rectangle donc d'après le théorème de Pythagore ")
print("BC²=AB²+AC²")
print("BC²=",AB,"²+",AC,"²")
print("BC²=",AB**2,"+",AC**2)
BC_carre=AB**2+AC**2

print("BC²=",BC_carre)

BC=sqrt(BC_carre)

print("Donc BC = ",BC," cm.")
  1. A quoi sert ce programme?
  2. On souhaite calculer l'hypoténuse d'un triangle rectangle dont les deux côtés adjacents à l'angle droit mesurent respectivement 9 cm et 12cm. Que doit-on modifier?

15. Division euclidienne:

Il est parfois nécessaire de calculer le quotient et le reste d'une division euclidienne. Pour cela nous avons les outils suivants :

16. Exercice:

Jean-Louis a préparé 1873 gâteaux. Il veut les distribuer à 12 clients et bien sûr, chacun en aura le même nombre.

A l'aide de Python, mettre les réponses suivantes dans vos cahiers:

  1. Combien chaque client aura de gâteaux?
  2. Combien restera-t-il de gâteaux après la distribution aux clients?

17. Création de fonctions:

Dans Python, nous pouvons créer des fonctions à l'aide de la commande def.

La syntaxe ressemble à ceci:

18. Exercice:

Créer une fonction f qui prend comme paramètre un nombre x et qui renvoie la valeur de \(3x+5\).

19. Exercice:

Créer une fonction ajoute_22 qui prend comme paramètre un nombre x et qui renvoie la somme de x et de 22.

20. Exercice:

Créer une fonction carre qui prend comme paramètre un nombre x et qui affiche la valeur du périmètre d'un carré de côté x et affiche aussi la valeur de son aire.

21. Exercice:

Créer une fonction rectangle qui prend comme paramètres un nombre a et un nombre b et qui affiche la valeur du périmètre d'un rectangle de dimension a et b puis affiche aussi la valeur de son aire.

22. Exercice

Ecrire une fonction Python qui se nomme moyenne_trois_nombres(nb1,nb2,nb3) qui prend en paramètres trois nombres et qui renvoie la moyenne de ces trois nombres.

23. Exercice:

Créer une fonction reduction_20_pourcents qui prend comme paramètre un nombre x qui correspond au prix d'un article et qui retourne le prix de cet article après une réduction de 20% .

24. Exercice

Ecrire une fonction augmentation_15_pourcents qui prend en paramètre une valeur x qui correspond à un prix et qui renvoie un float qui correspond à une augmentation de 15% de ce prix.

25. Exercice:

Dans une boulangerie, les pains au chocolat coûtent 1,30 euros l'unité et les croissants 1,10 euros.

Créer une fonction Python que l'on nomme boulangerie, qui prend comme paramètres x et y et qui retourne le prix que l'on va payer si l'on achète x pains au chocolat et y croissants.

26. Les booléens

Dans Python, il y a un type d'objet que l'on appelle les booléens.

Un objet booléen vaut soit True, soit False.

On est capable ainsi de faire tester à Python des inégalités du type 2+3>4.

On a ainsi des comparaisons du type :

27. Exercice:

Taper 5+3>2 dans la console.

28. Instruction conditionnelle

Dans Python, nous pouvons écrire des instructions se réalisant suivant des conditions.

Pour cela, nous utilisons les instructions if , elif et else.

Il faut faire attention à ce qu'on appelle l'indentation. Cela consiste en l'espace qui est à gauche de ce qu'on écrit.

29. Exercice:

On considère le code suivant :

x=12
if x==3:
    print(20)
elif x>5:
    print(11)
elif x==0:
    print(15)
else:
    print(10)
  1. Qu'affichent les instructions ci-dessus?
  2. Qu'affichent les instructions ci-dessus si la première ligne est remplacée par x=0 ?
  3. Qu'affichent les instructions ci-dessus si la première ligne est remplacée par x=7 ?
  4. Qu'affichent les instructions ci-dessus si la première ligne est remplacée par x=5 ?
  5. Qu'affichent les instructions ci-dessus si la première ligne est remplacée par x=-2 ?
  6. Qu'affichent les instructions ci-dessus si la première ligne est remplacée par x=3 ?
  7. Qu'affichent les instructions ci-dessus si la première ligne est remplacée par x=3.0 ?

30. Exercice:

Compléter le code suivant :

def signe(x):
    if ...........:
        return ........
    elif .........:
        return .......
    else:
        return .......

Afin que :

Exemple d'utilisation :

>>> signe(5)
"Ce nombre est positif."
>>> signe(-100)
"Ce nombre est négatif."

31. Exercice:

  1. Essayer les commandes suivantes dans la console pour la résolution de l'exercice :

    • 3 % 2
    • 100 % 2
    • 121 % 2
    • 1040 % 2
    • 1123 % 2
    • 1478 % 2

    Que remarque-t-on?

  2. Compléter le code suivant :

    def parite(x):
        if ...........:
            return ........
        else:
            return .......

    Afin que :

    • La fonction retourne "Ce nombre est pair." si l'argument x est pair.
    • La fonction retourne "Ce nombre est impair." si l'argument x est impair.

    Exemple d'utilisation :

    >>> parite(52)
    "Ce nombre est pair."
    >>> parite(7415)
    "Ce nombre est impair."

32. Exercice:

Dans une boulangerie, les pains au chocolat coûtent 1,30 euros l'unité et les croissants 1,10 euros.

Paul possède uniquement un billet de 20 euros et souhaite acheter des pains au chocolat et des croissants.

Ecrire une fonction boulangerie prenant en paramètres deux flottants x et y.

x correspond au nombre de pains au chocolat achetés et y le nombre de croissants achetés.

Cette fonction retourne soit "Paul peut le payer" soit "Paul ne peut pas le payer" suivant s'il peut le payer ou non.

33. Exercice:

Lilya possède des gourdes de 800 mL qu'elle souhaite remplir entièrement.

Ecrire une fonction gourde(volume) qui prend en paramètre un integer volume représentant un certain volume de liquide.

34. Exercice:

On souhaite programmer la réciproque de Pythagore.

Programmer la fonction reciproque_pythagore(a,b,c) avec a,b et c trois nombres flottants représentant les trois côtés et c étant la longueur du côté le plus long.

La fonction retournera soit le string "Le triangle est rectangle." soit le string "Le triangle n'est pas rectangle.".

35. Exercice

  1. Ecrire une séquence d'instruction permettant d'afficher les nombres de 0 à 3 avec un nombre par ligne.
    print(0)
    ...
    ...
    ...
    
  2. Ecrire une séquence d'instruction permettant d'afficher les nombres de 0 à 10 avec un nombre par ligne.
  3. Ecrire une séquence d'instruction permettant d'afficher les nombres de 0 à 15 avec un nombre par ligne.

36. La boucle for

L'exercice précédent pourrait être insupportable si les questions continuaient. L'informatique a justement pour but d'automatiser les choses.

Dans Python, il existe une instruction permettant de faire une boucle : la boucle for.

37. Exercice:

  1. Taper le code suivant et exécuter le:

    for coucou in range(30):
        print(coucou)
  2. Que constatez-vous?

38. Exercice:

  1. Ecrire une séquence d'instruction permettant d'afficher les nombres de 0 à 100 avec un nombre par ligne.
  2. Compléter les instructions pour que Python affiche le résultat de \(0+1+2+3+4+...+52+53\) :

    somme=0
    for nombre in range(..........):
        somme=somme+nombre
    print(....)

39. Paramètres de la boucle for

40. Exercice :

Qu'affichent les instructions suivantes ?

  1. for i in range(8):
        print(i)
  2. for i in range(5,32):
        print(i)
  3. for i in range(-2,22):
        print(i)
  4. for i in range(3,70,5):
        print(i)
  5. for i in range(10,0,-1):
        print(i)

41. Exercice:

  1. Ecrire une séquence d'instruction permettant d'afficher les nombres de 2 à 100 avec un nombre par ligne.
  2. Ecrire une séquence d'instruction permettant d'afficher les nombres de 3 à 57 avec un nombre par ligne.
  3. Ecrire une séquence d'instruction permettant d'afficher les nombres de -6 à 8 avec un nombre par ligne.
  4. Ecrire une séquence d'instruction permettant d'afficher les nombres de -15 à 1 avec un nombre par ligne.
  5. Ecrire une séquence d'instruction permettant d'afficher les nombres de 0 à 100 en avançant (un pas ) de 5 en 5 avec un nombre par ligne.
  6. Ecrire une séquence d'instruction permettant d'afficher les nombres de 3 à 9 en avançant (un pas ) de 2 en 2 avec un nombre par ligne.
  7. Ecrire des instructions pour que Python affiche le résultat de \(3+4+...+72\).
  8. Ecrire des instructions pour que Python affiche le résultat de \(2+4+6+8+...+26\).
  9. Ecrire des instructions pour que Python affiche le résultat de \(13+23+33+...+73\).
  10. Ecrire des instructions pour que Python affiche le résultat de \(4+12+22+32+...+72\).

42. Exercice:

Un peu de mathématiques:

On considère la fonction \( f : x \longmapsto 47x-13\).

On demande de compléter le tableau de valeurs suivant à un élève :

\(x\) -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10
\(f(x)\)

Ce travail étant un peu ennuyeux, on décide de le rendre moins répétitif en le programmant en Python.

  1. Programmer la fonction f.
  2. Programmer une boucle qui affiche les valeurs \(f(x)\) demandées.

43. Exercice:

Ecrire une fonction en Python repete(texte) qui prend en paramètre un string texte et affiche 7 fois ce string.

Exemple :

>>> repete("cadeau")
cadeau
cadeau
cadeau
cadeau
cadeau
cadeau
cadeau

44. Exercice:

Ecrire une fonction en Python repete_2(texte) qui prend en paramètre un string texte et affiche 10 fois un string composé de la concaténation de 2 fois ce qui a été donné séparé par un espace.

Exemple :

>>> repete_2("cadeau")
cadeau cadeau
cadeau cadeau
cadeau cadeau
cadeau cadeau
cadeau cadeau
cadeau cadeau
cadeau cadeau
cadeau cadeau
cadeau cadeau
cadeau cadeau

45. Exercice:

En mathématiques, pour un entier naturel \(n\), \(n!\) (prononcé "factorielle n") est défini ainsi:

Compléter la fonction factorielle(n) qui prend en paramètre un entier n et renvoie le nombre correspondant.

def factorielle(n):
    produit=1
    for nombre in range(....,....):
        produit=.........*.......
    return ..........

46. Boucle sur les caractères:

Dans Python, la boucle for peut aussi être utilisée pour itérer sur les caractères d'une chaîne de caractère.

Par exemple, le code :

texte="Bonjour!"
for coucou in texte:
    print(coucou)

Donne :

B
o
n
j
o
u
r
!

47. Exercice:

Compléter la fonction compte_carac_a qui prend en paramètre un string et qui renvoie le nombre de fois le caractère "a" est présent.

def compte_carac_a(texte):
    compteur=....
    for caractere in texte :
        if ........... :
            ...................
    return ............    

48. Exercice:

Ecrire la fonction compte_carac_a_ou_A qui prend en paramètre un string et qui renvoie le nombre de fois le caractère "a" est présent, qu'il soit en majuscule ou en minuscule.

49. Exercice:

Ecrire la fonction compte_voyelle qui prend en paramètre un string et qui renvoie le nombre de voyelle présent dans ce string.

50. La boucle while

La boucle for est utile mais peut s'avérer compliquée pour certaines utilisations, par exemple lors d'évènements du type "continue de faire ceci tant que telle chose ne s'est pas produite".

Pour faire ce genre de choses, nous avons l'instruction while.

51. Exercice:

Exécuter le programme suivant:

x=0
while x!=100:
    print(x)
    x=x+10
  1. Que signifient les symboles != ?
  2. Pourquoi ne voit-on pas le nombre 100 dans la console après l'exécution du programme?

52. Exercice:

Exécuter le programme suivant:

x=0
while x!=100:
    x=x+10
    print(x)
  1. Quelle différence y a-t-il avec le code de l'exercice précédent?
  2. Quel est le dernier nombre affiché par ce code? Comment l'expliquez-vous?

53. Exercice:

Ecrire une fonction avance_3_en_3(depart,seuil_max) qui prend en paramètres deux integers depart et seuil_max et qui affiche les nombres depart, depart+3, depart+6, depart+9,... qui sont inférieurs strictement à seuil_max. On utilisera la boucle while.

54. Exercice:

Ecrire une fonction puissance_de_deux(maximum) qui prend en paramètre un integer maximum et affiche toutes les puissances de 2 (1, 2, 4, 8, ...) inférieures ou égales à maximum. La fonction utilise une boucle while.

Par exemple :

55. Exercice d'approfondissement :

Donner une appoximation de \( \sqrt{2} \) à l'aide d'une boucle while à \(10^{-5}\) près sans utiliser la commande sqrt.