Ch. 01 · Leçon 4
Fonctions prédéfinies : arithmétiques et chaînes
Ce que vous saurez faire
- Identifier les principales fonctions prédéfinies arithmétiques et sur chaînes
- Utiliser les fonctions du module math et les méthodes de chaîne en Python 3
- Choisir la fonction la plus appropriée pour un traitement donné
- Combiner plusieurs fonctions prédéfinies dans un algorithme cohérent
Plan de cours
Ne réinventez pas la roue : 20 fonctions à connaître par cœur
Le langage met à votre disposition des fonctions prêtes à l'emploi pour les opérations courantes : racine carrée, arrondi, longueur d'une chaîne, conversion majuscule/minuscule… Les ignorer, c'est perdre du temps et introduire des bugs.
Concepts clés
- Une fonction prédéfinie est disponible immédiatement, sans avoir à l'écrire.
- Les fonctions arithmétiques essentielles :
ABS,RACINE,CARRE,TRONC,ARRONDI,ALEA,MOD,DIV. - Les fonctions sur chaînes essentielles :
LONG,MAJUS,MINUS,SOUS-CHAÎNE,POSITION,CONCAT. - En Python, certaines sont natives (
len,abs), d'autres dans le modulemath(à importer).
Avant de commencer
- Q1. Comment obtenez-vous la racine carrée de 16 en Python ?
- Q2. Quelle est la longueur de la chaîne
"informatique"? - Q3. Que retourne
ABS(-7)?
1. Le contenu du cours
1.1 Pourquoi des fonctions prédéfinies ?
Considérez deux versions du même code :
# Version 1 — sans fonction prédéfinie
x = -3.7
if x < 0:
val_abs = -x
else:
val_abs = x
# Version 2 — avec abs()
val_abs = abs(-3.7)
La version 2 est plus courte, plus lisible et plus rapide. Voilà toute la raison d'être des fonctions prédéfinies.
1.2 Fonctions arithmétiques
| Analyse | Python 3 | Description | Exemple |
|---|---|---|---|
ABS(x) | abs(x) | Valeur absolue | abs(-7) → 7 |
RACINE(x) | math.sqrt(x) | Racine carrée | math.sqrt(16) → 4.0 |
CARRE(x) | x ** 2 ou x * x | Carré | 5 ** 2 → 25 |
TRONC(x) | int(x) ou math.trunc(x) | Partie entière (tronquée) | int(3.7) → 3 |
ARRONDI(x) | round(x) | Arrondi au plus proche | round(3.5) → 4 |
ALEA(a, b) | random.randint(a, b) | Entier aléatoire dans [a, b] | random.randint(1, 6) → un dé |
x MOD y | x % y | Reste de division entière | 17 % 5 → 2 |
x DIV y | x // y | Quotient de division entière | 17 // 5 → 3 |
Exemple complet — Distance entre deux points
import math
x1, y1 = 1.0, 2.0
x2, y2 = 4.0, 6.0
distance = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
print("Distance =", round(distance, 2)) # 5.0
1.3 Fonctions sur chaînes de caractères
| Analyse | Python 3 | Description | Exemple |
|---|---|---|---|
LONG(ch) | len(ch) | Longueur de la chaîne | len("bac") → 3 |
MAJUS(ch) | ch.upper() | Conversion en majuscules | "abc".upper() → "ABC" |
MINUS(ch) | ch.lower() | Conversion en minuscules | "ABC".lower() → "abc" |
SOUS-CHAÎNE(ch, d, n) | ch[d:d+n] | Extraire n caractères à partir de d | "informatique"[0:5] → "infor" |
POSITION(ch, sous) | ch.find(sous) | Position de sous dans ch (ou -1) | "abcdef".find("cd") → 2 |
CONCAT(ch1, ch2) | ch1 + ch2 | Concaténation | "info" + "matique" → "informatique" |
CONVERTIR(ch) | int(ch) ou float(ch) | Chaîne → nombre | int("42") → 42 |
CHAÎNE(n) | str(n) | Nombre → chaîne | str(42) → "42" |
1.4 Combiner plusieurs fonctions
Exemple — Vérifier si un mot est un palindrome
mot = input("Mot : ").lower() # ignorer la casse
inverse = mot[::-1] # inversion par slicing
if mot == inverse:
print("Palindrome")
else:
print("Non palindrome")
Tests : kayak, radar, bonjour → palindrome, palindrome, non palindrome.
1.5 Trace — Compter les voyelles d'un mot
mot = "informatique"
voyelles = "aeiouyAEIOUY"
nb = 0
for c in mot:
if c in voyelles:
nb = nb + 1
print(f"{mot} contient {nb} voyelles")
| N° | Instruction | c | nb |
|---|---|---|---|
| 01 | ··· | ? | ? |
| 02 | ··· | ? | ? |
| 03 | ··· | ? | ? |
| 04 | ··· | ? | ? |
| 05 | ··· | ? | ? |
| 06 | ··· | ? | ? |
2. Exercices pratiques
Niveau Débutant — Type bac courant
Lire le rayon d'un cercle et afficher son périmètre (2 × π × r) et son aire (π × r²), arrondis à 2 décimales.
Voir le corrigé
import math
r = float(input("Rayon : "))
perimetre = 2 * math.pi * r
aire = math.pi * r ** 2
print("Périmètre =", round(perimetre, 2))
print("Aire =", round(aire, 2))
Test avec r = 5 : Périmètre = 31.42, Aire = 78.54.
Astuce. math.pi est plus précis que 3.14. Utilisez-le systématiquement.
Niveau Intermédiaire — Type bac difficile
Lire un nom complet (ex. "Salma Trabelsi Ben Ali") et afficher uniquement les initiales en majuscules séparées par des points, par exemple "S.T.B.A.".
Voir le corrigé
nom_complet = input("Nom complet : ")
mots = nom_complet.split() # découpe sur les espaces
initiales = ""
for mot in mots:
if len(mot) > 0:
initiales = initiales + mot[0].upper() + "."
print("Initiales :", initiales)
Décomposition.
split()sans argument découpe sur les espaces et ignore les espaces multiples.- Pour chaque mot, on prend
mot[0](la première lettre, indice 0), on la passe en majuscule avec.upper(), on ajoute un..
Test mental avec "Salma Trabelsi" (2 espaces) → ["Salma", "Trabelsi"] → "S.T.".
Niveau Avancé — Hors bac (bonus)
Écrire un programme qui lit un mot de passe et le valide selon les règles :
- Longueur entre 8 et 16 caractères inclus,
- Contient au moins une majuscule,
- Contient au moins une minuscule,
- Contient au moins un chiffre,
- Ne contient aucun espace.
Afficher "Valide" ou la liste des règles violées.
Voir le corrigé
mdp = input("Mot de passe : ")
# Drapeaux (flags)
bonne_longueur = 8 <= len(mdp) <= 16
a_majuscule = False
a_minuscule = False
a_chiffre = False
pas_espace = True
for c in mdp:
if c.isupper():
a_majuscule = True
elif c.islower():
a_minuscule = True
elif c.isdigit():
a_chiffre = True
if c == " ":
pas_espace = False
# Construction du message
problemes = []
if not bonne_longueur:
problemes.append(f"Longueur invalide ({len(mdp)} caractères, attendu 8-16)")
if not a_majuscule:
problemes.append("Manque une majuscule")
if not a_minuscule:
problemes.append("Manque une minuscule")
if not a_chiffre:
problemes.append("Manque un chiffre")
if not pas_espace:
problemes.append("Contient un espace interdit")
if len(problemes) == 0:
print("Valide")
else:
print("Invalide :")
for p in problemes:
print(" - " + p)
Cas de test :
| Entrée | Sortie attendue |
|---|---|
"Bac2026!" | Valide |
"motdepasse" | Manque majuscule, manque chiffre |
"Bac 2026" | Contient un espace |
"A1b" | Longueur invalide (3 < 8) |
Concept-clé : les drapeaux. Quand vous voulez détecter « au moins un » de quelque chose, initialisez un drapeau à False, mettez-le à True dès qu'une occurrence est trouvée. Ne sortez pas de la boucle (break) si vous devez détecter plusieurs types : laissez-la s'exécuter entièrement.
Méthodes Python utilisées :
c.isupper(),c.islower(),c.isdigit()→ tests booléens sur un caractèrelen(mdp)→ longueur de la chaîne- f-string
f"...{var}..."→ formatage moderne (Python 3.6+)
⚠️ Erreurs fréquentes au bac
Avant le quiz, mémorisez ces pièges classiques qui font perdre des points :
- Erreur 1. Oublier
import mathouimport randomavant d'utilisersqrt,floor,randint. LèveNameError. - Erreur 2.
int("12.5")lève ValueError. Il faut d'abordfloat("12.5")puisint(...). - Erreur 3. Confondre
math.floor(x)(vers le bas) etint(x)(tronque vers 0). Pourx = -3.7: floor = -4, int = -3. - Erreur 4.
random.randint(a, b)inclut b, contrairement àrange(a, b)qui l'exclut. Source de hors-bornes classiques.
3. Quiz de vérification
Fonctions prédéfinies (5 questions)
Que retourne abs(-3.5) en Python ?
Pour utiliser math.sqrt, il faut :
Quelle est la longueur de la chaîne 'bac' ?
Quel est le premier indice valide pour 'informatique'[?] en Python ?
Que retourne 'Hello'.upper() ?
En résumé
Avant de passer au chapitre 2 (Structures de contrôle II), vérifiez que vous savez :
- ✅ Identifier la fonction prédéfinie correspondant à un besoin (sans réécrire le code à la main),
- ✅ Importer le module
mathourandomquand nécessaire, - ✅ Manipuler une chaîne par indice et par méthode (
upper(),len(),find()), - ✅ Combiner 3+ fonctions dans un même algorithme.
Ces fonctions sont le vocabulaire de base : impossibles à éviter au bac, présentes dans tous les sujets.