0% ont trouvé ce document utile (0 vote)
9 vues4 pages

Exercices Python : Chaînes et Boucles

Le document présente une série d'exercices Python sur les chaînes de caractères et les boucles, incluant des solutions pour la compression de chaînes, la vérification d'anagrammes, le chiffrement César, la vérification de palindromes, le calcul de la distance de Levenshtein, la détection du mot le plus long, la fréquence des lettres et la vérification de pangrammes. Chaque exercice est accompagné d'un énoncé clair et d'une solution Python fonctionnelle. Ces exercices visent à renforcer les compétences en programmation et en manipulation de chaînes.

Transféré par

Chamseddine Ghrissi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues4 pages

Exercices Python : Chaînes et Boucles

Le document présente une série d'exercices Python sur les chaînes de caractères et les boucles, incluant des solutions pour la compression de chaînes, la vérification d'anagrammes, le chiffrement César, la vérification de palindromes, le calcul de la distance de Levenshtein, la détection du mot le plus long, la fréquence des lettres et la vérification de pangrammes. Chaque exercice est accompagné d'un énoncé clair et d'une solution Python fonctionnelle. Ces exercices visent à renforcer les compétences en programmation et en manipulation de chaînes.

Transféré par

Chamseddine Ghrissi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Exercices Difficiles — Chaînes de

caractères et Boucles (Python)


1 Compression de chaîne (Run-Length Encoding)
1️⃣
**Énoncé :** Écrire un programme qui compresse une chaîne en remplaçant chaque groupe
de lettres identiques consécutives par la lettre suivie du nombre d’occurrences.
Exemple : 'aaabbccccd' devient 'a3b2c4d1'

**Solution Python :**

def compresser(chaine):
resultat = ""
i=0
while i < len(chaine):
compteur = 1
while i + 1 < len(chaine) and chaine[i] == chaine[i + 1]:
compteur += 1
i += 1
resultat += chaine[i] + str(compteur)
i += 1
return resultat

print(compresser("aaabbccccd")) # a3b2c4d1

2️⃣Vérifier les anagrammes


**Énoncé :** Écrire un programme qui vérifie si deux mots sont des anagrammes (mêmes
lettres mais ordre différent).

**Solution Python :**

def sont_anagrammes(mot1, mot2):


mot1, mot2 = [Link](" ", "").lower(), [Link](" ", "").lower()
return sorted(mot1) == sorted(mot2)

print(sont_anagrammes("chien", "niche")) # True


print(sont_anagrammes("chat", "tache")) # False
3️⃣Chiffrement César
**Énoncé :** Écrire un programme qui chiffre un texte par la méthode de César avec un
décalage donné.
Exemple : décalage = 3 → A devient D, B devient E, etc.

**Solution Python :**

def cesar(message, decalage):


resultat = ""
for c in message:
if [Link]():
base = ord('A') if [Link]() else ord('a')
resultat += chr((ord(c) - base + decalage) % 26 + base)
else:
resultat += c
return resultat

print(cesar("Bonjour", 3)) # Erqmrxu

4️⃣Palindrome avec nettoyage


**Énoncé :** Vérifier si une phrase est un palindrome, en ignorant les espaces, majuscules et
ponctuations.

**Solution Python :**

def est_palindrome(phrase):
import string
propre = "".join([Link]() for c in phrase if [Link]())
return propre == propre[::-1]

print(est_palindrome("Élu par cette crapule")) # True

5️⃣Distance de Levenshtein
**Énoncé :** Écrire un programme qui calcule la distance d’édition entre deux chaînes
(ajout, suppression, substitution).

**Solution Python :**

def levenshtein(a, b):


n, m = len(a), len(b)
dp = [[0]*(m+1) for _ in range(n+1)]
for i in range(n+1):
dp[i][0] = i
for j in range(m+1):
dp[0][j] = j
for i in range(1, n+1):
for j in range(1, m+1):
cout = 0 if a[i-1] == b[j-1] else 1
dp[i][j] = min(
dp[i-1][j] + 1,
dp[i][j-1] + 1,
dp[i-1][j-1] + cout
)
return dp[n][m]

print(levenshtein("chat", "chut")) # 1

6️⃣Détecter le mot le plus long


**Énoncé :** Écrire un programme qui trouve le mot le plus long dans une phrase.

**Solution Python :**

def mot_plus_long(phrase):
mots = [Link]()
plus_long = mots[0]
for mot in mots:
if len(mot) > len(plus_long):
plus_long = mot
return plus_long

print(mot_plus_long("Python est un excellent langage de programmation"))

7️⃣Fréquence des lettres


**Énoncé :** Écrire un programme qui affiche la fréquence d’apparition de chaque lettre
dans une chaîne.

**Solution Python :**

def frequence_lettres(chaine):
freq = {}
for c in [Link]():
if [Link]():
freq[c] = [Link](c, 0) + 1
return freq

print(frequence_lettres("programmation"))
8️⃣Vérifier si une phrase est un pangramme
**Énoncé :** Un pangramme contient toutes les lettres de l’alphabet au moins une fois.
Écrire un programme qui vérifie cette propriété.

**Solution Python :**

def est_pangramme(phrase):
alphabet = set("abcdefghijklmnopqrstuvwxyz")
lettres = set([Link]() for c in phrase if [Link]())
return [Link](lettres)

print(est_pangramme("Portez ce vieux whisky au juge blond qui fume")) # True

Vous aimerez peut-être aussi