DM - Les fonctions : Langage de programmation Python

N.B. Niveau : Première Générale, enseignement de spécialité NSI (Numérique et Sciences Informatiques)

 

D
É
C
O
N
N
E
C
T
É

Exercices NSI - Les fonctions

Exercice 1 : Rechercher le maximum d'une liste

Écrire la fonction maximum, prenant en paramètre un tableau nombres tab et renvoyant le plus grand élément de ce tableau. La liste tab doit contenir au moins un élément.

Exemple

>>> maximum([5, -10, 15, 3])
15
>>>maximum([])
AssertionError: La liste ne doit pas être vide

Code Python :


        

Exercice 2 : Rechercher l'indice du nombre le plus petit d'une liste

Écrire la fonction indice_mini, prenant en paramètre un tableau nombres liste et renvoyant l'indice du plus petit élément de ce tableau.

Exemples

>>> indice_mini([5, -10, 15, 3])
1
>>> indice_mini([5, -10, -33, 15, -33])
2
>>> indice_mini([])
AssertionError: La liste ne doit pas être vide

Code Python :


        

Exercice 3 : Ajouter et supprimer des éléments d'une liste.

Écrire deux fonctions ajouter et supprimer, prenant en paramètre un tableau nombres tab et un nombre nbr et renvoyant une liste contenant l'élément ajouté ou supprimé.

L'utilisation des méthodes append et remove est proscrite.

  • L'élément s'ajoute toujours à la fin de la liste,
  • Si le nomnre à supprimer appraraît plusieur fois dans la liste, on ne supprime que le premier.
  • Exemples

    >>> liste = [1,6,5,6]
    
    >>> ajouter(liste,7)	# ajoute 7 à la fin de la liste
    [1, 6, 5, 6, 7]
    
    >>> supprimer(liste,0)	# retourne la même liste de car 0 ne s'y trouve pas
    [1, 6, 5, 6]
    
    >>> ajouter(liste,0)	# ajoute 7 à la fin de la liste
    [1, 6, 5, 6, 0]
    
    >>> supprimer(liste,6)
    [1, 5, 6]

    Remarque : il la liste n'a pas d'effet de bord. Mais attention tab+=... a un effet de bord.

    Code Python :

    
            

Exercice 4 : ajouter ou supprimer un élément à l'endroit choisi.

Écrire deux fonctions ajouter_nbr_indice et supprimer_indice, prenant en paramètre un tableau nombres tab , un nombre nbr (pour la fonction ajouter_nbr_indice), un indice i et renvoyant une liste comprenant le contenu du nouveau tableau modifié.

L'utilisation des méthodes append et remove est proscrite.

L'indice ne doit pas dépasser la taille du de la liste et doit être positif ou nul.

Pas d'effet de bord.

Exemples

>>> liste = [1,6,5,6]
>>> ajouter_nbr_indice(liste,10,4)
[1, 6, 5, 6, 10]
>>> supprimer_indice(liste,1)
[1, 5, 6]

Ajouter les lignes de code permettant également de tester les erreurs d'assertion lorsque l'indice n'est pas valide et d'ajouter et supprimer des éléments aux indices maxi et mini.

Code Python :


        

Exercice 5 : Palindromes

Un palindrome est un mot qui se lit dans les deux sens, comme kayak, été, Ressasser ...

Ecrire une fonction est_palindrome qui retourne True si le mot passé en paramètre est un palindrome sinon elle retourne False.

Exemple

>>>est_palindrome("pop")
True

>>>est_palindrome("papa")
False

>>>est_palindrome("kayak")
True
  • Créér une variable chaine_inverse vide au départ pour construire progressivement le mot inversé.
  • Avec une boucle for décrémentante on lit les lettres depuis la dernière lettre à la première.
  • On compare la chaine_inverse au mot puis on retourne le résultat.

Code Python :


        

Exercice 6 : tableau trié

Programmer la fonction verifie qui prend en paramètre un tableau de valeurs numériques non vide et qui renvoie True si ce tableau est trié dans l’ordre croissant, False sinon.

Un tableau vide est considéré comme trié.

Exemples :

>>> verifie([0, 5, 8, 8, 9])
True
>>> verifie([8, 12, 4])
False
>>> verifie([-1, 4])
True
>>> verifie([])
True
>>> verifie([5])
True

Code Python :


        

Exercice 7 : conversion booléen entier

On considère dans cet exercice une représentation binaire d’un entier non signé en tant que tableau de booléens.

Si
tab = [True, False, True, False, False, True, True]

est un tel tableau, alors l’entier qu’il représente est 2**6 + 2**4 + 2**1 + 2**0 = 83.. Cette représentation consistant à placer en premier le booléen indiquant la puissance la plus élevée de 2 est dite big-endian ou grand-boutiste.

Écrire une fonction gb_vers_entier qui prend en paramètre un tel tableau et renvoie l’entier qu’il représente.

exemple :

>>> gb_vers_entier([])
0
>>> gb_vers_entier([True])
1
>>> gb_vers_entier([True, False, True,False, False, True, True])
83
>>> gb_vers_entier([True, False, False, False,False, False, True, False])
130

Code Python :


        

Exercice 8 : Moyenne pondérée

Dans cet exercice on cherche à calculer la moyenne pondérée d’un élève dans une matière donnée. Chaque note est associée à un coefficient qui la pondère.

Par exemple, si ses notes sont : 14 avec coefficient 3, 12 avec coefficient 1 et 16 avec coefficient 2, sa moyenne pondérée sera donnée par

Écrire une fonction moyenne :

  • qui prend en paramètre une liste notes non vide de tuples à deux éléments entiers de la forme (note, coefficient) (int ou float) positifs ou nuls ;
  • et qui renvoie la moyenne pondérée des notes de la liste sous forme de flottant si la somme des coefficients est non nulle, None sinon.

Exemples :

>>> moyenne([(8, 2), (12, 0), (13.5, 1), (5, 0.5)])
9.142857142857142
>>> moyenne([(3, 0), (5, 0)])
None

Code Python :


        

Exercice 9 : Nombre de répétitions

Écrire une fonction python appelée nb_repetitions qui prend en paramètres un élément elt et une liste tab (type list) d’éléments du même type et renvoie le nombre de fois où l’élément apparaît dans la liste.

Exemples

>>> nb_repetitions(5,[2,5,3,5,6,9,5])
3
>>> nb_repetitions('A',[ 'B', 'A', 'B', 'A', 'R'])
2
>>> nb_repetitions(12,[1,'!',7,21,36,44])
0

Code Python :


        

Exercice 10 : OU Exclusif

L'opérateur « ou exclusif » entre deux bits renvoie 0 si les deux bits sont égaux et 1 s'ils sont différents. Il est symbolisé par le caractère ^. :

Ansi :

  • 0 ^ 0 = 0
  • 0 ^ 1 = 1
  • 1 ^ 0 = 1
  • 1 ^ 1 = 0

Écrire une fonction ou_exclusif qui prend en paramètres deux tableaux de 0 ou de 1 de même longueur et qui renvoie un tableau où l’élément situé à position i est le résultat, par l’opérateur « ou exclusif », des éléments à la position i des tableaux passés en paramètres.

Exemples

>>> ou_exclusif([1, 0, 1, 0, 1, 1, 0, 1], [0, 1, 1, 1, 0, 1, 0, 0])
[1, 1, 0, 1, 1, 0, 0, 1]
>>> ou_exclusif([1, 1, 0, 1], [0, 0, 1, 1])
[1, 1, 1, 0]

Code Python :


        

Exercice 11 : a doublon

Écrire une fonction a_doublon qui prend en paramètre une liste triée de nombres dans l’ordre croissant et renvoie True si la liste contient au moins deux nombres identiques, False sinon.

Vérifier la précondition du tableau trié par ordre croissant grâce à la fonction de l'exercice 6 qu'il faudra copier-coller.

Exemples :

>>> a_doublon([])
False
>>> a_doublon([1])
False
>>> a_doublon([1, 2, 4, 6, 6])
True
>>> a_doublon([2, 5, 7, 7, 7, 9])
True
>>> a_doublon(["a", "b", "b"]
True
a_doublon(["a", "b", "a"])
AssertionError: Le tableau doit être trié par ordre croissant

Code Python :


        

Exercice 12 : maximum de like

Sur le réseau social TipTop, on s’intéresse au nombre de « like » des abonnés. Les données sont stockées dans des dictionnaires où les clés sont les pseudos et les valeurs correspondantes sont les nombres de « like » comme ci-dessous :

{'Bob': 102, 'Ada': 201, 'Alice': 103, 'Tim': 50}

On remarque que les likes seront toujours positifs ou nuls.

Écrire une fonction max_dico qui :

  • Prend en paramètre un dictionnaire dico non vide dont les clés sont des chaînes de caractères et les valeurs associées sont des entiers ;
  • Renvoie un tuple dont :
    • La première valeur est la clé du dictionnaire associée à la valeur maximale ;
    • La seconde valeur est la première valeur maximale présente dans le dictionnaire.
  • Exemples

    >>> max_dico({'Bob': 102, 'Ada': 201, 'Alice': 103, 'Tim': 50})
    ('Ada', 201)
    >>> max_dico({'Alan': 222, 'Ada': 201, 'Eve': 220, 'Tim': 50})
    ('Alan', 222)

    Code Python :

    
            

Fond :  Texte :  Tables :  Thème du langage: