---
# System prepended metadata

title: EXOS1

---

# 🧬 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>


