Les entrées utilisateur en Python
Guide complet sur les entrées utilisateur en Python
Section titled “Guide complet sur les entrées utilisateur en Python”Introduction
Section titled “Introduction”La fonction input() permet de recevoir des données de l’utilisateur pendant l’exécution d’un programme. C’est un outil essentiel pour créer des applications interactives où l’utilisateur peut fournir des informations, faire des choix ou contrôler le flux du programme.
1. La fonction input() de base
Section titled “1. La fonction input() de base”Syntaxe simple
Section titled “Syntaxe simple”nom = input("Entrez votre nom : ")print(f"Bonjour {nom} !")# Sortie interactive :# Entrez votre nom : Riyad# Bonjour Riyad !Comment ça fonctionne :
- Le programme affiche le message entre parenthèses
- Le programme attend que l’utilisateur tape quelque chose
- L’utilisateur appuie sur Entrée
- La valeur saisie est retournée sous forme de chaîne de caractères (string)
Input sans message
Section titled “Input sans message”reponse = input()print(f"Vous avez saisi : {reponse}")Note : Il est recommandé d’inclure un message pour guider l’utilisateur.
2. Type de données retourné par input()
Section titled “2. Type de données retourné par input()”Toujours une chaîne de caractères
Section titled “Toujours une chaîne de caractères”age = input("Quel est votre âge ? ")print(type(age))# Sortie : <class 'str'>Important : Même si l’utilisateur tape un nombre, input() retourne toujours une chaîne !
Problème avec les opérations mathématiques
Section titled “Problème avec les opérations mathématiques”# ❌ Erreur courantenombre1 = input("Premier nombre : ")nombre2 = input("Deuxième nombre : ")resultat = nombre1 + nombre2print(resultat)# Si l'utilisateur tape 5 et 3# Sortie : 53 (concaténation de chaînes, pas addition !)3. Conversion de types (Casting)
Section titled “3. Conversion de types (Casting)”Conversion en entier avec int()
Section titled “Conversion en entier avec int()”age = int(input("Quel est votre âge ? "))print(type(age))# Sortie : <class 'int'>
# Maintenant on peut faire des calculsdans_10_ans = age + 10print(f"Dans 10 ans, vous aurez {dans_10_ans} ans")Conversion en nombre décimal avec float()
Section titled “Conversion en nombre décimal avec float()”taille = float(input("Quelle est votre taille en mètres ? "))print(type(taille))# Sortie : <class 'float'>
print(f"Votre taille est {taille} m")# Si l'utilisateur tape 1.75# Sortie : Votre taille est 1.75 mTableau récapitulatif des conversions
Section titled “Tableau récapitulatif des conversions”| Fonction | Type résultant | Exemple d’utilisation |
|---|---|---|
int() | Entier | Âge, quantité, année |
float() | Décimal | Prix, taille, poids |
str() | Chaîne | Nom, adresse (par défaut) |
4. Gérer les erreurs de saisie
Section titled “4. Gérer les erreurs de saisie”Le problème des conversions invalides
Section titled “Le problème des conversions invalides”# ❌ Provoque une erreur si l'utilisateur tape du texteage = int(input("Votre âge : "))# Si l'utilisateur tape "vingt"# Erreur : ValueError: invalid literal for int() with base 10: 'vingt'Solution avec try-except
Section titled “Solution avec try-except”try: age = int(input("Votre âge : ")) print(f"Vous avez {age} ans")except ValueError: print("Erreur : veuillez entrer un nombre valide")Boucle de validation robuste
Section titled “Boucle de validation robuste”while True: try: age = int(input("Votre âge : ")) if age < 0: print("L'âge ne peut pas être négatif") continue if age > 150: print("Âge non réaliste") continue break except ValueError: print("Veuillez entrer un nombre entier")
print(f"Âge enregistré : {age} ans")5. Techniques avancées d’entrée
Section titled “5. Techniques avancées d’entrée”Entrées multiples sur une ligne
Section titled “Entrées multiples sur une ligne”# Demander plusieurs valeurs séparées par des espacesentree = input("Entrez trois nombres séparés par des espaces : ")nombre1, nombre2, nombre3 = entree.split()print(f"Nombres : {nombre1}, {nombre2}, {nombre3}")# Si l'utilisateur tape "10 20 30"# Sortie : Nombres : 10, 20, 30Conversion multiple avec map()
Section titled “Conversion multiple avec map()”# Convertir plusieurs valeurs en une seule lignenombres = list(map(int, input("Entrez des nombres séparés par des espaces : ").split()))print(f"Somme : {sum(nombres)}")# Si l'utilisateur tape "5 10 15"# Sortie : Somme : 30Entrée avec valeur par défaut
Section titled “Entrée avec valeur par défaut”nom = input("Votre nom (appuyez sur Entrée pour 'Anonyme') : ") or "Anonyme"print(f"Bonjour {nom}")6. Validation et nettoyage des données
Section titled “6. Validation et nettoyage des données”Supprimer les espaces inutiles
Section titled “Supprimer les espaces inutiles”nom = input("Votre nom : ").strip()print(f"Nom nettoyé : '{nom}'")# Si l'utilisateur tape " Riyad "# Sortie : Nom nettoyé : 'Riyad'Normaliser la casse
Section titled “Normaliser la casse”choix = input("Voulez-vous continuer ? (oui/non) : ").lower().strip()if choix == "oui": print("On continue !")elif choix == "non": print("Au revoir !")else: print("Réponse non reconnue")7. Menus et choix multiples
Section titled “7. Menus et choix multiples”Menu simple
Section titled “Menu simple”print("=== MENU PRINCIPAL ===")print("1. Nouveau jeu")print("2. Charger une partie")print("3. Options")print("4. Quitter")
choix = input("Votre choix (1-4) : ")
if choix == "1": print("Démarrage d'un nouveau jeu...")elif choix == "2": print("Chargement d'une partie...")elif choix == "3": print("Ouverture des options...")elif choix == "4": print("Au revoir !")else: print("Choix invalide")Menu avec boucle et validation
Section titled “Menu avec boucle et validation”def afficher_menu(): print("\n=== MENU ===") print("1. Addition") print("2. Soustraction") print("3. Multiplication") print("4. Division") print("5. Quitter")
while True: afficher_menu() choix = input("Choisissez une opération : ").strip()
if choix == "5": print("Au revoir !") break
if choix not in ["1", "2", "3", "4"]: print("Choix invalide, réessayez") continue
try: a = float(input("Premier nombre : ")) b = float(input("Deuxième nombre : "))
if choix == "1": print(f"Résultat : {a + b}") elif choix == "2": print(f"Résultat : {a - b}") elif choix == "3": print(f"Résultat : {a * b}") elif choix == "4": if b == 0: print("Erreur : division par zéro") else: print(f"Résultat : {a / b}") except ValueError: print("Erreur : nombres invalides")8. Bonnes pratiques
Section titled “8. Bonnes pratiques”1. Toujours valider les entrées
Section titled “1. Toujours valider les entrées”# ✅ Bonwhile True: try: age = int(input("Âge : ")) if age > 0: break print("L'âge doit être positif") except ValueError: print("Veuillez entrer un nombre")
# ❌ Mauvaisage = int(input("Âge : ")) # Peut planter le programme2. Fournir des messages clairs
Section titled “2. Fournir des messages clairs”# ✅ Bonnom = input("Entrez votre nom complet : ")age = int(input("Entrez votre âge (en années) : "))
# ❌ Mauvaisnom = input()age = int(input("Âge : ")) # Pas assez précis3. Nettoyer les données
Section titled “3. Nettoyer les données”# ✅ Bonnom = input("Nom : ").strip().title()# " riyad " devient "Riyad"
# ❌ Mauvaisnom = input("Nom : ") # Garde les espaces et la casse📋 Évaluation des connaissances
Section titled “📋 Évaluation des connaissances”À quoi sert cette évaluation ?
Section titled “À quoi sert cette évaluation ?”Cette évaluation rapide (3 minutes) va vous permettre de vérifier votre compréhension de la fonction input() et la gestion des entrées utilisateur en Python.
Instructions :
- 🕒 Temps limité : 3 minutes
- 🎯 Seuil de réussite : 80%
- 💡 Les réponses seront expliquées à la fin
À vous de jouer ! 🚀
📝 Exercices pratiques
Section titled “📝 Exercices pratiques”Exercice 1 : Présentation simple
Énoncé : Créez un programme qui demande le prénom, le nom et l’âge de l’utilisateur, puis affiche une phrase de présentation complète.
Exemple d’exécution :
Prénom : RiyadNom : KouadioÂge : 25Je m'appelle Riyad Kouadio et j'ai 25 ans.Voir la solution
prenom = input("Prénom : ").strip()nom = input("Nom : ").strip()age = int(input("Âge : "))
print(f"Je m'appelle {prenom} {nom} et j'ai {age} ans.")Résultat attendu :
Prénom : RiyadNom : KouadioÂge : 25Je m'appelle Riyad Kouadio et j'ai 25 ans.Exercice 2 : Calculateur de surface rectangulaire
Énoncé : Demandez la longueur et la largeur d’un rectangle, puis calculez et affichez sa surface et son périmètre.
Formules :
- Surface = longueur × largeur
- Périmètre = 2 × (longueur + largeur)
Exemple d’exécution :
Longueur (en m) : 5Largeur (en m) : 3Surface : 15.0 m²Périmètre : 16.0 mVoir la solution
longueur = float(input("Longueur (en m) : "))largeur = float(input("Largeur (en m) : "))
surface = longueur * largeurperimetre = 2 * (longueur + largeur)
print(f"Surface : {surface} m²")print(f"Périmètre : {perimetre} m")Résultat attendu :
Longueur (en m) : 5Largeur (en m) : 3Surface : 15.0 m²Périmètre : 16.0 mExercice 3 : Conversion de devises
Énoncé : Créez un convertisseur Euro → Dollar. Demandez un montant en euros et affichez l’équivalent en dollars (taux : 1€ = 1.10$).
Exemple d’exécution :
Montant en euros : 100100.0€ = 110.0$Voir la solution
TAUX_CONVERSION = 1.10
euros = float(input("Montant en euros : "))dollars = euros * TAUX_CONVERSION
print(f"{euros}€ = {dollars}$")Résultat attendu :
Montant en euros : 100100.0€ = 110.0$Exercice 4 : Calcul de remise commerciale
Énoncé : Demandez le prix d’un article et le pourcentage de remise. Calculez et affichez le montant de la remise et le prix final.
Exemple d’exécution :
Prix de l'article : 50Pourcentage de remise : 20Remise : 10.0€Prix final : 40.0€Voir la solution
prix = float(input("Prix de l'article : "))pourcentage = float(input("Pourcentage de remise : "))
remise = prix * (pourcentage / 100)prix_final = prix - remise
print(f"Remise : {remise}€")print(f"Prix final : {prix_final}€")Résultat attendu :
Prix de l'article : 50Pourcentage de remise : 20Remise : 10.0€Prix final : 40.0€Exercice 5 : Vérificateur d'année bissextile
Énoncé : Demandez une année et indiquez si elle est bissextile ou non.
Règle : Une année est bissextile si elle est divisible par 4, sauf si elle est divisible par 100 (mais si elle est divisible par 400, elle est bissextile).
Exemple d’exécution :
Entrez une année : 20242024 est une année bissextile.Voir la solution
annee = int(input("Entrez une année : "))
if (annee % 4 == 0 and annee % 100 != 0) or (annee % 400 == 0): print(f"{annee} est une année bissextile.")else: print(f"{annee} n'est pas une année bissextile.")Résultat attendu :
Entrez une année : 20242024 est une année bissextile.Exercice 6 : Calculateur de pourboire
Énoncé : Créez un programme qui calcule le pourboire pour un restaurant. Demandez le montant de l’addition et le pourcentage de pourboire souhaité, puis affichez le montant du pourboire et le total à payer.
Exemple d’exécution :
Montant de l'addition : 85Pourcentage de pourboire (%) : 15Pourboire : 12.75€Total à payer : 97.75€Voir la solution
addition = float(input("Montant de l'addition : "))pourcentage = float(input("Pourcentage de pourboire (%) : "))
pourboire = addition * (pourcentage / 100)total = addition + pourboire
print(f"Pourboire : {pourboire:.2f}€")print(f"Total à payer : {total:.2f}€")Résultat attendu :
Montant de l'addition : 85Pourcentage de pourboire (%) : 15Pourboire : 12.75€Total à payer : 97.75€Exercice 7 : Validation d'âge avec retry
Énoncé : Créez un programme qui demande l’âge de l’utilisateur. Si l’entrée est invalide (non numérique, négative ou supérieure à 120), redemandez jusqu’à obtenir une valeur valide.
Exemple d’exécution :
Entrez votre âge : abc❌ Veuillez entrer un nombre valideEntrez votre âge : -5❌ L'âge ne peut pas être négatifEntrez votre âge : 25✅ Âge enregistré : 25 ansVoir la solution
while True: try: age = int(input("Entrez votre âge : "))
if age < 0: print("❌ L'âge ne peut pas être négatif") continue
if age > 120: print("❌ Âge non réaliste (max 120 ans)") continue
print(f"✅ Âge enregistré : {age} ans") break
except ValueError: print("❌ Veuillez entrer un nombre valide")Résultat attendu :
Entrez votre âge : abc❌ Veuillez entrer un nombre valideEntrez votre âge : -5❌ L'âge ne peut pas être négatifEntrez votre âge : 25✅ Âge enregistré : 25 ansExercice 8 : Conversion Celsius/Fahrenheit bidirectionnelle
Énoncé : Créez un convertisseur de température qui demande d’abord le type de conversion souhaité (C→F ou F→C), puis effectue la conversion.
Formules :
- Celsius → Fahrenheit : F = (C × 9/5) + 32
- Fahrenheit → Celsius : C = (F - 32) × 5/9
Exemple d’exécution :
=== CONVERTISSEUR DE TEMPÉRATURE ===1. Celsius → Fahrenheit2. Fahrenheit → CelsiusVotre choix (1 ou 2) : 1Température en Celsius : 2525.0°C = 77.0°FVoir la solution
print("=== CONVERTISSEUR DE TEMPÉRATURE ===")print("1. Celsius → Fahrenheit")print("2. Fahrenheit → Celsius")
choix = input("Votre choix (1 ou 2) : ").strip()
if choix == "1": celsius = float(input("Température en Celsius : ")) fahrenheit = (celsius * 9/5) + 32 print(f"{celsius}°C = {fahrenheit}°F")elif choix == "2": fahrenheit = float(input("Température en Fahrenheit : ")) celsius = (fahrenheit - 32) * 5/9 print(f"{fahrenheit}°F = {celsius:.2f}°C")else: print("❌ Choix invalide")Résultat attendu :
=== CONVERTISSEUR DE TEMPÉRATURE ===1. Celsius → Fahrenheit2. Fahrenheit → CelsiusVotre choix (1 ou 2) : 1Température en Celsius : 2525.0°C = 77.0°FExercice 9 : Système de notation avec commentaire
Énoncé : Créez un programme qui demande une note sur 20 et affiche une appréciation selon les critères :
- 16-20 : Excellent
- 14-15 : Très bien
- 12-13 : Bien
- 10-11 : Assez bien
- 0-9 : Insuffisant
Exemple d’exécution :
Entrez une note sur 20 : 17Note : 17/20Appréciation : Excellent ✨Voir la solution
while True: try: note = float(input("Entrez une note sur 20 : "))
if note < 0 or note > 20: print("❌ La note doit être entre 0 et 20") continue
print(f"Note : {note}/20")
if note >= 16: print("Appréciation : Excellent ✨") elif note >= 14: print("Appréciation : Très bien 🎉") elif note >= 12: print("Appréciation : Bien 👍") elif note >= 10: print("Appréciation : Assez bien 🙂") else: print("Appréciation : Insuffisant 📚")
break
except ValueError: print("❌ Veuillez entrer un nombre valide")Résultat attendu :
Entrez une note sur 20 : 17Note : 17.0/20Appréciation : Excellent ✨Exercice 10 : Quiz interactif
Énoncé : Créez un mini-quiz de 3 questions avec des réponses à choix multiples. Comptez le nombre de bonnes réponses et affichez le score final.
Exemple d’exécution :
=== QUIZ PYTHON ===
Question 1 : Quel est le type retourné par input() ?a) intb) strc) floatVotre réponse : b✅ Correct !
Question 2 : Comment convertir en entier ?a) str()b) int()c) float()Votre réponse : b✅ Correct !
Question 3 : Quelle méthode supprime les espaces ?a) .remove()b) .delete()c) .strip()Votre réponse : c✅ Correct !
=== RÉSULTAT ===Score : 3/3Bravo, parfait ! 🏆Voir la solution
print("=== QUIZ PYTHON ===\n")
score = 0total = 3
# Question 1print("Question 1 : Quel est le type retourné par input() ?")print("a) int")print("b) str")print("c) float")reponse1 = input("Votre réponse : ").strip().lower()if reponse1 == "b": print("✅ Correct !\n") score += 1else: print("❌ Incorrect. La bonne réponse était 'b'\n")
# Question 2print("Question 2 : Comment convertir en entier ?")print("a) str()")print("b) int()")print("c) float()")reponse2 = input("Votre réponse : ").strip().lower()if reponse2 == "b": print("✅ Correct !\n") score += 1else: print("❌ Incorrect. La bonne réponse était 'b'\n")
# Question 3print("Question 3 : Quelle méthode supprime les espaces ?")print("a) .remove()")print("b) .delete()")print("c) .strip()")reponse3 = input("Votre réponse : ").strip().lower()if reponse3 == "c": print("✅ Correct !\n") score += 1else: print("❌ Incorrect. La bonne réponse était 'c'\n")
# Résultat finalprint("=== RÉSULTAT ===")print(f"Score : {score}/{total}")
if score == total: print("Bravo, parfait ! 🏆")elif score >= 2: print("Très bien ! 👏")else: print("Continuez à pratiquer ! 📚")Résultat attendu :
=== QUIZ PYTHON ===
Question 1 : Quel est le type retourné par input() ?a) intb) strc) floatVotre réponse : b✅ Correct !
Question 2 : Comment convertir en entier ?a) str()b) int()c) float()Votre réponse : b✅ Correct !
Question 3 : Quelle méthode supprime les espaces ?a) .remove()b) .delete()c) .strip()Votre réponse : c✅ Correct !
=== RÉSULTAT ===Score : 3/3Bravo, parfait ! 🏆Exercice 11 : Calculateur de temps de trajet
Énoncé : Créez un programme qui calcule le temps de trajet. Demandez la distance (en km) et la vitesse moyenne (en km/h), puis affichez le temps en heures et minutes.
Formule : Temps = Distance / Vitesse
Exemple d’exécution :
Distance (km) : 150Vitesse moyenne (km/h) : 90Temps de trajet : 1h 40minVoir la solution
distance = float(input("Distance (km) : "))vitesse = float(input("Vitesse moyenne (km/h) : "))
if vitesse <= 0: print("❌ La vitesse doit être positive")else: temps_heures = distance / vitesse heures = int(temps_heures) minutes = int((temps_heures - heures) * 60)
print(f"Temps de trajet : {heures}h {minutes}min")Résultat attendu :
Distance (km) : 150Vitesse moyenne (km/h) : 90Temps de trajet : 1h 40minExercice 12 : Générateur de mot de passe simple
Énoncé : Créez un programme qui génère un mot de passe simple en combinant :
- Le prénom de l’utilisateur
- Son année de naissance
- Un symbole choisi parmi : !, @, #, $
Exemple d’exécution :
=== GÉNÉRATEUR DE MOT DE PASSE ===Votre prénom : RiyadAnnée de naissance : 2000Choisissez un symbole (!, @, #, $) : @Votre mot de passe : Riyad2000@Voir la solution
print("=== GÉNÉRATEUR DE MOT DE PASSE ===")
prenom = input("Votre prénom : ").strip().capitalize()annee = input("Année de naissance : ").strip()symbole = input("Choisissez un symbole (!, @, #, $) : ").strip()
if symbole in ["!", "@", "#", "$"]: mot_de_passe = f"{prenom}{annee}{symbole}" print(f"Votre mot de passe : {mot_de_passe}")else: print("❌ Symbole invalide")Résultat attendu :
=== GÉNÉRATEUR DE MOT DE PASSE ===Votre prénom : RiyadAnnée de naissance : 2000Choisissez un symbole (!, @, #, $) : @Votre mot de passe : Riyad2000@Résumé
Section titled “Résumé”La gestion des entrées utilisateur est essentielle pour créer des programmes interactifs. Les points clés à retenir :
input()retourne toujours une chaîne de caractères- Utilisez
int(),float()pour convertir les types - Validez toujours les entrées avec
try-except - Nettoyez les données avec
.strip(),.lower(), etc. - Fournissez des messages clairs et des retours informatifs
- Gérez les erreurs de manière élégante
Avec ces techniques et les exercices pratiques, vous pouvez créer des applications robustes et conviviales !