SNT Python 1

Identification

Infoforall

1 - Les types de données


Voici comment les gens pensent que l'informatique fonctionne :

Python classe ce qu'il doit évaluer dans plusieurs catégories.

Nous allons voir une bizarrerie qu'on peut obtenir si on ne fait pas attention :

calcul bizarre
Un calcul très bizarre...

Vous imaginez s'il fallait payer 55 euros en achetant deux objets à 5 euros !

Documents de cours : pdf ou odt.

Document-élève : pdf ou odt.

Le TP est noté. Mais, si vous bloquez, faire appel à l'enseignant. Les questions qu'il faudra rédiger sur votre copie sont indiquées à l'aide d'un crayon ou de la main levée .

8 questions pour 20 points

  • 03 - 05 - 08 - 09 - 14 - 15
  • 15

1 - Thonny

Thonny
Ecran de Thonny

Nous allons utiliser Thonny, un environnement de développement gratuit, léger, efficace et multiplateforme créé par l'université d'Estonie.

Vous pouvez le télécharger sur la page d'accueil du projet : https://thonny.org/

01° Si vous êtes chez vous, installer Thonny sur votre ordinateur. Sinon, ouvrir Thonny à l'aide de son icône qui doit apparaître sur le bureau.

Tester sa console (la partie basse de l'écran) avec quelques expressions simples. Par exemple :

>>> 3 + 8 11

Maintenant que vous avez trouvé Thonny, vous allez pouvoir travailler.

Nous nous limiterons aujourd'hui à trois types de données possibles, c'est déjà bien :

  1. Les entiers (int pour integer en langage Python)
  2. Les chaînes de caractères (str pour string en langage Python)
  3. Les booléens (bool en langage Python)

2 - Type int et ses opérateurs

02° Tester dans la console les différentes expressions proposées dans l'encadré de cours ci-dessous.

2 - Les integers

On retrouve tous les opérateurs classiques avec ces valeurs entières.

  • addition avec +
  • >>> 4 + 5 9
  • soustraction avec -
  • >>> 4 - 5 -1
  • multiplication avec *
  • >>> 4 * 5 20
  • division avec /
  • >>> 23 / 5 4.6

    Notez bien qu'en Python, la virgule (notation française) est représentée par un point (notation anglosaxonne).

  • quotient d'une division euclidienne avec //
  • >>> 23 // 5 4

    Tout simplement car 23 contient 4 fois 5.

  • reste d'une division euclidienne avec %
  • >>> 23 % 5 3

    Si on retire 4 fois 5 de 23, il reste 3 : 23 = 4*5 + 3.

  • puissance avec **
  • >>> 5 ** 2 25 >>> 5 ** 3 125

✎ 03° Tester les expressions ci-dessous puis expliquer pourquoi les résultats sont ce qu'ils sont.

>>> 4 ** 3 ? >>> 57 // 10 ? >>> 57 % 10 ?

3 - Type str et ses opérateurs

04° Tester dans la console les différentes expressions proposées dans l'encadré de cours ci-dessous pour en comprendre la signification.

3.1 - Les strings

Une chaîne de caractères est délimitée par un guillemet d'ouverture et un guillemet de fermeture.

>>> "Hello World !" 'Hello World !'

Python répond toujours avec des guillemets simples.

Il existe deux opérateurs applicables aux strings.

  • Concaténation avec +
  • >>> "Bon" + "jour" 'Bonjour'
  • "Répétition" avec *
  • >>> "Bon" * 2 'BonBon' >>> "Pom !" * 4 'Pom !Pom !Pom !Pom !'

✎ 05° Tester les expressions ci-dessous puis expliquer uniquement le résultat de la dernière expression ("a" + " " + "b" + " ") * 10.

>>> "ab" + "cd" ? >>> "un" * 3 ? >>> "un " * 3 ? >>> "un " + "deux " * 3 ? >>> ("bo" + "um ! ") * 3 ?

Mais il existe également un certain nombre de fonctions natives à Python permettant de gérer les strings.

3.2 - Fonctions native ord()

Fonction native

Une fonction native est une sorte de code contenu dans une boîte :

  • On lui donne une ou des données sur lesquelles travailler (les ENTREES)
  • Elle répond en fournissant sa réponse (la SORTIE)
Obtenir la valeur d'encodage d'un caractère

La fonction ord() permet de récupérer la valeur d'encodage ASCII des caractères basiques.

>>> ord("A") 65

TRADUCTION : Donne l'encodage du caractère A.

La syntaxe Python est simple 

  • On note le nom de la fonction : ord
  • On ouvre une parenthèse : ord(
  • On note les paramètres d'entrée, séparés par des virgules éventuellement : ord("A"
  • On ferme la parenthèse ord("A")

06° Utiliser Python pour trouver, une à une, les valeurs qui encodent le texte "Hello !".

Pour la première :

>>> ord("H") ?
3.3 - Fonction native len()

Obtenir le nombre de caractères d'un string

La fonction native len() permet d'obtenir le nombre de caractères présents dans un string.

>>> len("ABCD") 4

TRADUCTION : Donne le nombre de caractères dans le string "ABCD".

Même chose mais avec un espace dans la chaîne de caractères :

>>> len("ABC D") 5

TRADUCTION : Donne le nombre de caractère dans le string "ABC D".

On notera que l'espace est donc un caractère comme un autre puisqu'il compte parmi les 5 caractères de "ABC D". Le caractère espace n'est pas "le vide".

Le caractère "vide"

Il existe un moyen de signaler le caractère vide : ouvrir un string et le refermer immédiatement : "".

>>> "a" + "" + "b" 'ab'

07° Demander poliment à python le nombre de caractères dans le string fourni ci-dessous 

anticonstitutionnellement

✎ 08° Demander poliment à python le nombre de caractères dans la séquence ADN fournie ci-dessous. Notez ce que vous avez noté dans la console et le résultat sur votre feuille. Par contre, ne notez pas toute la séquence ci-dessous, notez juste ADN.

>>> ? ?

TACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGC

3.4 - Fonctions native chr()

Obtenir le caractère correspondant à un encodage
>>> chr(65) 'A'

Donne moi le caractère qui correspond à l'encodage 65.


>>> chr(66) 'B'

Donne moi le caractère qui correspond à l'encodage 66.

✎ 09° Demander poliment à Python quels sont les caractères qui correspondent aux valeurs encodées par la suite de nombres 66 puis 111 et enfin 98. Notez sur votre feuille les évaluations que vous avez effectué.

>>> ? ?

10° Ceci n'est pas une question. Juste une manipulation à faire.

En plus des caractères dits "imprimables", il existe des caractères de "contrôle" : ils n'affichent rien mais provoquent un effet d'une façon ou d'une autre.

Ces caractères sont également encodés par une valeur d'encodage.

Visualiser les réponses de la fonction chr() lorsqu'on lui demande à quoi correspondent 7 ou 10.

>>> chr(7) '\x07' >>> chr(10) '\n'

Nous allons voir le sens de ces deux caractères question 11.

11° Copier-coller au fur et à mesure les évaluations proposées dans l'encadré ci-dessous.

3.5 Fonction native print()

Interpréter une donnée et l'afficher dans la console

Cette fonction permet de forcer l'affichage dans la console à destination d'un humain.

Ainsi, si on affiche un string, Python ne va pas placer les guillemets qui sont juste une indication pour l'interpréteur Python, pas pour l'humain qui veut lire le contenu.

>>> print("Bonjour à toi") Bonjour à toi

TRADUCTION : Affiche le string "Bonjour à toi" dans la console pour un lecteur humain.


>>> print("Bonjour\nà\ntoi") Bonjour à toi

TRADUCTION : Affiche le string "Bonjour\nà\ntoi" dans la console pour un lecteur humain.

On peut donc voir que \n veut dire "passe à la ligne". Le n vient du n de new line.

>>> ord("\n") 10

Et le code ASCII du passage à la ligne est ...10.

Encore plus fort (si vous avez du son)
>>> print("Bonjour\nà\ntoi\x07") Bonjour à toi

TRADUCTION : Affiche le string "Bonjour\nà\ntoi\x07" dans la console pour un lecteur humain.

On peut donc entendre que \x07 veut dire "fait TING !".

>>> ord("\x07") 7

Et le code ASCII de ce signal est ...7.

Pour taper \ sur un clavier, c'est ALT-GR maintenue appuyée et la touche 8.

12° Remplacer les 3 points dans le print() pour obtenir l'affichage proposé avec un petit TING final.

>>> print(...) Salut les gens

4 - Type bool et ses opérateurs

Nous avons vu en cours qu'il existe certains opérateurs qui ne renvoient ni un string, ni un entier mais True ou False.

13° Copier-coller au fur et à mesure les évaluations proposées dans les deux encadrés 4.1 et 4.2 ci-dessous.

4.1 - Les opérateurs booléens de comparaison

Voici comment comprendre ce qu'on demande à l'interpréteur Python lorsqu'on tape ceci :

>>> 40 > 30 True

TRADUCTION de "40 est-il strictement supérieur à 30 ?".

>>> 40 < 30 False

TRADUCTION de "40 est-il strictement inférieur à 30 ?".

>>> 40 <= 30 False

TRADUCTION : "40 est-il inférieur ou égal à 30 ?".

Si on résume, voici les 4 opérateurs de comparaison répondant par un booléen :

  • Strictement supérieur >
  • Supérieur ou égal >=
  • Strictement inférieur <
  • Inférieur ou égal <=
4.2 Opérateurs d'égalité et de différence

  • L'opérateur d'égalité se note ==. Par exemple, a == b revient à se poser la question suivante à l'interpréteur Python : "a est-il identique à b ?"
  • >>> 40 == 30 False >>> 40 == 40 True >>> 40 == 30 + 10 True
  • L'opérateur de différence se note != . Par exemple, a != b revient à se poser la question suivante à l'interpréteur Python : "a est-il différent de b ?"
  • >>> 40 != 30 True >>> 40 != 40 False >>> 40 != 30 + 10 False

✎ 14° L'opérateur multiplication * est plus prioritaire que l'opérateur addition +. Voici comment Python comprend l'expression suivante :

>>> 5 + 2 * 10 25 >>> 5 + (2 * 10) # Python réagit comme si vous aviez placé ces parenthèses 25

Sur le même principe, l'opérateur addition + est plus prioritaire que l'opérateur d'égalité ==.

Question : L'interpréteur Python comprend-t-il cette expression comme dans le cas A ou le cas B ?

>>> 40 != 30 + 10 False
  • Propostion d'interprétation A ?
  • >>> 40 != (30 + 10)
  • Propostion d'interprétation B ?
  • >>> (40 != 30) + 10
4.3 Opérateur d'appartenance in

On peut demander très facilement à Python si un string se trouve à l'intérieur d'un autre string.

Imaginons que vous soyez allergique au soja. Vous voulez savoir si vous pouvez manger sans risque tel ou tel aliment. Il vous faut donc savoir si le mot soja apparaît dans la composition du produit.

L'opérateur d'appartenance se note in. Par exemple, a in b revient à poser la question suivante à l'interpréteur Python : "Le string a est-il présent dans le string b ?"

>>> "ab" in "azertyabazerty" True >>> "bonjour" in "bon, ça va bien ?" False >>> "soja" in "blé; oeuf; soja; huile de tournesol" True >>> "soda" in "blé; oeuf; soja; huile de tournesol" False

✌ 15° Demander poliment à python si la séquence CTCCA est présente dans le bout d'ADN suivant :

TACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGCTACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGCTACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGCTACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGCTACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGCTACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGCTACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGCTACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGCTACAGTGTGCCACATCCGGTTGTTAGAGATTCCCGATCAGTAGAAACCCATGGCCCACGGTGTACTTGCCATATATTCTACACTATGGACGCATAGGATAGCCTATGTAACCAAGGTTACGCCTGACATACGAACCAGGTTTAGTTCGTCACCAGATTTGGGGCCCAGTGCTATGGTAACTTTACGCACATTTCGCGAGC

Notez bien ce que vous avez écrit dans la console ainsi que la réponse. Notez juste ADN pour la longue séquence ci-dessus.

5 - Conclusion : séquentialité dans la console

5 - Séquentialité

Séquentialité

L'interpréteur Python exécute les lignes une par une.

Tant qu'il n'a pas fini une ligne, il ne passera pas à la suivante.

Une fois qu'une ligne est exécutée, on ne peut pas revenir en arrière : elle est réalisée.

Pour comprendre un programme Python, il est donc vital de ne pas "sauter" d'instructions mais de comprendre TOUTES les lignes DANS L’ORDRE d’exécution.

Console interactive

L'invite de commande est notée >>>

On valide une ligne avec ENTREE.

Impossible de modifier une ligne déjà exécutée.

En plaçant votre souris sur la console, on peut récupérer les dernières instructions avec la flèche UP.

6 - FAQ

Rien pour le moment

Activité publiée le 01 12 2023
Dernière modification : 01 12 2023
Auteur : ows. h.