Python — Exercices Débutant & Intermédiaire (Corrections sans input)

Python — Exercices Débutant & Intermédiaire

Même énoncés, mais corrections sans input() : on teste avec print(fonction(valeur)), listes d’exemples, etc.

Objectif : variables, I/O, fonctions simples, calculs, conditions, boucles. Corrections = fonctions + tests.

Entrées/SortiesNiveau : 1

1) Dire bonjour par le prénom

Demande le prénom et affiche Bonjour <prénom>!
Indice
  • Utiliser la fonction input(nom) qui renvoie la chaîne.
def aff(nom):
		...
    return ...
print(aff("Ali"))
print(aff("Sofia"))
CalculNiveau : 1

2) Somme de deux nombres

Calcule et affiche la somme de deux nombres.
Indice
  • Écris somme(a,b).
def somme(a,b):
    return a + b
print(somme(2,3))
print(somme(10.5,1.5))
FonctionNiveau : 1

3) Celsius → Fahrenheit (fonction)

Écris c2f(c) et teste-la.
Indice
  • F = 9/5 × C + 32
def c2f(c):
    return 9/5*c + 32
print(c2f(0))
print(c2f(100))
Conditions

4) Pair ou impair

Affiche “pair” ou “impair”.
Indice
  • pair_ou_impair(n) → chaîne.
def pair_ou_impair(n):
    return "pair" if n % 2 == 0 else "impair"
print(pair_ou_impair(4))
print(pair_ou_impair(7))
Calcul

5) Aire d’un rectangle

Aire = L × l
Indice
  • aire(L,l) → nombre.
def aire(L,l):
    return L*l
print(aire(5,3))
print(aire(10.2,4))
Conditions

6) Plus grand de trois nombres

Affiche le maximum de trois valeurs.
Indice
  • max3(a,b,c) ou max().
def max3(a,b,c):
    return max(a,b,c)
print(max3(3,8,5))
print(max3(-2,-7,-1))
Fonction

7) Valeur absolue (sans abs)

Implémenter val_abs(x).
Indice
  • Si x < 0 → -x.
def val_abs(x):
    return -x if x < 0 else x
print(val_abs(-5))
print(val_abs(3.2))
Conditions

8) Mini calculatrice (+, -, *, /)

Calcule selon l’opérateur.
Indice
  • calc(a,op,b).
def calc(a,op,b):
    if op == "+": return a+b
    if op == "-": return a-b
    if op == "*": return a*b
    if op == "/": return a/b
    return None
print(calc(7,"+",5))
print(calc(10,"/",4))
Boucle · for

9) Table de multiplication de n (1 à 10)

Affiche la table de n.
Indice
  • Retourne une liste de produits.
def table(n):
    return [n*i for i in range(1,11)]
print(table(7))
print(table(3))
Boucle · while

10) Compte à rebours

Affiche n, n-1, …, 0.
Indice
  • Construire une liste décroissante.
def countdown(n):
    out = []
    while n >= 0:
        out.append(n)
        n -= 1
    return out
print(countdown(5))
Boucles

11) Somme de 1 à n

Calcule 1+2+…+n.
Indice
  • Accumulateur.
def somme_1_a_n(n):
    s, i = 0, 1
    while i <= n:
        s += i
        i += 1
    return s
print(somme_1_a_n(10))
Fonction

12) Factorielle (fonction)

Écris fact(n).
Indice
  • Produit de 1 à n.
def fact(n):
    r, i = 1, 2
    while i <= n:
        r *= i
        i += 1
    return r
print(fact(0))
print(fact(5))
Chaînes

13) Compter les voyelles

Nombre de voyelles dans un texte.
Indice
  • Tester l’appartenance à "aeiouy".
def compte_voyelles(s):
    v = "aeiouy"
    c = 0
    for ch in s.lower():
        if ch in v:
            c += 1
    return c
print(compte_voyelles("Bonjour"))
print(compte_voyelles("rhythmes"))
Chaînes

14) Inverser une chaîne (slicing)

Retourner s[::-1].
Indice
  • Une ligne suffit.
def inverse(s):
    return s[::-1]
print(inverse("abcd"))
print(inverse("radar"))
Conditions · Fonction

15) Année bissextile (fonction)

Règle 4/100/400.
Indice
  • Écris est_bissextile(a).
def est_bissextile(a):
    if a % 400 == 0: return True
    if a % 100 == 0: return False
    return a % 4 == 0
print(est_bissextile(2000))
print(est_bissextile(1900))
print(est_bissextile(2024))

Renforcement boucles/conditions/chaînes/algos. Corrections refactorées en fonctions + jeux de tests.

Boucles · whileNiveau : intermédiaire

1) Table de 7 avec astérisque sur les multiples de 3

Affiche 20 termes de la table de 7 et “*” après chaque multiple de 3.
Indice
  • Pas d’entrée utilisateur ici.
def table7_marques():
    i = 1
    out = []
    while i <= 20:
        t = i * 7
        out.append(str(t) + (" *" if t % 3 == 0 else ""))
        i += 1
    return " ".join(out)
print(table7_marques())
Boucles · while

2) Conversion € → $CA

Conversier des euros en dollars Canadiens.
Indice
  • Construire une liste de lignes.
def euro_ca():
    ...
    ...
    return ...
print(euro_ca())
Boucles · while

3) Suite ×3 (12 termes)

Départ 1, multiplier par 3 douze fois.
Indice
  • Retourne la liste.
def suite_triple():
    a, c, out = 1, 0, []
    while c < 12:
        out.append(a)
        a *= 3
        c += 1
    return out
print(suite_triple())
Entrées · while

4) Calcul TTC jusqu’à 0 (refactor)

Taux 19,6%.
Indice
  • ttc(prix) + tests.
def ttc(prix):
    return round(prix * 1.196, 2)
print(ttc(10))
print(ttc(99.9))
Boucles · while

5) Somme de positifs & combien > 100 (sentinelle ≤ 0)

Traite une séquence jusqu’au premier ≤ 0.
Indice
  • stats(seq) retourne (somme,total,grands).
def stats(seq):
    somme = total = grands = 0
    for x in seq:
        if x <= 0:
            break
        somme += x
        total += 1
        if x > 100:
            grands += 1
    return somme, total, grands
print(stats([10, 200, 5, 0, 999]))
print(stats([101, 100, 1, -7]))
Boucles · while

6) Riz sur l’échiquier

Double à chaque case, 1..64.
Indice
  • Retourne des tuples (case, grains).
def riz_echiquier():
    n, g, out = 1, 1, []
    while n <= 64:
        out.append((n, g))
        n, g = n + 1, g * 2
    return out
print(riz_echiquier()[:8])
Comptage

7) Compter les pairs de 1 à N

Retourne le nombre de pairs.
Indice
  • nb_pairs(N).
def nb_pairs(N):
    i = 1
    c = 0
    while i <= N:
        if i % 2 == 0:
            c += 1
        i += 1
    return c
print(nb_pairs(10))
print(nb_pairs(11))
Jeu

8) Devine le nombre (simulation de partie)

Transforme en fonction déterministe.
Indice
  • guess_count(target, guesses) renvoie le nombre d’essais jusqu’au bon nombre.
def guess_count(target, guesses):
    tries = 0
    for g in guesses:
        tries += 1
        if g == target:
            return tries
    return None  # pas trouvé
print(guess_count(42, [50, 25, 40, 42]))
print(guess_count(7, [3, 5, 9]))
Nombres

9) Nombre de chiffres

Compte les chiffres d’un entier naturel.
Indice
  • nb_chiffres(n).
def nb_chiffres(n):
    if n == 0:
        return 1
    c = 0
    while n > 0:
        c += 1
        n //= 10
    return c
print(nb_chiffres(0))
print(nb_chiffres(12345))
Algorithme

10) PGCD (Euclide)

Fonction PGCD.
Indice
  • pgcd(a,b).
def pgcd(a,b):
    while b != 0:
        a, b = b, a % b
    return a
print(pgcd(54,24))
print(pgcd(1071,462))
Tests

11) Nombre premier ?

Affiche “Oui”/“Non”.
Indice
  • est_premier(n).
def est_premier(n):
    if n < 2:
        return False
    d = 2
    while d * d <= n:
        if n % d == 0:
            return False
        d += 1
    return True
print(est_premier(2), est_premier(15), est_premier(17))
Suites

12) n premiers Fibonacci

Retourne une liste.
Indice
  • fib(n) → liste.
def fib(n):
    a, b = 0, 1
    out = []
    i = 0
    while i < n:
        out.append(a)
        a, b = b, a + b
        i += 1
    return out
print(fib(7))
Chaînes

13) Inverser une chaîne (sans slicing)

Sans [::-1].
Indice
  • Parcours depuis la fin.
def inverse_no_slice(s):
    i = len(s) - 1
    r = ""
    while i >= 0:
        r += s[i]
        i -= 1
    return r
print(inverse_no_slice("Python"))
print(inverse_no_slice("radar"))
Sommes

14) Somme des multiples de 3 ou 5 < N

Retourne la somme.
Indice
  • sum_multiples(N).
def sum_multiples(N):
    i, s = 1, 0
    while i < N:
        if i % 3 == 0 or i % 5 == 0:
            s += i
        i += 1
    return s
print(sum_multiples(10))
print(sum_multiples(100))
Bases

15) Décimal → binaire (sans bin)

Conversion manuelle.
Indice
  • dec2bin(n).
def dec2bin(n):
    if n == 0:
        return "0"
    bits = ""
    while n > 0:
        bits = str(n % 2) + bits
        n //= 2
    return bits
print(dec2bin(0))
print(dec2bin(13))
print(dec2bin(255))

Astuce : les boutons “Copier” placent le code dans votre presse-papiers.