madamasterclass.com

📔 Exercices - Langages et programmation[série n°2️⃣]

Exercices corrigés sur les langages et programmation en python-modularité

Exercice 1: ★ ★ ★ ★ ★

Créer un module math_utils.py qui contient les fonctions suivantes :
   • add(a, b) : qui retourne la somme de \(a\) et \(b\)
   • subtract(a, b) : qui retourne la différence entre \(a\) et \(b\)
   • multiply(a, b) : qui retourne le produit de \(a\) et \(b\)
   • divide(a, b) : qui retourne le quotient de \(a\) par \(b\)

Dans un fichier main.py, importer le module math_utils et utiliser ces fonctions.

# math_utils.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    return a / b

# main.py
import math_utils

a = 10
b = 5

print(f"Addition : {math_utils.add(a, b)}")
print(f"Soustraction : {math_utils.subtract(a, b)}")
print(f"Multiplication : {math_utils.multiply(a, b)}")
print(f"Division : {math_utils.divide(a, b)}")

Exercice 2: ★ ★ ★ ★ ★

Créer un module user_manager.py qui contient les fonctions suivantes :
   • create_user(name, email) : qui crée un nouvel utilisateur avec le nom et l'e-mail fournis
   • get_user(email) : qui retourne l'utilisateur correspondant à l'e-mail fourni
   • update_user(email, name=None, email=None) : qui met à jour les informations de l'utilisateur correspondant à l'e-mail fourni
   • delete_user(email) : qui supprime l'utilisateur correspondant à l'e-mail fourni

Dans un fichier main.py, importer le module user_manager et utiliser ces fonctions.

# user_manager.py
users = {}

def create_user(name, email):
    users[email] = {"name": name, "email": email}
    return users[email]

def get_user(email):
    return users.get(email, None)

def update_user(email, name=None, email=None):
    if email in users:
       if name:
          users[email]["name"] = name
       if email:
          users[email]["email"] = email
       return users[email]
    else:
       return None

def delete_user(email):
    if email in users:
       del users[email]
       return True
    else:
       return False

# main.py
import user_manager

user1 = user_manager.create_user("John Doe", "john.doe@example.com")
print(user1)

user2 = user_manager.get_user("john.doe@example.com")
print(user2)

user_manager.update_user("john.doe@example.com", name="Jane Doe")
user2 = user_manager.get_user("john.doe@example.com")
print(user2)

user_manager.delete_user("john.doe@example.com")
user2 = user_manager.get_user("john.doe@example.com")
print(user2)

Exercice 3: ★ ★ ★ ★ ★

Vous travaillez dans une entreprise qui gère de nombreux dossiers et fichiers. Vous décidez de créer un module file_manager.py pour faciliter la gestion de ces fichiers.

Le module doit contenir les fonctions suivantes :
   • create_file(filepath, content) : qui crée un fichier au chemin spécifié avec le contenu donné
   • read_file(filepath) : qui lit le contenu d'un fichier
   • update_file(filepath, new_content) : qui met à jour le contenu d'un fichier existant
   • delete_file(filepath) : qui supprime un fichier

Dans un fichier main.py, importez le module file_manager et utilisez ces fonctions.

# file_manager.py
import os

def create_file(filepath, content):
    """
    Crée un fichier au chemin spécifié avec le contenu donné.
   
    Args:
       filepath (str): Le chemin du fichier à créer.
       content (str): Le contenu du fichier.
    """
    directory = os.path.dirname(filepath)
    if not os.path.exists(directory):
       os.makedirs(directory)
    with open(filepath, 'w') as file:
       file.write(content)

def read_file(filepath):
    """
    Lit le contenu d'un fichier.
   
    Args:
       filepath (str): Le chemin du fichier à lire.
   
    Returns:
       str: Le contenu du fichier.
    """
    with open(filepath, 'r') as file:
       content = file.read()
    return content

def update_file(filepath, new_content):
    """
    Met à jour le contenu d'un fichier existant.
   
    Args:
       filepath (str): Le chemin du fichier à mettre à jour.
       new_content (str): Le nouveau contenu du fichier.
    """
    with open(filepath, 'w') as file:
       file.write(new_content)

def delete_file(filepath):
    """
    Supprime un fichier.
   
    Args:
       filepath (str): Le chemin du fichier à supprimer.
   
    Returns:
       bool: True si le fichier a été supprimé avec succès, False sinon.
    """
    try:
       os.remove(filepath)
       return True
    except OSError:
       return False

# main.py
import file_manager

# Créer un fichier
file_manager.create_file('documents/example.txt', 'Ceci est un exemple de contenu de fichier.')

# Lire le contenu du fichier
content = file_manager.read_file('documents/example.txt')
print(content)

# Mettre à jour le contenu du fichier
file_manager.update_file('documents/example.txt', 'Ceci est le nouveau contenu du fichier.')
content = file_manager.read_file('documents/example.txt')
print(content)

# Supprimer le fichier
result = file_manager.delete_file('documents/example.txt')
print(f"Le fichier a été supprimé avec succès : {result}")

Exercice 4: ★ ★ ★ ★ ★

Vous travaillez sur une application qui doit calculer diverses statistiques sur des ensembles de données. Vous décidez de créer un module stats_utils.py pour centraliser ces calculs.

Le module doit contenir les fonctions suivantes :
   • calculate_mean(data) : qui calcule la moyenne d'un ensemble de données
   • calculate_median(data) : qui calcule la médiane d'un ensemble de données
   • calculate_variance(data) : qui calcule la variance d'un ensemble de données
   • calculate_standard_deviation(data) : qui calcule l'écart-type d'un ensemble de données

Dans un fichier main.py, importez le module stats_utils et utilisez ces fonctions.

# stats_utils.py
import math

def calculate_mean(data):
    """
    Calcule la moyenne d'un ensemble de données.
   
    Args:
       data (list): La liste de données.
   
    Returns:
       float: La moyenne des données.
    """
    if len(data) == 0:
       return 0
    return sum(data) / len(data)

def calculate_median(data):
    """
    Calcule la médiane d'un ensemble de données.
   
    Args:
       data (list): La liste de données.
   
    Returns:
       float: La médiane des données.
    """
    sorted_data = sorted(data)
    n = len(sorted_data)
    if n == 0:
       return 0
    elif n % 2 == 0:
       mid = n // 2
       return (sorted_data[mid-1] + sorted_data[mid]) / 2
    else:
       return sorted_data[n // 2]

def calculate_variance(data):
    """
    Calcule la variance d'un ensemble de données.
   
    Args:
       data (list): La liste de données.
   
    Returns:
       float: La variance des données.
    """
    if len(data) == 0:
       return 0
    mean = calculate_mean(data)
    squared_diffs = [(x - mean) ** 2 for x in data]
    return sum(squared_diffs) / len(data)

def calculate_standard_deviation(data):
    """
    Calcule l'écart-type d'un ensemble de données.
   
    Args:
       data (list): La liste de données.
   
    Returns:
       float: L'écart-type des données.
    """
    variance = calculate_variance(data)
    return math.sqrt(variance)

# main.py
import stats_utils

data = [5, 10, 15, 20, 25]

mean = stats_utils.calculate_mean(data)
median = stats_utils.calculate_median(data)
variance = stats_utils.calculate_variance(data)
std_dev = stats_utils.calculate_standard_deviation(data)

print(f"Moyenne : {mean}")
print(f"Médiane : {median}")
print(f"Variance : {variance}")
print(f"Écart-type : {std_dev}")

Exercice 5: ★ ★ ★ ★ ★

Vous développez une application de gestion de projet qui doit permettre de créer, lire, mettre à jour et supprimer des tâches. Vous décidez de créer un module task_manager.py pour encapsuler ces fonctionnalités.

Le module doit contenir les fonctions suivantes :
   • create_task(title, description, due_date) : qui crée une nouvelle tâche avec un titre, une description et une date d'échéance
   • get_task(task_id) : qui retourne la tâche correspondant à l'ID fourni
  
   • update_task(task_id, title=None, description=None, due_date=None) : qui met à jour les informations d'une tâche existante
   • delete_task(task_id) : qui supprime une tâche

Dans un fichier main.py, importez le module task_manager et utilisez ces fonctions.

# task_manager.py
tasks = {}
task_id_counter = 1

def create_task(title, description, due_date):
    global task_id_counter
    task = {"id": task_id_counter, "title": title, "description": description, "due_date": due_date}
    tasks[task_id_counter] = task
    task_id_counter += 1
    return task

def get_task(task_id):
    return tasks.get(task_id, None)

def update_task(task_id, title=None, description=None, due_date=None):
    if task_id in tasks:
       if title:
          tasks[task_id]["title"] = title
       if description:
          tasks[task_id]["description"] = description
       if due_date:
          tasks[task_id]["due_date"] = due_date
       return tasks[task_id]
    else:
       return None

def delete_task(task_id):
    if task_id in tasks:
       del tasks[task_id]
       return True
    else:
       return False

# main.py
import task_manager

task1 = task_manager.create_task("Écrire un rapport", "Rédiger le rapport annuel", "2023-12-31")
print(task1)

task2 = task_manager.get_task(1)
print(task2)

task_manager.update_task(1, description="Rédiger le rapport financier annuel")
task2 = task_manager.get_task(1)
print(task2)

task_manager.delete_task(1)
task2 = task_manager.get_task(1)
print(task2)

Exercice 6: ★ ★ ★ ★ ★

Récupérer les informations d'un utilisateur GitHub.
Écrire un programme Python qui récupère les informations d'un utilisateur GitHub à partir de son nom d'utilisateur.

import requests

def get_github_user_info(username):
    """
    Récupère les informations d'un utilisateur GitHub à partir de son nom d'utilisateur.
    
    Args:
        username (str): Nom d'utilisateur GitHub.
    
    Returns:
        dict: Informations de l'utilisateur GitHub.
    """
    url = f"https://api.github.com/users/{username}"
    response = requests.get(url)
    
    if response.status_code == 200:
        return response.json()
    else:
        return None

# Exemple d'utilisation
username = "octocat"
user_info = get_github_user_info(username)
if user_info:
    print(f"Nom d'utilisateur : {user_info['login']}")
    print(f"Nom complet : {user_info['name']}")
    print(f"Emplacement : {user_info['location']}")
    print(f"Nombre de dépôts : {user_info['public_repos']}")
else:
    print("Impossible de récupérer les informations de l'utilisateur.")
    

Exercice 7: ★ ★ ★ ★ ★

Récupérer les 5 derniers films populaires sur TMDb.
Écrire un programme Python qui récupère les 5 derniers films les plus populaires sur TMDb (The Movie Database).

import requests

def get_popular_movies(api_key, num_movies=5):
    """
    Récupère les X derniers films les plus populaires sur TMDb.
    
    Args:
        api_key (str): Clé d'API TMDb.
        num_movies (int): Nombre de films à récupérer (par défaut : 5).
    
    Returns:
        list: Liste des informations des films les plus populaires.
    """
    url = "https://api.themoviedb.org/3/movie/popular"
    params = {
        "api_key": api_key,
        "language": "fr-FR",
        "page": 1
    }
    
    response = requests.get(url, params=params)
    
    if response.status_code == 200:
        data = response.json()
        popular_movies = data["results"][:num_movies]
        return popular_movies
    else:
        return None

# Exemple d'utilisation
api_key = "votre_clé_api_tmdb"
popular_movies = get_popular_movies(api_key)

if popular_movies:
    for movie in popular_movies:
        print(f"Titre : {movie['title']}")
        print(f"Description : {movie['overview']}")
        print(f"Note moyenne : {movie['vote_average']}")
        print("---")
else:
    print("Impossible de récupérer les films populaires.")

Exercice 8: ★ ★ ★ ★ ★

Récupérer les informations météorologiques d'une ville.
Écrire un programme Python qui récupère les informations météorologiques d'une ville à partir de son nom.

import requests

def get_weather_info(api_key, city_name):
    """
    Récupère les informations météorologiques d'une ville à partir de son nom.
    
    Args:
        api_key (str): Clé d'API OpenWeatherMap.
        city_name (str): Nom de la ville.
    
    Returns:
        dict: Informations météorologiques de la ville.
    """
    url = "https://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": city_name,
        "appid": api_key,
        "units": "metric",
        "lang": "fr"
    }
    
    response = requests.get(url, params=params)
    
    if response.status_code == 200:
        return response.json()
    else:
        return None

# Exemple d'utilisation
api_key = "votre_clé_api_openweathermap"
city_name = "Paris"
weather_info = get_weather_info(api_key, city_name)

if weather_info:
    print(f"Ville : {weather_info['name']}")
    print(f"Température : {weather_info['main']['temp']}°C")
    print(f"Conditions : {weather_info['weather'][0]['description']}")
    print(f"Humidité : {weather_info['main']['humidity']}%")
    print(f"Vitesse du vent : {weather_info['wind']['speed']} m/s")
else:
    print("Impossible de récupérer les informations météorologiques.")

Exercice 9: ★ ★ ★ ★ ★

Récupérer les derniers articles d'un blog.
Écrire un programme Python qui récupère les 5 derniers articles d'un blog en utilisant l'API de WordPress.

import requests

def get_latest_blog_posts(api_url, num_posts=5):
    """
    Récupère les X derniers articles d'un blog en utilisant l'API de WordPress.
    
    Args:
        api_url (str): URL de l'API du blog.
        num_posts (int): Nombre d'articles à récupérer (par défaut : 5).
    
    Returns:
        list: Liste des informations des derniers articles.
    """
    response = requests.get(api_url)
    
    if response.status_code == 200:
        data = response.json()
        latest_posts = data[:num_posts]
        return latest_posts
    else:
        return None

# Exemple d'utilisation
api_url = "https://public-api.wordpress.com/rest/v1.1/sites/example.wordpress.com/posts"
latest_posts = get_latest_blog_posts(api_url)

if latest_posts:
    for post in latest_posts:
        print(f"Titre : {post['title']}")
        print(f"Auteur : {post['author']['name']}")
        print(f"Date de publication : {post['date']}")
        print(f"Lien : {post['URL']}")
        print("---")
else:
    print("Impossible de récupérer les derniers articles.")

Exercice 10: ★ ★ ★ ★ ★

Rechercher des livres sur Google Books.
Écrire un programme Python qui recherche des livres sur Google Books à partir d'un mot-clé.

import requests

def search_books(api_key, query, max_results=10):
    """
    Recherche des livres sur Google Books à partir d'un mot-clé.
    
    Args:
        api_key (str): Clé d'API Google Books.
        query (str): Mot-clé pour la recherche.
        max_results (int): Nombre maximum de résultats à récupérer (par défaut : 10).
    
    Returns:
        list: Liste des informations des livres trouvés.
    """
    url = "https://www.googleapis.com/books/v1/volumes"
    params = {
        "q": query,
        "key": api_key,
        "maxResults": max_results
    }
    
    response = requests.get(url, params=params)
    
    if response.status_code == 200:
        data = response.json()
        books = data["items"]
        return books
    else:
        return None

# Exemple d'utilisation
api_key = "votre_clé_api_google_books"
query = "python"
books = search_books(api_key, query)

if books:
    for book in books:
        print(f"Titre : {book['volumeInfo']['title']}")
        print(f"Auteur(s) : {', '.join(book['volumeInfo']['authors'])}")
        print(f"Description : {book['volumeInfo']['description']}")
        print(f"Lien vers le livre : {book['volumeInfo']['infoLink']}")
        print("---")
else:
    print("Impossible de récupérer les livres.")

Forum(s) associé(s)

Mathématiques Magiques : Dévoilez les Mystères des Nombres

08 Apr, 2016

Les mathématiques ont souvent la réputation d'être une discipline austère et difficile, mais ...

Read more.

Voyage à Travers les Suites Numériques : Découvertes et Applications

27 Jan, 2014

Plongez dans l'univers fascinant des suites numériques, où chaque terme révèle des patterns surprenants et des applications pratiques dans les mathématiques et au-delà.

Read more.

Fonctions en Action : Comprendre et Explorer les Relations Mathématiques

30 Feb, 2015

Découvrez comment les fonctions tissent des liens entre les nombres et les concepts, transformant des idées abstraites en outils puissants pour résoudre des problèmes du quotidien.

Read more.
Page: