NSI Cours Terminale : Rappel (1ère partie)


Pourquoi Python?

  • Python est open-source, ça veut dire que le code est librement accessible au publique.
  • Python est très utilisé dans le monde du travail.
  • Les gens qui travaillent en data science, IA, et machine learning utilisent Python.

Rappels (1ère Partie)

Dans ce cours, on nous allons revoir : comment écrire des commentaires, comment afficher des objets, et les différents types d’objet en Python.

Pour exécuter une cellule Python sur Basthon, vous pouvez utiliser le raccourci Ctrl + Entrée.

Vous pouvez également appuyer sur le bouton ▶️ Exécuter dans la barre d’outils.

Essayez d’exécuter le code ci-dessous.

1 + 1
2

Commentaires

On peut écrire des commentaires sur un code.

Les commentaires n’ont aucune conséquence sur le code.

# Je suis un commentaire.

La fonction print

# Affiche la chaîne de caractères (ou string en anglais) "Est-ce que c'est bon pour vous ?"
print("Est-ce que c'est bon pour vous ?")
Est-ce que c'est bon pour vous ?

Jupyter Notebook affiche automatiquement et uniquement le dernier résultat d’une cellule.

"Pas besoin de print"
'Pas besoin de print'
"Qu'est ce que je vais afficher?"
"A. Bonjour"
"B. Coucou"
"C. Mes sincères salutations"
"D. Hey"
'D. Hey'

Affectation

On peut attribuer à des variables des objets en utilisant le symbole =.

# On attribue à la variable 'a' le résultat de 1 + 1
a = 1 + 1

# On attribue à la variable 'cou2' la chaîne de caractères "Coucou"
cou2 = "Coucou"

Les noms des variables ne peuvent pas commencer par un chiffre.

2cou = "Du coup"
  Cell In[20], line 1
    2cou = "Du coup"
    ^
SyntaxError: invalid decimal literal

On peut également utiliser les variables dans la partie droite d’affectation.

# On attribue à la variable 'm' la valeur 2.
m = 2

# On utilise la valeur de 'm' et on y ajoute 3, puis on attribue à la variable 'n' le résultat.
n = m + 3

# On affiche la valeur de 'n' en utilisant print.
print(n)
5

Voici un exemple qui montre comment incrémenter la valeur d’une variable.

p = 2      # p = 2
p = p + 2  # p = 4
p = p + 3  # p = 7
p = p * 5  # p = 35
print(p)
35

Au lieu de variable = variable + x, on peut écrire variable += x.

Voir les exemples ci-dessous.

q = 3  # q = 3
q += 1 # q = 4
q += 1 # q = 5
q -= 7 # q = -2
print(q)

r = 5  # r = 5
r *= 4 # r = 20
r *= 3 # r = 60
print(r)
-2
60

Les différents types d’objets

Dans Python, chaque objet a un type. Pour savoir le type d’un objet, on peut utiliser la fonction type.

type( 0.5 )
float
type( 3 )
int
type ( False )
bool
type ( ["Mbappé", "Zidane", "Pogba", "Squeezie", "Deschamps"] )
list
type ( {
    "prenom": "N'Golo",
    "nom": "Kanté"
} )
dict

Les entiers (int)

On peut représenter les nombres entiers en Python.

1 # Je suis un.
1

On peut utiliser des opérations usuelles entre plusieurs nombres entiers.

# addition et soustraction
1 + 1 - 420
-418
# multiplication
3 * 42 + 25
151
# puissance
2 ** 10
1024
# division (le résultat sera toujours de type float)
print(151/42)
print(2/1)
3.5952380952380953
2.0
# division (renvoie la partie entière du résultat, ce sera donc un entier de type int)
151 // 42
3
# modulo (x%y ça veut dire le reste quand on divise x par y)
151 % 42
25

Les floats

On peut représenter tous les nombres réels en Python.

1 / 3
0.3333333333333333

Attention: Au lieu d’utiliser une virgule, on utilise un point.

10 / 5 # Observer qu'il y a toujours un point quand c'est de type float.
2.0
3.14159 # une approximation de pi
3.14159

Comme les nombres de type int, on peut utiliser l’addition, la soustraction, la multiplication, la division, et les puissances sur les nombre de type float.

Si on efface # dans chaque cellule, qu’affichent les cellules suivantes ?

Réfléchissez d’abord puis vérifier en enlevant le #.

# 0 * 5
# 10 % 3
# 3 / 2 + 1
# 3 // 2 + 1
# 3 ** 2
# type(2)
# x = 10
# x = x + 5
# x = x * 2
# y = 10 + 5 * 2
# print(x - y)

Les booléens (bool)

Il y a deux objets qui ont le type bool: True (vrai) et False (faux).

True
True

Attention, dans Python, le T et le F sont en majuscule.

False
False

On peut utiliser not (pas), and (et), or (ou).

not False
True
True and False
False

Voici un tableau qui affiche tout les résultats possible si on utilise and:

andTrueFalse
TrueTrueFalse
FalseFalseFalse

Recopier puis compléter le tableau. Vous pouvez expérimenter.

orTrueFalse
True?????????????????
False?????????????????
# Éxperimenter ici!
print(True or True)
True

Comparaisons

On peut comparer deux objets en utilisant ==.

1 + 1 == 2
True
x = 6
y = 2 ** 3
x == y
False

On peut utiliser != au lieu de == pour tester si les objets sont différents.

1 + 1 != 3
True

Bien sûr pour les nombres, on peut aussi utiliser >, >=, < et <=.

taille_de_mon_doigt_en_cm = 9
taille_de_mon_doigt_en_cm < 15
True
10 ** 100 >= 10 * 100
True

On peut enchaîner les booléens.

True and True and False
False
(taille_de_mon_doigt_en_cm > 8) and (taille_de_mon_doigt_en_cm < 15)
True

Déterminez ce qu’affichent les cellules suivantes si on efface # dans chaque cellule puis le verifier.

# (3 < 2) or (2 < 3)
# 1 == "1"
# not not not not not not not not not not not not not not not not not not not not not 1 != 2

Modifier la premiere ligne pour que la cellule affiche True quand on l’éxecute.

# Modifiez la ligne suivante:
a = 0

# On peut pas modifier ces lignes:
a += 5
print(a > -3/2 and a < 0)
False

Modifier la premiere ligne pour que la cellule affiche False quand on l’éxecute.

# Modifiez la ligne suivante:
b = 0

# On peut pas modifier ces lignes:
b *= 2
print(b <= -1 or b >= 0)
True

Les chaînes de caractères ou string (str)

Les chaînes des caracteres sont entourées par " ou '.

"Suis un string"
'Suis un string'
SuisPasUnString
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

Cell In[64], line 1
----> 1 SuisPasUnString


NameError: name 'SuisPasUnString' is not defined
Nous Non Plus
'SuisUnString'

On peut utiliser str(...) pour convertir la majorité des objets en type string.

str(1+1)
str(False)
'False'

On peut convertir une chaîne de caractères de chiffres en type int, en utilisant la fonction int.

int("5678") + int("2")
5680

On peut additionner les chaînes de caractères?!

"Wh" + "aou"
'Whaou'
"1" + "2"
'12'

Accès et découpage de chaînes de caractères

On affecte la chaîne de caractères education à la variable mot.

mot = "education"

On peut connaître le nombre de caractères en utilisant la fonction len.

len(mot)
9
len("a b c")
5

Pour vérifier si une chaîne de caractères se trouve dans une autre chaîne en Python, on utilise l’opérateur in.

"duc" in mot
True
"duc" in "education"
True
"je" in "equipe"
False
"m" in mot
False

Pour accéder aux caractères de education en Python, il faut placer l’indice souhaité entre crochets après la chaîne (ou la variable).

Rappel : En Python, le premier indice est 0, pas 1.

# Ainsi, mot[0] signifie le premier caractère de `education`.
mot[0]
'e'
# Ainsi, mot[3] est le 4ème caractère.
mot[3]
'c'

Les indices négatifs comptent à partir de la fin de la chaîne de caractères, de droite à gauche.

mot[-1]
'n'
# Le troisème caractère de droite d'education est 'i'.
mot[-3]
'i'

On ne peut pas modifier un caractère d’une chaine de caractères en utilisant =:

mot[4] = 'k'
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

Cell In[80], line 1
----> 1 mot[4] = 'k'


TypeError: 'str' object does not support item assignment

Quand les crochets contiennent :, la signification change.

# `mot[0:3]` signifie : prendre les caractères de l'indice 0 (inclus) jusqu'à l'indice 3 (exclus).
mot[0:3]
'edu'
# Voici un autre exemple.
mot[5:8]
'tio'
# Si on ne met pas de nombre à gauche du `:`, Python considère le nombre gauche comme 0.
mot[:8]
'educatio'
# Si on ne met pas de nombre à droite du `:`,
# Python considère le nombre droite comme le dernier indice.
mot[5:]
'tion'

Le type None

Il y a un type en particulaire pour dire rien. C’est None. Son type est NoneType.

type( None )
NoneType

Dans Jupyter Notebook, si la dernière valeur est None, rien ne s’affiche.

1 + 1
None

Exercices

mot_de_passe est une chaîne de caractères. Selon les indices suivants, deviner la valeur de mot_de_passe.

  • mot_de_passe[6] est _
  • mot_de_passe[:3] est jai
  • mot_de_passe[8:] est SI!
  • mot_de_passe[1:6] est aime_
  • 'N' in mot_de_passe est True

Si on efface # dans chaque cellule, qu’affichent les cellules suivantes ?

Réfléchissez d’abord puis vérifier en enlevant le #.

# '4092304' + '39028'
# coucou = "Bonjour"
# print(coucou)

Corriger les codes suivant:

# Ce code affiche Bonjour
print(Bonjour)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

Cell In[89], line 2
      1 # Ce code affiche Bonjour
----> 2 print(Bonjour)


NameError: name 'Bonjour' is not defined
# On veut vérifier si 1 + 1 est égal à 2.
1 + 1 = 2
  Cell In[90], line 2
    1 + 1 = 2
    ^
SyntaxError: cannot assign to expression here. Maybe you meant '==' instead of '='?
# Ce code doit afficher l'entier 2.
'a' = 1
print(a + a)
  Cell In[91], line 2
    'a' = 1
    ^
SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?

Dans cet exercice, vous pouvez expérimenter avec le code.

Quel type d’erreur (SyntaxError, TypeError, etc) arrive quand:

# on ajoute un `int` et un `str`?
1 + "1"
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

Cell In[92], line 2
      1 # on ajoute un `int` et un `str`?
----> 2 1 + "1"


TypeError: unsupported operand type(s) for +: 'int' and 'str'
# on assign False a true?
True = False
  Cell In[93], line 2
    True = False
    ^
SyntaxError: cannot assign to True
# on divise par 0?
4983 / 0
---------------------------------------------------------------------------

ZeroDivisionError                         Traceback (most recent call last)

Cell In[94], line 2
      1 # on divise par 0?
----> 2 4983 / 0


ZeroDivisionError: division by zero
# on essaie d'utiliser un variable qui n'est pas encore initialisé?
fjsklvh
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

Cell In[95], line 2
      1 # on essaie d'utiliser un variable qui n'est pas encore initialisé?
----> 2 fjsklvh


NameError: name 'fjsklvh' is not defined
# si on utilise une apostrophe dans un string qui est entouré par des apostrophes
'J'suis content.'
  Cell In[96], line 2
    'J'suis content.'
                    ^
SyntaxError: unterminated string literal (detected at line 2)

Ce cours a été écrit grâce à une collaboration entre Pierre Brun, professeur de mathématiques et moi, Jared Asuncion. Il s'agit d'un cours de spécialité NSI pour des terminales générales.

Elles ont été initialement rédigées sous forme de notebooks Jupyter, mais nous les avons converties en HTML pour une meilleure lisibilité dans les browsers.

C'est un travail en cours de réalisation. N'hésitez pas à nous contacter à l'adresse mail nsi arobase guissmo point com pour tout commentaires, questions ou suggestions.