cours et tutoriel python

Instructions de base en Python – Exercices corrigés

Python est un langage de programmation populaire et polyvalent, apprécié pour sa simplicité et sa lisibilité. Que vous soyez débutant ou développeur expérimenté, Python offre une gamme d’outils et de bibliothèques pour réaliser divers projets. Dans cet article, nous allons couvrir les bases de Python à travers une série d’exercices corrigés. Ces exercices vous aideront à comprendre les concepts fondamentaux de Python et à pratiquer votre code.

1. Installation de Python

Avant de commencer à programmer en Python, vous devez installer Python sur votre machine. Vous pouvez télécharger Python depuis le site officiel python.org. Suivez les instructions pour votre système d’exploitation.

2. Premiers Pas avec Python
2.1. Hello, World!

Le programme traditionnel pour débuter avec un nouveau langage de programmation est “Hello, World!”. Voici comment le réaliser en Python :

print("Hello, World!")

Lorsque vous exécutez ce code, Python affichera le texte Hello, World!.

2.2. Variables et Types de Données

Python est un langage dynamiquement typé, ce qui signifie que vous n’avez pas besoin de déclarer le type d’une variable. Voici quelques exemples :

# Déclaration de variables
nom = "Alice"  # Chaîne de caractères
age = 30  # Entier
taille = 1.75  # Flottant
est_programmeur = True  # Booléen

print(nom, age, taille, est_programmeur)
Exercices Pratiques
Exercice 1 : Calcul de la Somme de Deux Nombres

Énoncé :
Écrivez un programme qui demande à l’utilisateur de saisir deux nombres et affiche leur somme.

Solution :

# Demande de saisie des nombres
nombre1 = float(input("Entrez le premier nombre : "))
nombre2 = float(input("Entrez le deuxième nombre : "))

# Calcul de la somme
somme = nombre1 + nombre2

# Affichage du résultat
print("La somme des deux nombres est :", somme)
Vérification de Parité

Énoncé :
Écrivez un programme qui vérifie si un nombre saisi par l’utilisateur est pair ou impair.

Solution :

# Demande de saisie du nombre
nombre = int(input("Entrez un nombre : "))

# Vérification de la parité
if nombre % 2 == 0:
    print("Le nombre est pair.")
else:
    print("Le nombre est impair.")
Calcul de la Factorielle

Énoncé :
Écrivez un programme qui calcule la factorielle d’un nombre donné par l’utilisateur.

Solution :

# Demande de saisie du nombre
nombre = int(input("Entrez un nombre pour calculer sa factorielle : "))

# Calcul de la factorielle
factorielle = 1
for i in range(1, nombre + 1):
    factorielle *= i

# Affichage du résultat
print("La factorielle de", nombre, "est", factorielle)
Inversion d’une Chaîne de Caractères

Énoncé :
Écrivez un programme qui inverse une chaîne de caractères saisie par l’utilisateur.

Solution :

# Demande de saisie de la chaîne
chaine = input("Entrez une chaîne de caractères : ")

# Inversion de la chaîne
chaine_inversee = chaine[::-1]

# Affichage du résultat
print("La chaîne inversée est :", chaine_inversee)
Vérification de la Primalité

Énoncé :
Écrivez un programme qui vérifie si un nombre donné par l’utilisateur est un nombre premier.

Solution :

# Demande de saisie du nombre
nombre = int(input("Entrez un nombre pour vérifier s'il est premier : "))

# Vérification de la primalité
if nombre > 1:
    for i in range(2, int(nombre ** 0.5) + 1):
        if (nombre % i) == 0:
            print(nombre, "n'est pas un nombre premier.")
            break
    else:
        print(nombre, "est un nombre premier.")
else:
    print(nombre, "n'est pas un nombre premier.")

Ces exercices de base vous permettront de vous familiariser avec les concepts fondamentaux de Python. En pratiquant régulièrement, vous développerez des compétences solides en programmation.

Cas Pratiques de Python – Exercices Corrigés

La pratique est essentielle pour maîtriser un langage de programmation. Voici quelques cas pratiques qui vous permettront d’appliquer les concepts de base de Python dans des situations réelles. Ces exercices couvrent divers aspects de la programmation, des calculs mathématiques aux manipulations de fichiers et à l’utilisation des bibliothèques standard.

Calculatrice de Base

Énoncé :
Écrivez un programme de calculatrice qui permet à l’utilisateur de choisir une opération (addition, soustraction, multiplication, division) et de saisir deux nombres. Le programme doit effectuer l’opération choisie et afficher le résultat.

Solution :

# Demande de saisie de l'opération
operation = input("Choisissez une opération (+, -, *, /) : ")

# Demande de saisie des nombres
nombre1 = float(input("Entrez le premier nombre : "))
nombre2 = float(input("Entrez le deuxième nombre : "))

# Exécution de l'opération
if operation == '+':
    resultat = nombre1 + nombre2
elif operation == '-':
    resultat = nombre1 - nombre2
elif operation == '*':
    resultat = nombre1 * nombre2
elif operation == '/':
    if nombre2 != 0:
        resultat = nombre1 / nombre2
    else:
        resultat = "Erreur : Division par zéro."
else:
    resultat = "Opération non valide."

# Affichage du résultat
print("Le résultat de l'opération est :", resultat)
Gestion d’une Liste de Courses

Énoncé :
Écrivez un programme qui permet à l’utilisateur de gérer une liste de courses. Le programme doit permettre d’ajouter des articles, de supprimer des articles et d’afficher la liste actuelle des courses.

Solution :

# Initialisation de la liste de courses
liste_de_courses = []

# Fonction pour afficher le menu
def afficher_menu():
    print("\nMenu :")
    print("1. Ajouter un article")
    print("2. Supprimer un article")
    print("3. Afficher la liste de courses")
    print("4. Quitter")

# Fonction pour afficher la liste de courses
def afficher_liste():
    if liste_de_courses:
        print("\nListe de courses :")
        for index, article in enumerate(liste_de_courses, start=1):
            print(f"{index}. {article}")
    else:
        print("\nLa liste de courses est vide.")

# Boucle principale
while True:
    afficher_menu()
    choix = input("Choisissez une option : ")

    if choix == '1':
        article = input("Entrez le nom de l'article à ajouter : ")
        liste_de_courses.append(article)
        print(f"{article} a été ajouté à la liste de courses.")
    elif choix == '2':
        afficher_liste()
        index = int(input("Entrez le numéro de l'article à supprimer : "))
        if 0 < index <= len(liste_de_courses):
            article_supprime = liste_de_courses.pop(index - 1)
            print(f"{article_supprime} a été supprimé de la liste de courses.")
        else:
            print("Numéro d'article invalide.")
    elif choix == '3':
        afficher_liste()
    elif choix == '4':
        print("Au revoir !")
        break
    else:
        print("Option non valide. Veuillez réessayer.")
Lecture et Écriture dans un Fichier

Énoncé :
Écrivez un programme qui lit le contenu d’un fichier texte et compte le nombre de mots dans ce fichier. Ensuite, le programme doit écrire le résultat dans un nouveau fichier texte.

Solution :

# Lecture du fichier source
try:
    with open('source.txt', 'r') as fichier_source:
        contenu = fichier_source.read()
except FileNotFoundError:
    print("Le fichier source.txt n'a pas été trouvé.")
    exit()

# Comptage des mots
mots = contenu.split()
nombre_de_mots = len(mots)

# Écriture du résultat dans un nouveau fichier
with open('resultat.txt', 'w') as fichier_resultat:
    fichier_resultat.write(f"Le fichier source contient {nombre_de_mots} mots.\n")

print("Le comptage des mots a été effectué et le résultat est écrit dans resultat.txt.")
Conversion de Devises

Énoncé :
Écrivez un programme qui convertit une somme d’argent d’une devise à une autre. Le taux de conversion doit être saisi par l’utilisateur.

Solution :

# Demande de saisie des informations
montant = float(input("Entrez le montant à convertir : "))
taux_conversion = float(input("Entrez le taux de conversion : "))
devise_source = input("Entrez la devise source : ")
devise_cible = input("Entrez la devise cible : ")

# Conversion
montant_converti = montant * taux_conversion

# Affichage du résultat
print(f"{montant} {devise_source} équivaut à {montant_converti:.2f} {devise_cible} au taux de conversion de {taux_conversion}.")
Générateur de Mot de Passe

Énoncé :
Écrivez un programme qui génère un mot de passe aléatoire de longueur spécifiée par l’utilisateur. Le mot de passe doit contenir des lettres majuscules, des lettres minuscules, des chiffres et des caractères spéciaux.

Solution :

import random
import string

# Demande de saisie de la longueur du mot de passe
longueur = int(input("Entrez la longueur du mot de passe : "))

# Caractères disponibles pour le mot de passe
caracteres = string.ascii_letters + string.digits + string.punctuation

# Génération du mot de passe
mot_de_passe = ''.join(random.choice(caracteres) for _ in range(longueur))

# Affichage du résultat
print("Mot de passe généré :", mot_de_passe)

Ces cas pratiques couvrent une variété de scénarios courants que vous pouvez rencontrer en programmation.

Cas Particuliers d’un Point de Vue Technique en Python

Python est un langage de programmation polyvalent qui permet de résoudre une multitude de problèmes techniques. Dans cette section, nous explorerons des cas particuliers qui mettent en évidence des techniques spécifiques et avancées en Python. Ces cas pratiques couvriront des sujets tels que les décorateurs, la gestion des exceptions, les générateurs, les expressions régulières et la manipulation de fichiers JSON.

1. Utilisation de Décorateurs

Les décorateurs en Python sont des fonctions qui modifient le comportement d’autres fonctions ou méthodes. Ils sont souvent utilisés pour la journalisation, le contrôle d’accès, le mémoïsation, etc.

Cas Pratique : Journalisation avec Décorateur

Énoncé :
Créez un décorateur qui enregistre le nom de la fonction appelée et les arguments passés.

Solution :

import functools

# Définition du décorateur
def journalisation(fonction):
    @functools.wraps(fonction)
    def fonction_modifiee(*args, **kwargs):
        print(f"Appel de {fonction.__name__} avec les arguments {args} et {kwargs}")
        resultat = fonction(*args, **kwargs)
        print(f"{fonction.__name__} a renvoyé {resultat}")
        return resultat
    return fonction_modifiee

# Utilisation du décorateur
@journalisation
def addition(a, b):
    return a + b

# Test
resultat = addition(3, 5)
2. Gestion des Exceptions

La gestion des exceptions est cruciale pour rendre un programme robuste et capable de gérer les erreurs inattendues.

Cas Pratique : Gestion d’Exception Personnalisée

Énoncé :
Créez une fonction qui divise deux nombres et gère les exceptions en cas de division par zéro et de type de données incorrect.

Solution :

def division(a, b):
    try:
        resultat = a / b
    except ZeroDivisionError:
        return "Erreur : Division par zéro."
    except TypeError:
        return "Erreur : Les types des arguments doivent être des nombres."
    else:
        return resultat

# Test
print(division(10, 2))  # Sortie: 5.0
print(division(10, 0))  # Sortie: Erreur : Division par zéro.
print(division(10, "a"))  # Sortie: Erreur : Les types des arguments doivent être des nombres.
3. Utilisation des Générateurs

Les générateurs sont un moyen efficace de gérer des collections de données volumineuses ou infinies sans utiliser beaucoup de mémoire.

Cas Pratique : Générateur de Nombres Premiers

Énoncé :
Créez un générateur qui produit une séquence infinie de nombres premiers.

Solution :

def generateur_premiers():
    nombre = 2
    while True:
        for i in range(2, int(nombre ** 0.5) + 1):
            if nombre % i == 0:
                break
        else:
            yield nombre
        nombre += 1

# Test
gen = generateur_premiers()
for _ in range(10):
    print(next(gen))
4. Utilisation des Expressions Régulières

Les expressions régulières sont puissantes pour la manipulation et la validation de chaînes de caractères.

Cas Pratique : Validation d’une Adresse Email

Énoncé :
Créez une fonction qui valide une adresse email en utilisant les expressions régulières.

Solution :

import re

def valider_email(email):
    motif = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    if re.match(motif, email):
        return True
    else:
        return False

# Test
print(valider_email("exemple@domaine.com"))  # Sortie: True
print(valider_email("exemple@domaine"))  # Sortie: False
5. Manipulation de Fichiers JSON

JSON (JavaScript Object Notation) est un format de données couramment utilisé pour l’échange de données entre un client et un serveur.

Cas Pratique : Lecture et Écriture de Fichiers JSON

Énoncé :
Créez un programme qui lit les données d’un fichier JSON, les modifie, puis les enregistre dans un nouveau fichier JSON.

Solution :

import json

# Lecture des données depuis un fichier JSON
with open('data.json', 'r') as fichier:
    data = json.load(fichier)

# Modification des données
data['nouvelle_cle'] = 'nouvelle_valeur'

# Écriture des données modifiées dans un nouveau fichier JSON
with open('data_modifiee.json', 'w') as fichier:
    json.dump(data, fichier, indent=4)

print("Les données ont été lues et modifiées avec succès.")
Conclusion

Ces cas particuliers montrent des techniques avancées et spécifiques de Python qui peuvent être appliquées à des situations réelles. En comprenant et en pratiquant ces concepts, vous serez mieux équipé pour écrire des programmes Python efficaces et robustes. Continuez à explorer et à expérimenter pour approfondir vos compétences en Python.


Série d’Exercices Corrigés en Python

Pratiquer des exercices corrigés est un excellent moyen d’apprendre et de maîtriser un langage de programmation. Cette série d’exercices couvre différents aspects de Python, des bases aux concepts plus avancés. Chaque exercice est accompagné d’une solution détaillée pour vous aider à comprendre le processus de résolution.

Inverser une Chaîne de Caractères

Énoncé :
Écrivez une fonction qui prend une chaîne de caractères et retourne cette chaîne inversée.

Solution :

def inverser_chaine(chaine):
    return chaine[::-1]

# Test
print(inverser_chaine("Bonjour"))  # Sortie: ruojnoB
Vérifier si une Chaîne est un Palindrome

Énoncé :
Écrivez une fonction qui vérifie si une chaîne de caractères est un palindrome.

Solution :

def est_palindrome(chaine):
    chaine = chaine.replace(" ", "").lower()
    return chaine == chaine[::-1]

# Test
print(est_palindrome("Aman a Panama"))  # Sortie: True
Calculer la Factorielle d’un Nombre

Énoncé :
Écrivez une fonction qui calcule la factorielle d’un nombre.

Solution :

def factorielle(n):
    if n == 0:
        return 1
    else:
        return n * factorielle(n - 1)

# Test
print(factorielle(5))  # Sortie: 120
Trouver le Plus Grand Commun Diviseur (PGCD)

Énoncé :
Écrivez une fonction qui trouve le PGCD de deux nombres en utilisant l’algorithme d’Euclide.

Solution :

def pgcd(a, b):
    while b:
        a, b = b, a % b
    return a

# Test
print(pgcd(48, 18))  # Sortie: 6
Trier une Liste de Nombres

Énoncé :
Écrivez une fonction qui trie une liste de nombres en utilisant l’algorithme de tri à bulles.

Solution :

def tri_a_bulles(liste):
    n = len(liste)
    for i in range(n):
        for j in range(0, n-i-1):
            if liste[j] > liste[j+1]:
                liste[j], liste[j+1] = liste[j+1], liste[j]
    return liste

# Test
print(tri_a_bulles([64, 34, 25, 12, 22, 11, 90]))  # Sortie: [11, 12, 22, 25, 34, 64, 90]
Générer les N Premiers Nombres de Fibonacci

Énoncé :
Écrivez une fonction qui génère les N premiers nombres de la séquence de Fibonacci.

Solution :

def fibonacci(n):
    sequence = []
    a, b = 0, 1
    while len(sequence) < n:
        sequence.append(a)
        a, b = b, a + b
    return sequence

# Test
print(fibonacci(10))  # Sortie: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Compter les Voyelles dans une Chaîne

Énoncé :
Écrivez une fonction qui compte le nombre de voyelles dans une chaîne de caractères.

Solution :

def compter_voyelles(chaine):
    voyelles = 'aeiouAEIOU'
    compteur = 0
    for char in chaine:
        if char in voyelles:
            compteur += 1
    return compteur

# Test
print(compter_voyelles("Bonjour tout le monde"))  # Sortie: 8
Trouver les Nombres Premiers dans une Plage

Énoncé :
Écrivez une fonction qui trouve tous les nombres premiers dans une plage donnée.

Solution :

def est_premier(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

def nombres_premiers_dans_plage(debut, fin):
    return [num for num in range(debut, fin + 1) if est_premier(num)]

# Test
print(nombres_premiers_dans_plage(10, 50))  # Sortie: [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
Calculer la Moyenne d’une Liste de Nombres

Énoncé :
Écrivez une fonction qui calcule la moyenne d’une liste de nombres.

Solution :

def calculer_moyenne(liste):
    return sum(liste) / len(liste)

# Test
print(calculer_moyenne([10, 20, 30, 40, 50]))  # Sortie: 30.0

10. Vérifier si une Année est Bissextile

Énoncé :
Écrivez une fonction qui vérifie si une année donnée est bissextile.

Solution :

def est_bissextile(annee):
    if (annee % 4 == 0 and annee % 100 != 0) or (annee % 400 == 0):
        return True
    else:
        return False

# Test
print(est_bissextile(2020))  # Sortie: True
print(est_bissextile(2021))  # Sortie: False

Conclusion

Ces exercices couvrent un large éventail de concepts en Python, des bases aux techniques plus avancées. En les pratiquant, vous renforcerez vos compétences en programmation et serez mieux préparé à résoudre des problèmes plus complexes. Continuez à explorer et à expérimenter pour approfondir votre compréhension de Python. Bon codage !

Autres articles

Héritage en Python : Comprendre les Fondements...
L'héritage est l'un des concepts fondamentaux de la programmation orientée...
Read more
Guide Complet sur les Nombres Premiers en...
Dans cet article, nous explorerons en détail ce...
Read more
Vérifier si une chaîne de caractères est...
Cet article explore différentes approches pour vérifier si une chaîne...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *