Posez des questions à l'utilisateur¶
Maintenant, on aimerait bien avoir des programmes qui ne s'exécutent pas toujours de la même manière, mais réagissent à ce que leur dit l'utilisateur. Et bien on va voir comment faire ça tout de suite !
Le mot clé input¶
La ligne de code nom = input("Quel est votre nom ? ") pose la question "Quel est votre nom ? " à l'utilisateur, interromp le programme jusqu'à ce qu'il appuie sur entrée, puis stocke dans la variable nom la valeur tapée par l'utilisateur.
Copiez-collez donc ce code sur votre pc, exécutez le et regardez ce qu'il se passe.
nom = input("Quel est votre nom ? ")
print(f"Vous vous appelez {nom}.")
Quel est votre nom ? Gertrude
Vous vous appelez Gertrude.
Conversion de types¶
Ok, mais maintenant imaginons qu'on veuille coder un programme qui demande son age à l'utilisateur, puis lui dit l'age qu'il aura dans 5 ans.
La manière la plus simple de le faire serait la suivante :
age = input("Quel est votre age ? ")
print(f"Dans 5 ans, vous aurez {age+5} ans.")
Mais, si vous exécutez ce programme, vous serez alors confrontés à l'erreur suivante :
TypeError: can only concatenate str (not "int") to str
Pas de panique à bord, c'est complètement normal.
En effet, pour le programme, le résultat d'un input est toujours un string (càd une chaîne de caractère), peu importe que l'on ait rentré ce qui à nos yeux devrait être un nombre.
Heureusement, on peut convertir un string en int, en utilisant int(string_a_convertir).
Ce qui nous donne donc le programme suivant, qui devrait s'exécuter normalement.
age = int(input("Quel est votre age ? ")) #age est maintenant un int et plus un string
print(f"Dans 5 ans, vous aurez {age+5} ans.")
De manière générale, on peut (essayer de) convertir n'importe quel type de base dans n'importe quel autre type de base à l'aide des fonctions suivantes :
| Fonction | Description | Exemple | Résultat |
|---|---|---|---|
int(x) |
Convertit x en entier (si possible) |
int("42") |
42 |
float(x) |
Convertit x en nombre à virgule |
float("3.14") |
3.14 |
str(x) |
Convertit x en chaîne de caractères |
str(42) |
"42" |
bool(x) |
Convertit x en booléen |
bool(0) / bool(5) / bool("") |
False / True / False |
Remarquez que la fonction
boola l'air d'avoir des résultats un peu étranges. On en reparlera plus tard...
Quizz¶
Voici un programme Python
a = input()
b = int(input())
print(a+b)
Le programme s'exécute-t-il sans erreurs ?
- Oui
- *Non
> Comme a est de type string et b de type int, on ne peut pas les additioner, et donc Python renvoie une erreur.
Exercice pratique¶
Codez un programme qui demande à un utilisateur combien il a de pommes, poires et carottes, puis qui écrit combien il a de fruit en tout.
Attention ! La carotte n'est pas un fruit.
En résumé¶
Vous savez maintenant
- Poser des questions à l'utilisateur avec
input() - Convertir ses réponses en entier si nécessaire
Mais nos programmes restent assez simples et linéaires dans leurs exécutions. On va bientôt changer tout ça !