ioCode

Logistique d'un festival

Programmation structurée • Cours-TP 1A

L'objectif de l'exercice est de modéliser la gestion d'un festival (recette, rentabilité, ressources, sécurité) en combinant structures conditionnelles (if/elif/else) et boucles (for, while) en Python.

  1. Recette totale du festival : Écrire une fonction recette_totale(n_places: list[int], prix_unitaire: list[float], achat_boisson: list[float], achat_nourriture: list[float], seuil_groupe: int, remise_groupe: float) -> float qui calcule, pour chaque groupe, le prix effectif d'une place (appliquant une remise de remise_groupe si le nombre de places atteint ou dépasse seuil_groupe), puis additionne les revenus des places et des achats (boissons + nourriture) pour tous les groupes. Par exemple recette_totale([5, 3], [20.0, 25.0], [5.0, 3.0], [10.0, 8.0], 4, 0.10) renvoie 186.0.

  2. Seuil de rentabilité : Écrire une fonction seuil_rentabilite(cout_fixe: float, cout_variable: float, prix_moyen_place: float, prix_moyen_achat: float) -> int qui, à l'aide d'une boucle while, détermine le plus petit entier n tel que la recette marginale par festivalier (prix_moyen_place + prix_moyen_achat) multipliée par n couvre les coûts (cout_fixe + n * cout_variable). Par exemple seuil_rentabilite(1000.0, 5.0, 30.0, 10.0) renvoie 29.

  3. Consommation des ressources : Écrire une fonction consommation_resources(nb_jours: int, electricite_base: float, eau_base: float, jours_pluvieux: list[int], coefficient_pluie: float) -> tuple[float, float] qui, en parcourant chaque jour du festival avec une boucle for, accumule l'électricité (constante) et l'eau (multipliée par coefficient_pluie si l'indice du jour figure dans jours_pluvieux), puis renvoie le couple (total_electricite, total_eau). Par exemple consommation_resources(3, 100.0, 50.0, [1], 2.0) renvoie (300.0, 200.0).

  4. Planification de la sécurité : Écrire une fonction planification_securite(nom_zones: list[str], affluence_zones: list[int], seuil_faible: int, seuil_moyen: int, agents_faible: int, agents_moyen: int, agents_forte: int) -> tuple[int, list[int]] qui, pour chaque zone, attribue un effectif d'agents selon trois paliers d'affluence (< seuil_faible → agents_faible, < seuil_moyen → agents_moyen, sinon → agents_forte), puis renvoie le couple (total_agents, effectifs_par_zone). Par exemple planification_securite(["Scène A", "Camping"], [500, 200], 300, 700, 2, 4, 6) renvoie (6, [4, 2]).

L'objectif de l'exercice est de modéliser la gestion d'un festival (recette, rentabilité, ressources, sécurité) en combinant structures conditionnelles (if/elif/else) et boucles (for, while) en Python.

  1. Recette totale du festival : Écrire une fonction recette_totale(n_places: list[int], prix_unitaire: list[float], achat_boisson: list[float], achat_nourriture: list[float], seuil_groupe: int, remise_groupe: float) -> float qui calcule, pour chaque groupe, le prix effectif d'une place (appliquant une remise de remise_groupe si le nombre de places atteint ou dépasse seuil_groupe), puis additionne les revenus des places et des achats (boissons + nourriture) pour tous les groupes. Par exemple recette_totale([5, 3], [20.0, 25.0], [5.0, 3.0], [10.0, 8.0], 4, 0.10) renvoie 186.0.

  2. Seuil de rentabilité : Écrire une fonction seuil_rentabilite(cout_fixe: float, cout_variable: float, prix_moyen_place: float, prix_moyen_achat: float) -> int qui, à l'aide d'une boucle while, détermine le plus petit entier n tel que la recette marginale par festivalier (prix_moyen_place + prix_moyen_achat) multipliée par n couvre les coûts (cout_fixe + n * cout_variable). Par exemple seuil_rentabilite(1000.0, 5.0, 30.0, 10.0) renvoie 29.

  3. Consommation des ressources : Écrire une fonction consommation_resources(nb_jours: int, electricite_base: float, eau_base: float, jours_pluvieux: list[int], coefficient_pluie: float) -> tuple[float, float] qui, en parcourant chaque jour du festival avec une boucle for, accumule l'électricité (constante) et l'eau (multipliée par coefficient_pluie si l'indice du jour figure dans jours_pluvieux), puis renvoie le couple (total_electricite, total_eau). Par exemple consommation_resources(3, 100.0, 50.0, [1], 2.0) renvoie (300.0, 200.0).

  4. Planification de la sécurité : Écrire une fonction planification_securite(nom_zones: list[str], affluence_zones: list[int], seuil_faible: int, seuil_moyen: int, agents_faible: int, agents_moyen: int, agents_forte: int) -> tuple[int, list[int]] qui, pour chaque zone, attribue un effectif d'agents selon trois paliers d'affluence (< seuil_faible → agents_faible, < seuil_moyen → agents_moyen, sinon → agents_forte), puis renvoie le couple (total_agents, effectifs_par_zone). Par exemple planification_securite(["Scène A", "Camping"], [500, 200], 300, 700, 2, 4, 6) renvoie (6, [4, 2]).

Langage
Console initialisée. En attente de l'interpréteur...