Mini-projets algorithmique, corrigé TP KNN, news, notebooks IA

This commit is contained in:
2026-07-07 10:57:59 +02:00
parent 1647035df2
commit 5a6d602a91
51 changed files with 3614 additions and 33 deletions

View File

@@ -0,0 +1,41 @@
# Projet 01 — Le Nombre Mystère
# Algorithme : Recherche dichotomique
def devine():
"""
L'ordinateur devine le nombre auquel pense l'utilisateur
en utilisant la recherche dichotomique.
"""
print("=== Le Nombre Mystère ===")
print("Pense à un nombre entre 1 et 100 (sans le dire !)")
print("Réponds avec : < (trop grand), > (trop petit), = (trouvé !)")
print()
gauche = 1
droite = 100
nb_essais = 0
while gauche <= droite:
milieu = (gauche + droite) // 2
nb_essais += 1
reponse = input(f"Essai {nb_essais} — Est-ce que ton nombre est {milieu} ? ")
if reponse == "=":
print(f"Trouvé ! C'était bien {milieu}, en {nb_essais} essai(s) !")
return
elif reponse == "<":
# TODO : le nombre cherché est plus petit que milieu
# Que faut-il modifier ? gauche ou droite ?
pass
elif reponse == ">":
# TODO : le nombre cherché est plus grand que milieu
pass
else:
print("Réponse invalide, utilise <, > ou =")
print("Je n'ai pas trouvé... tu as peut-être changé de nombre !")
# --- Programme principal ---
devine()

View File

@@ -0,0 +1,44 @@
# 01 — Le Nombre Mystère
**Algorithme :** Recherche dichotomique
**Difficulté :** Facile
**Durée estimée :** 45 min — 1h
---
## Contexte
Vous pensez à un nombre entre 1 et 100. L'ordinateur doit le deviner le plus vite possible en posant des questions.
À chaque essai, vous répondez :
- `<` si votre nombre est **plus petit** que la proposition
- `>` si votre nombre est **plus grand**
- `=` si c'est **le bon nombre**
L'ordinateur utilise la **recherche dichotomique** : à chaque question, il coupe l'intervalle possible en deux.
---
## Étapes
### Étape 1 — Comprendre la stratégie
Sans coder, répondez sur papier : si le nombre est entre 1 et 100, quelle est la première proposition optimale ? Pourquoi ?
### Étape 2 — Implémenter `devine()`
Complétez la fonction `devine()` dans `starter.py` :
- L'ordinateur part de `gauche = 1` et `droite = 100`
- Il propose `milieu = (gauche + droite) // 2`
- Selon la réponse, il réduit l'intervalle
- Il compte le nombre d'essais
### Étape 3 — Tester
Lancez le programme et jouez plusieurs parties. Vérifiez que l'ordinateur trouve toujours en **7 essais maximum**.
### Étape 4 — Extension (si vous avez le temps)
Ajoutez une deuxième version où **c'est vous** qui devez deviner le nombre de l'ordinateur. L'ordinateur choisit un nombre aléatoire (`random.randint(1, 100)`), et le programme vous dit si vous êtes trop grand ou trop petit. Comptez vos essais et comparez avec le maximum optimal.
---
## Ce que vous devez rendre
- Le programme qui fonctionne
- La réponse à la question : pourquoi 7 essais suffisent toujours pour 100 nombres ?