Aller au contenu

C5 Initiation à Python avec Turtle - Partie 2

Activités

▪ Activité 1 : Marche aléatoire

Le but de l'activité est d'utiliser Python (et son module turtle) pour simuler une marche aléatoire. C'est à dire qu'on simule le déplacement d'une tortue initialement situé en (0,0) et qui se déplace aléatoirement de 10 pixels dans l'une des quatre directions avec la même probabilité de \(\dfrac{1}{4}\) pour chaque direction. On donne le début de code suivant :

import turtle
# randint(a,b) permet de tirer un nombre au sort entre a et b
from random import randint
tortue = turtle.Turtle()
papier = turtle.Screen()

# On fixe les dimensions de la feuille de papier
papier.setup(height=450,width=450)
# vitesse et forme de la souris
tortue.speed(0)
tortue.shape("turtle")

  1. La fonction randint

    1. Ce programme importe la fonction randint, dans Python en mode console, rechercher l'aide sur cette fonction après l'avoir importée
    2. Utiliser cette fonction pour générer un entier au hasard entre 1 et 6
  2. Recopier ce programme, le compléter en écrivant une fonction pas qui ne prend pas d'argument, et fait avancer la tortue dans l'une des quatre directions cardinales au hasard.

  3. Ecrire une boucle for permettant de simuler une promenade aléatoire de 100 pas (voir ci-dessous pour un exemple de résultat obtenu) exemple promenade aléatoire

  4. Boucle non bornée

    1. Tracer en rouge le cercle de centre \((0,0)\) et de rayon \(200\).
    2. On veut déplacer la tortue jusqu'à ce qu'elle franchisse le cercle, peut-on utiliser une boucle for ?
    3. A quelle condition, portant sur ses coordonnées \((x,y)\), la tortue est-elle en dehors du cercle ?
    4. Ecrire une fonction dans_cercle qui renvoie True ou  False suivant que la tortue se trouve ou non dans le cercle. On pourra utiliser tortue.xcor() et tortue.ycor() qui renvoie respectivement l'abscisse et l'ordonnée de la tortue.

      A retenir

      L'instruction return permet à une fonction de renvoyer un résultat.

    5. Ecrire une boucle while de façon à ce que la tortue se promène jusqu'à sortir du cercle de centre \((0,0)\) et de rayon \(200\) (voir ci-dessous pour un exemple de résultat) : exemple sortie

▪ Activité 2 : Les listes de Python

A retenir

Dans cette activité, on utilise pour la première fois les jupyter notebook, c'est à dire des documents contenant à la fois :

  • des zones de texte explicatives,
  • des zones de code Python, executables directement à la façon de ce qui se passe lorsque Python est en mode console.

A chaque fois, que nous utilisons cet outil, deux choix s'offrent à vous :

  1. l'utiliser localement sur votre ordinateur à condition d'y avoir installé jupyter notebook (c'est le cas sur les ordinateurs de la salle). Pour cela, créer un dossier nommé par exemple Notebook et depuis un terminal lancer jupyter dans ce dossier en écrivant simplement :

    jupyter notebook
    
    L'application se lance dans votre navigateur, télécharger le notebook et utiliser le bouton Téléverser en haut à droit pour le télécharger dans votre dossier et l'ouvrir.

  2. Utiliser l'application Capytale de votre environnement numérique de travail metice. Dans ce cas, utiliser le lien de partage fourni dans l'activité. Cette option vous permet notamment de travailler depuis la maison car aucune installation (ni de Python, ni de Jupyter) n'est nécessaire.

Les activités utilisant un notebook proposerons donc toujours les deux options décrites ci-dessus.

▪ Activité 3 : Parcours d'une liste

Cours

Vous pouvez télécharger une copie au format pdf du diaporama de synthèse de cours présenté en classe :

Diaporama de cours

Attention

Ce diaporama ne vous donne que quelques points de repères lors de vos révisions. Il devrait être complété par la relecture attentive de vos propres notes de cours et par une révision approfondie des exercices.

QCM

1. Une boucle while :

  • a) s'exécute tant qu'une condition est vraie et donc peut être infinie.
  • b) s'exécute un nombre prédéfinie de fois
  • c) s'exécute toujours une infinité de fois
  • d) s'exécute jusqu'à ce que l'utilisateur réponde correctement
  • a) s'exécute tant qu'une condition est vraie et donc peut être infinie.
  • b) s'exécute un nombre prédéfinie de fois
  • c) s'exécute toujours une infinité de fois
  • d) s'exécute jusqu'à ce que l'utilisateur réponde correctement

2. Quel sera le résultat de l'exécution du programme Python suivant ?

n = 5
p = 1
while n>0:
    p = p*2
  • a) Une boucle infinie
  • b) Une boucle se répétant cinq fois
  • c) Une Syntax Error
  • d) Une Indentation Error
  • a) Une boucle infinie
  • b) Une boucle se répétant cinq fois
  • c) Une Syntax Error
  • d) Une Indentation Error

3. Quelles seront les valeurs des variables s et i à la fin de l'exécution du programme suivant ?

s = 0
i = 1
while i < 5:
    s = s + i
    i = i + 1
  • a) s=10 et i=4
  • b) s=10 et i=5
  • c) s=15 et i=5
  • d) Aucunes car ce programme produit une erreur.
  • a) s=10 et i=4
  • b) s=10 et i=5
  • c) s=15 et i=5
  • d) Aucunes car ce programme produit une erreur.

4. Quelle instruction permet d'exécuter une boucle tant que les variables a et b sont toutes les deux inférieures strictement à 10.

  • a) while a<10 or b<10
  • b) while a<10 or b<10:
  • c) while a<10 and b<10
  • d) while a<10 and b<10:
  • a) while a<10 or b<10
  • b) while a<10 or b<10:
  • c) while a<10 and b<10
  • d) while a<10 and b<10:

5. Quel sera la valeur de la variable compteur après l'exécution du programme suivant ?

compteur = 1
compteur += 1
  • a) Aucune car += 1 provoque une erreur
  • b) compteur vaudra 2 car += 1 permet d'augmenter de 1 une variable
  • c) compteur vaudra 0 car += 1 permet de diminuer de 1 une variable
  • d) compteur vaudra 1 car += 1 ne modifie pas sa valeur
  • a) Aucune car += 1 provoque une erreur
  • b) compteur vaudra 2 car += 1 permet d'augmenter de 1 une variable
  • c) compteur vaudra 0 car += 1 permet de diminuer de 1 une variable
  • d) compteur vaudra 1 car += 1 ne modifie pas sa valeur

6. Que vaut la variable a après exécution de l'instruction a=[0.5*x for x in range(4)] ?

  • a) [0.0,0.5,1.0,1.5,2.0]
  • b) [0,1,2,3,4]
  • c) [0,1,2,3]
  • d) [0.0,0.5,1.0,1.5]
  • a) [0.0,0.5,1.0,1.5,2.0]
  • b) [0,1,2,3,4]
  • c) [0,1,2,3]
  • d) [0.0,0.5,1.0,1.5]

7. Si alpha=["A","B","C","D","E","F","G","H"] quelle est l'expression permettant d'accéder à la lettre "E" ?

  • a) alpha4
  • b) alpha[4]
  • c) alpha(4)
  • d) alpha.E
  • a) alpha4
  • b) alpha[4]
  • c) alpha(4)
  • d) alpha.E

Exercices

▪ Exercice 1 : Génération de listes en Python

  1. On considère le programme suivant :

    liste1 = [0]*100
    liste2 = [0 for k in range(100)]
    liste3 = []
    for k in range(100):
        liste3.append(0)
    

    1. Quel est le contenu de chacune des listes ?
    2. Indiquer par quel procédé chacune de ces listes a été crée.
  2. Ecrire un programme python permettant de créer les listes suivantes :

    1. Une liste contenant 12 fois le chiffre 7.
    2. La liste des nombres entiers de 1 à 100.
    3. Une liste contenant 1000 nombres tirés au sort entre 1 et 6.

      Aide

      On rappelle que la fonction randint peut être importer depuis le module random, elle permet de tirer un nombre en deux valeurs a et b données en paramètres.

    4. La liste des cubes des entiers de 1 à 10.

▪ Exercice 2 : Parcours de listes en Python

On suppose qu'on dispose d'une liste de notes, on veut écrire une fonction qui renvoie le nombres de notes qui sont en dessous de la moyenne.

  1. On considère une première version de cette fonction :

    def inferieur_moyenne(liste_notes):
        nb = 0
        for note in liste_notes:
            if .....:
                nb = .......
        return ...
    

    1. Recopier et compléter cette fonction
    2. Tester cette fonction
  2. Voici une deuxième version de cette fonction :

    def inferieur_moyenne(liste_notes):
        nb = 0
        for indice in ........:
            if ........... : 
                nb = .......
        return ...
    

    1. Recopier et compléter cette fonction
    2. Tester cette fonction
  3. Quelle est la différence principale entre ces deux versions de la même fonction ?

  4. Ecrire les fonctions suivantes :

    1. somme_liste qui prend comme argument une liste non vide de nombres et renvoie la somme de ces nombres.
    2. moyenne_liste qui prend comme argument une liste non vide de nombres et renvoie la moyenne de ces nombres.
    3. max_liste qui prend comme argument une liste non vide de nombres et renvoie le plus grand de ces nombres.
    4. min_liste qui prend comme argument une liste non vide de nombres et renvoie le plus petit de ces nombres.

▪ Exercice 3 : Recherche d'occurences

  1. Ecrire une fonction present(elt,liste) qui renvoie True si elt se trouve dans la liste liste et False sinon. Par exemple present(3,[1,4,5]) renvoie False, par contre present(4,[1,4,5]) renvoie True.
  2. Tester cette fonction
  3. Ecrire une fonction occurence(elt,liste) qui renvoie le nombre de fois où elt apparaît dans liste.

▪ Exercice 4 : Chaines de caractères

  1. Ecrire une fonction compte_caractere(s,c) qui prendre en argument une chaîne de caractère s et un caractère c et retourne le nombre de fois où c apparait dans s. Par exemple compte_caractere("informatique","i"") renvoie 2 puisqu'il y a deux i dans le mot informatique
  2. Ecrire une fonction inverse qui prend en argument une chaîne de caractère et retourne cette chaîne écrite à l'envers. Par exemple, inverse("Python") donnera "nohtyP".
  3. Ecrire une fonction compare qui prend en argument deux chaînes de caractères et renvoie le nombre de fois où ces deux chaines on la même lettre au même emplacement. Par exemple, compare("Python","Poterie") retourne 2 car le "P" et le "t" sont situés aux mêmes emplacements dans les deux mots.

▪ Exercice 5 : S'entrainer sur des exercices en ligne

Le site e-nsi propose des exercices permettant de s'entrainer à la programmation directement dans le navigateur sans aucune installation (ni de Python, ni de VsCode). Pour faire le bilan de ce chapitre, on pourra faire les exercices suivants :

  • Nombre de bits pour revoir les fonctions, les boucles while et réviser l'écriture binaire.
  • Indice ou valeur pour vérifier qu'on a bien compris les parcours par indice ou par élément.
  • Autour de range pour revoir range très utile pour l'écriture de boucle for
  • Anniversaire de chat pour un exercice bilan (instruction conditionnelle, fonction)

Humour d'informaticien

Being a programmer