Skip to content

NSI - Première - Constructions élémentaires en python

Le langage python

Cliquez sur le lien du chapitre de cours à consulter:

les structures alternatives: if elif else

En programmation, il arrive souvent de demander au programme de faire des tests qui s’avèreront vrais ou faux.

L’instruction utilisée est constituée du mot-clé if puis de la condition à tester suivie de deux-points.

Exemple:

a = input("entrez un caractère du clavier")
# si a est égal au caractère ? 
if a == '?':
    print("vous avez saisi un point d'interrogation")
Une condition est une instruction de programme qui compare des choses et nous indique si le critère de la comparaison est vrai (True) ou faux (False). Ci-dessus le condition testée est a == '?' ce qui demande au programme de tester si a est égal au caractère ?.

On peut proposer plusieurs tests if qui seront testés les uns après les autres ( dans l'ordre haut vers bas):

Exemple:

a = input("entrez un caractère du clavier")
# si a est égal au caractère ? 
if a == '?':
    print("vous avez saisi un point d'interrogation")
# si a est différent du caractère ! 
if a != '!':
     print("vous n'avez pas saisi un point d'exclamation")
     print("au revoir")

On peut aussi proposer un ou plusieus autres tests à effectuer uniquement si les tests précédents sont faux, on utilise alors le mot-clé elif suivi de l'autre condition à tester puis de deux-points ":".
Dans le cas de l'utilisation de elif on doit obligatoirement terminer la série de tests avec le mot clé else: sans condition associée qui proposera un bloc d'instructions à exécuter si les conditions associées aux tests if et elif sont fausses.

Exemple:

a = input("entrez un caractère du clavier: ")
# si a est égal au caractère ? 
if a == '?':
    print("vous avez saisi un point d'interrogation")
# sinon si a est égal au caractère 'z'
elif a == 'z':
    print("vous avez saisi le caractère z")
# sinon si a est différent du caractère '$'
elif a != '$':
    print("vous n'avez pas saisi les caractères $, z et ?")
# sinon ( pas de condition)
else:
     print("vous avez saisi le caractère $")  

les structures itératives: boucles

Il existe des situations où un programme doit :

  • répéter un certain nombre de fois un ensemble d'instructions. Par exemple un programme qui calcule votre moyenne de manière interactive peut devoir répéter d’entrer chacune des notes.

  • répéter un ensemble d'instructions tant que certaines conditions sont vraies. Par exemple un programme peut devoir s’exécuter en boucle tant que vous n’appuyez pas sur la touche « echap » du clavier.

  • Les boucles bornées.

    • Boucle for...in range(...):
      L'instruction for _ in range (nombre de fois) : permet d'exécuter, un certain nombre de fois, une série d'instructions.
      Exemple 1: répéter 3 fois l’affichage de « bonjour » et de « au revoir »

      # répéter 3 fois
      for _ in range(3):
          print("bonjour")
          print("au revoir")
      print(" ici on est après la boucle ")
      
      Le résultat:

      En informatique un tour de boucle est appelé une itération.

      Exemple 2: répéter 3 fois avec un compteur d’itérations On peut aussi préciser le nom d’une variable ( ci-dessous la variable s’appellera i) qui sert de compteur de « tour de boucle » , ce besoin existe pour des saisies interactives comme « entre ta note n°1 » puis « entre ta note n°2 » puis « entre ta note n°3 »

      Exemple de code:

      # pour i dans la plage 1 inclus jusqu'à 4 exclu <=> [1,3] avec un pas de 1
      # il y aussi 3 itérations. 
      for i in range(1,4,1):
           print("entre ta note n°", i)
           note = input()
           # suite programme non écrite 
      
      Le résultat:

      Remarque: si la première valeur du compteur de boucle doit être 0 et si le pas entre les valeurs est de 1, on peut ne pas préciser le premier et le troisième argument de range:for i in range(0,4,1) est équivalent à for i in range(4)

      Exemple 3: Boucle décroissante

      On peut régler les arguments pour que la fonction range génère une série de nombres décroissants:

      # pour i dans la plage 4 inclus jusqu'à -1 exclu <=> [4,0] avec un pas de -1
      # il y aura aussi 3 itérations. 
      for i in range(4,-1,-1):
           print(i)
      

      Le résultat:

    • Boucle for element in sequence:

    Un itérateur est une sorte de curseur qui a pour mission de se déplacer dans une séquence d'éléments. Une boucle « for e in sequence » permet de déplacer le curseur dans séquence et d’affecter la valeur marquée par le curseur à la variable e, la variable e vaudra ainsi successivement toutes les valeurs de la séquence.

    Exemple:

    # la sequence sera ici la suite de caractère "baba"
    # à chaque itération: le curseur va pointer un caractère et l'affecter à la variable e
    for e in "baba":
        # affiche la valeur de e à chaque itération
        print(e)
    

    Le résultat:

  • Les boucles non bornées.

    • Boucle while .....:

    La boucle while...: est utilisée quand on ne sait pas à l’avance quand surviendra la fin de la boucle. On place une condition après le mot clé while, le programme évalue si cette condition est vraie, si elle est vraie il exécute un bloc d’instructions associé au while, à la fin de l’exécution de ce bloc d’instructions, le programme reboucle et teste à nouveau la condition, si elle est toujours vraie, il exécute à nouveau le bloc d’instructions et ainsi de suite. On peut donc dire que tant que la condition est évaluée vraie, il exécute le bloc d’instructions associé au « while »

    Exemple:

    votre_choix = input("voulez vous continuer? Répondre o pour oui et n pour non \n")
    while votre_choix == 'o':
        #début du bloc while
        print("vous avez choisi de continuer")
        votre_choix = input("voulez vous toujours continuer? Répondre o pour oui \n")
        #fin du bloc while
    
    #après le bloc while
    print("vous avez choisi de ne pas continuer, au revoir")        
    

    Le résultat:

les chaines de caractères

Un caractère alphanumérique est une des touches du clavier ou un caractère spécial ( c'est-à-dire un caractère d’une autre langue, un symbole mathématique, etc..) ; dans un code source python un caractère est entouré d’apostrophes simples 'b' ou doubles "b".


Un mot, ou une phrase, est appelé une chaîne de caractères en informatique, une chaîne de caractères est entouré d’apostrophes simples ou doubles.

L’écriture avec apostrophes permet de différencier le nom des variables et les chaines de caractères dans le code source.

Les chaines de caractères sont des objets de type string (str), le codage des bits est le codage des caractères « utf-8 » depuis la version 3 de python.

Exemples:

# La variable  c est assignée au caractère  b
c =  'b'  
# La variable b est assignée à la chaine de caractères "bonjour"
b = "bonjour"   # ou  b = 'bonjour'

Manipulation des chaines:

  • Position des caractères dans la chaine:

Chaque caractère d’une chaine est à une position dans la chaine ( il a un indice), le premier caractère est à l’indice 0, on accède à un caractère d’une chaîne avec la variable associée avec le code : nom_variable [indice]

Exemples:

a = "monjour"

print( a[0] )  # affiche m le premier caractère de la chaine

print( a[2] )  # affiche n le troisième caractère de la chaine

print ( a[1:4] ) # affiche onj ( affiche du caractère en position 1 inclus au caractère 4 exclus)

print (a[1:])  # affiche onjour ( affiche du caractère en position 1 inclus jusqu’à la fin de la chaîne)
  • Concaténation de caractères:

    Concaténer veut dire ajouter une chaine à une autre:

    Exemple 1

    chaine_1 = 'a'
    chaine_2 = 'b'
    # nouvelle_chaine est la concaténation de chaine_1 et chaine_2
    # vous devez remarquer que l'on utilise l'opérateur + pour concaténer
    nouvelle_chaine = chaine_1 + chaine_2
    print( nouvelle_chaine)
    

    Le résultat:

    Exemple 2

    chaine_1 = 'baba'
    chaine_2 = 'tata'
    # nouvelle chaine vide au départ
    nouvelle_chaine = ""
    # boucle pour i dans la plage 0 jusqu'à nombre de caractères de chaine_1 (exclu)
    for i in range(len(chaine_1)):
        '''à chaque itération nouvelle_chaine vaut son ancien contenu 
        concaténé avec le caractère en position i de chaine_1
        concaténé avec le caractère en position i de chaine_2'''
        nouvelle_chaine = nouvelle_chaine + chaine_1[i] + chaine_2[i]
    # après la boucle, on affiche la nouvelle chaine
    print(nouvelle_chaine)
    
    Le résultat:

les tableaux (listes)

A partir d'objets de type de base ( int, float, etc..) , on peut créer de nouveaux objets comme les tableaux. Un objet tableau est aussi appelé un objet liste en python, il permet de regrouper plusieurs éléments sous la forme d’une séquence ordonnée dans laquelle chaque élément est associée à un indice ( dit autrement chaque élément est à un emplacement numéroté et il y a un ordre, un premier élément, un second élement, etc.. ).

Création d'un tableau:

On définit une variable qui permettra de manipuler le tableau (la liste) et on lui assigne l'objet liste qui peut être vide ou contenir des éléments.

# Une liste vide associée à la variable tab
tab = [] 
# Une liste, qui contient 4 nombres, associée à la variable tab_2: 
tab_2 = [1, 2, 3, 8 ] 
Remarques: un objet liste se représente par deux crochets [ ]. Si la liste contient des éléments on les place entre les crochets séparés par des virgules ( comme pour tab_2).

Manipulation des tableaux (listes)

  • Connaitre le nombre d'éléments dans une liste : len(…)

    La fonction len(...) prend en argument (entre ses parenthèses) un objet de type list ou une variable associée à un objet list, elle renvoie le nombre d'éléments de cet objet. Dans le code ci-dessous, len(tab_2) renvoie le nombre d'éléments de tab_2 variable qui est associée à l'objet tableau [1, 2, 3, 8 ], la fonction renvoie son résultat en tant que deuxième argument du print("nombre éléments:", len( tab_2)):

     # Une liste, qui contient 4 nombres, associée à la variable tab_2: 
     tab_2 = [1, 2, 3, 8 ]
     # afficher le nombre d'éléments de tab_2
     print ( "nombre éléments:", len( tab_2) )  
    
    Le résultat:

  • Position des éléments dans une liste:

    Soit la liste : tab_2 = [1, 2, 3, 8 ], le premier élément dans la liste est à l'indice (ou position) 0 et le dernier est à l'indice
    len(tab_2) -1 = 3:

    On peut accèder à un élément d'une liste avec le nom de la variable associée à cette liste et son indice placé entre crochets, exemple:

    tab_2[0] vaut 1
    tab_2[2] vaut 3

  • Modification des éléments dans une liste

    Un objet liste est muable: on peut modifier son contenu

     # Une liste, qui contient 4 nombres, associée à la variable tab_2: 
     tab_2 = [1, 2, 3, 8 ]
     # On modifie l'élément à l'indice 3 avec le symbole d'affectation =
     tab_2[3] = 4
     print("les éléments du tableaux sont", tab_2)
    
    Le résultat:

  • Ajouter un élément en fin de liste:

    Méthode append(..)

    Une méthode est une fonction qui est associée à un objet, elle s'utilise avec l'opérateur " . " selon le principe:

    variable_associée_à_objet.methode(argument1, argument2, etc..)

    La méthode append(..) prend un seul argument qui est l'élément à ajouter en fin de liste, exemple:

    # Une liste, qui contient 3 nombres, associée à la variable tab_2: 
    tab_2 = [1, 2, 3]
    # On ajoute le nombre 4 en fin de tableau
    tab_2.append(4)
    print("les éléments du tableaux sont", tab_2)
    
    Le résultat:

  • Retirer un élément dans une liste:

    La méthode pop() sans argument retire et renvoie la valeur du dernier élément d'un objet liste, il faut une variable pour recueillir la valeur renvoyée:

    # Une liste, qui contient 3 nombres, associée à la variable tab_2: 
    tab_2 = [1, 2, 3]
    # On retire l'élément en fin de tableau
    valeur= tab_2.pop()
    print(f"l'élément retiré vaut {valeur}")
    print(f"il reste dans le tableau: {tab_2}")
    
    Le résultat:

    La méthode pop(...) peut prendre en argument l'indice d'un élément à retirer du tableau et renvoyer, il faut une variable pour recueillir la valeur renvoyée:

    # Une liste, qui contient 3 nombres, associée à la variable tab_2: 
    tab_2 = [1, 2, 3]
    # On retire l'élément en position 1 dans le tab_2
    valeur= tab_2.pop(1)
    print(f"l'élément retiré vaut {valeur}")
    print(f"il reste dans le tableau: {tab_2}")
    
    Le résultat:

  • Parcours des éléments dans une liste:

    • Avec une boucle, pour i dans la plage nombre éléments de la liste: for i in range (len(liste))

    liste = [1,2,'a','bonjour']
    # Pour i dans la plage 0 à len(liste) exclu
    for i in range (len(liste)) :
        # affichage de i et de la valeur de l'élément (liste[i]) 
        print(f"l'élément à la position {i} vaut", liste[i] )
    
    Le résultat:


    • Avec un itérateur, pour chaque element dans tableau: for e in liste
    liste = [1,2,'a','bonjour']
    # Pour chaque élément e de liste
    for e in liste :
        # affichage de l'élément e 
        print(f" à cette itération l'élément vaut {e} ")
    

    Le résultat:

  • Vérifier la présence d'un élément dans une liste

    On peut vérifier la présence d'un élément dans une liste avant de chercher sa position avec un test if element in liste:

    tab_2 = [ 2, 8, 3]
    nombre = int(input("entrez une nombre: "))
    # si le nombre saisi au clavier est dans le tableau
    if nombre in tab_2:
        print( "le nombre est bien dans le tableau")
    #sinon
    else:
        print( f"désolé {nombre} n'est pas dans le tableau")
    

    Le résultat:

  • Connaitre la position d'un élément dans une liste: méthode index(..)

    la Méthode liste.index(element) permet de savoir à quelle position est élément dans liste:

    tab_2 = [ 2, 8, 3]
    nombre = int(input("entrez une nombre: "))
    # si le nombre saisi au clavier est dans le tableau
    if nombre in tab_2:
        # affichage de la position de nombre dans tab_2
        print( "le nombre est dans le tableau, à la position:", tab_2.index(nombre))
    else:
        print( f"désolé {nombre} n'est pas dans le tableau")
    

    Le résultat:

les fonctions

Une fonction est un bloc de code auquel on donne un nom.
Vous avez déjà utilisé des fonctions comme print(…) ou input(…). Ces dernières sont assez simples à manipuler pour plusieurs raisons :
- elles portent un nom simple qui indique bien à quoi elles servent ;
- elles prennent des arguments entre para=enthèses qui permettent de varier la manière dont on les utilise ;
- on n’a pas besoin de savoir comment elles sont écrites, juste ce qu’elles vont faire.

  • Créer sa propre fonction:

    Il est important de différentier le déclaration dans laquelle on précise le bloc de code qui sera inclus dans la fonction et l’utilisation de la fonction qui nous permettra de l’utiliser dans nos programmes.

    Analogie avec les fonctions en mathématiques:
    supposons que vous vouliez coder en python la fonction mathématique:
    f(x) = 2x + 3, cette fonction s'appelle f, elle prend en argument une variable appelée x et elle renvoie la valeur de x multipliée par 2 auquel on ajoute 3. Par exemple: f(2) renvoie 7.

    La déclaration en python:
    On déclare une fonction avec le mot clé def, suivi du nom de la fonction suivi de deux parenthèses '( )' puis de ":" ce qui signale qu'on ouvre une bloc, le bloc de code qui appartient à la fonction commence à la ligne suivante et il est indenté (décalé de 4 espaces). Si la fonction prend des arguments, dans la défnition on les représente par des variables séparées par des virgules.

    Pour notre exemple la déclaration commence par: def f(x):

    Le boc de code peut être:
    y = 2*x + 3

    Exeplication: on a défini une variable y qui est assignée avec le résultat du calcul de la valeur de x multipliée par 2 auquel on ajoute 3, la valeur de y dépend de la valeur donnée à x lors de l'utilisation de la fonction

    Ensuite, il faut que la fonction renvoie la valeur de y, on utilise pour ça le mot clé return, ici return y

    Voici la définition finale de la fonction:

    def f(x):
        y = 2*x + 3
        return y
    
    Utilisation: une fois déclarée la fonction est utilisée en donnant des valeurs à x
    Il faut prévoir une variable qui recueille la renvoyée par la fonction (ici la fonction renvoie la valeur de y), exemples:

    def f(x):
        y = 2*x + 3
        return y
    # utilisation1: pour x = 2, la variable resultat recupère la valeur renvoyée par la fonction:
    resultat = f(2)
    print(f"la valeur de f(2) vaut {resultat}" )
    
    # utilisation2: pour x = 4 mais en passant par la variable intermédiaire a:
    a = 4
    resultat = f(a)
    print(f"la valeur de f({a}) vaut {resultat}" )
    

    Le résultat:

    On peut rendre notre fonction plus générique en donnant la possibilité de changer ce qui est multiplié et ajouté à x.
    La fonction prend maintenant trois arguments que l'on représente par des variables séparées par des virgules:

    # définition
    def f(x,a,b):
        # y vaut a fois x plus b
        # x, a et b sont des variables définies lors de l'utilisation de la fonction
        y = a*x + b
        return y
    
    # utilisation 1 : x=2, a=3, b=4
    # resultat vaut y qui vaut 3*2 + 4 = 10
    resultat = f(2,3,4)
    # utilisation 2 : resultat vaut y qui vaut 4*2 + 0 = 8
    resultat = f(2,4,0)