# 🧬 Exercices Python pour Biologistes
**[Thème : listes, tuples, range, boucles for et while]**
## 🧪 Exercice 1 — Générateur de séquences ADN
**Objectif :**
Créer une séquence ADN aléatoire de longueur donnée.
**Énoncé :**
Demandez à l’utilisateur la longueur d’une séquence d’ADN, puis générez une séquence contenant uniquement les bases `A`, `T`, `C`, `G`.
Utilisez une **liste** pour stocker les bases et une **boucle for** pour construire la séquence.
**Exemple de sortie :**
```
Longueur de la séquence : 10
Séquence générée : ATGCTAGTCA
```
<details>
<summary>✅ Correction</summary>
```python
import random
bases = ['A', 'T', 'C', 'G']
longueur = int(input("Longueur de la séquence : "))
sequence = []
for i in range(longueur):
sequence.append(random.choice(bases))
print("Séquence générée :", ''.join(sequence))
```
</details>
---
## 🐍 Exercice 2 — Le serpent affamé
**Objectif :**
Utiliser une **boucle while** pour vider une liste.
**Énoncé :**
Un serpent se promène dans la jungle et mange les animaux qu’il trouve.
Les animaux sont dans une liste : `['grenouille', 'souris', 'oiseau', 'lapin']`.
Le serpent mange un animal à la fois jusqu’à ce qu’il n’en reste plus.
**Exemple de sortie :**
```
Le serpent mange grenouille !
Le serpent mange souris !
Le serpent mange oiseau !
Le serpent mange lapin !
Plus d’animaux, le serpent est rassasié !
```
<details>
<summary>✅ Correction</summary>
```python
animaux = ['grenouille', 'souris', 'oiseau', 'lapin']
while animaux:
animal = animaux.pop(0)
print(f"Le serpent mange {animal} !")
print("Plus d’animaux, le serpent est rassasié !")
```
</details>
---
## 🌿 Exercice 3 — Croissance cellulaire dans une boîte de Petri
**Objectif :**
Utiliser une **boucle while** et la fonction **range**.
**Énoncé :**
Une cellule se divise à chaque pas de temps.
Affichez le nombre de cellules à chaque étape jusqu’à ce qu’elles dépassent 1000.
**Exemple de sortie :**
```
Temps 0 : 1 cellule
Temps 1 : 2 cellules
Temps 2 : 4 cellules
...
Temps 10 : 1024 cellules
Trop de cellules ! Expérience arrêtée.
```
<details>
<summary>✅ Correction</summary>
```python
cellules = 1
temps = 0
while cellules <= 1000:
print(f"Temps {temps} : {cellules} cellules")
cellules *= 2
temps += 1
print("Trop de cellules ! Expérience arrêtée.")
```
</details>
---
## 🧫 Exercice 4 — Collecteur d’échantillons
**Objectif :**
Manipuler des **tuples** et **listes**, avec une **boucle for**.
**Énoncé :**
Vous devez collecter un certain nombre d’échantillons biologiques.
Les espèces possibles sont :
`('bactérie', 'champignon', 'algue', 'levure', 'virus')`
Demandez à l’utilisateur combien d’échantillons il veut, puis sélectionnez aléatoirement des espèces et stockez-les dans une liste.
**Exemple de sortie :**
```
Combien d’échantillons collecter ? 5
Échantillons collectés : ['levure', 'bactérie', 'virus', 'algue', 'champignon']
```
<details>
<summary>✅ Correction</summary>
```python
import random
especes = ('bactérie', 'champignon', 'algue', 'levure', 'virus')
n = int(input("Combien d’échantillons collecter ? "))
echantillons = []
for i in range(n):
echantillons.append(random.choice(especes))
print("Échantillons collectés :", echantillons)
```
</details>
---
## 🧠 Exercice 5 — L’évasion du microbe
**Objectif :**
Utiliser une **boucle while** avec saisie utilisateur.
**Énoncé :**
Un microbe tente de s’échapper du laboratoire.
Il commence à la position 0 et doit atteindre la position 10.
Demandez à l’utilisateur à chaque étape s’il veut avancer à droite ou à gauche.
**Exemple de sortie :**
```
Position du microbe : 0
Déplacement (gauche/droite) ? droite
Position du microbe : 1
Déplacement (gauche/droite) ? droite
...
Le microbe s’est échappé ! 🎉
```
<details>
<summary>✅ Correction</summary>
```python
position = 0
while position < 10:
print(f"Position du microbe : {position}")
deplacement = input("Déplacement (gauche/droite) ? ").lower()
if deplacement == "droite":
position += 1
elif deplacement == "gauche" and position > 0:
position -= 1
elif deplacement == "stop":
print("Expérience interrompue par l'utilisateur.")
break
else:
print("Déplacement invalide ou impossible.")
print("Le microbe s’est échappé ! 🎉")
```
</details>