Précédemment, nous avons vu comment manipuler des données et comment les stocker dans des variables. Tout cela est bien beau, mais sauf que nous ne voyons jamais comment fonctionnent nos programmes. Ils ne communiquent pas avec l'utilisateur: ils n'écrit rien et l'utilisateur ne peut pas écrire de valeurs. Cela est assez problématique, car ce pourquoi nous voulons faire un programme, c'est pour qu'il soit juste une boite noire et vide...
Nous allons donc nous intéresser à cela dans cette partie. Nous allons voir comment, dans une interface, le programme et l'utilisateur peuvent communiquer, en voyant comment le programme peut écrire ou lire des informations.
Nous allons tout d'abord nous intéresser à comment le programme peut écrire.
Cela va être très simple, car pour afficher quelque chose à l'utilisateur, nous allons écrire:
print(valeur_a_afficher)
Ce qu'il y a à l'intérieur des parenthèses peut être de n'importe quel type: int, string, float par exemple. On peut donc par exemple afficher une phrase:
print("Bonjour les amis !")
print permet aussi d'afficher de plusieurs manières. Si par exemple nous voulons afficher plusieurs valeurs, il faut alors les écrire les unes après les autres, en les séparant par une virgule:
print(valeur_une, valeur_deux, valeur_trois...)
print sépare par défaut toutes les valeurs par un espace et va à la ligne à la fin, mais on peut tout à fait modifier cela. Ainsi, pour modifier la fin des valeurs, on écrit end= suivi du string de fin et pour modifier la séparation, on écrit sep= suivi de la nouvelle séparation. Ceci se met à la fin. Par exemple, pour mettre juste un espace à la fin de l'affichage, on écrit:
print("Bonjour tout le monde !", end=" ")
Ou alors pour que la séparation soit par une virgule, puis deux retours à la ligne à la fin:
print(1, 2, 3, 4, sep=", ", end="\n\n") #Le retour à la ligne s'écrit "\n".
Au fait, afin d'écrire certains caractères différents des lettres classiques (ex: le retour à la ligne), on utilise des écritures spéciales par convention. En voici une liste non exhaustive:
\n (retour à la ligne comme vu avant)
\t (tabulation)
\' (guillemet)
\" (double guillemets)
Nous pouvons donc maintenant afficher les résultats d'un programme. Par exemple, si l'on reprend le problème des 1,5kg de pommes à 1.68€ le kilo, nous pouvons enfin savoir si oui ou non le résultat est bien 2.52€:
prix_au_kilo = 1.68
prix_total = prix_au_kilo * 5
print(prix_total)
En lançant le programme, nous voyons alors avec réconfort que le résultat est bien celui attendu.
Nous savons maintenant comment le programme peut communiquer avec l'utilisateur. Sauf que nous ne pouvons pas encore communiquer avec le programme. Il va donc toujours faire la même chose et la seule manière de, par exemple, faire un calcul à partir de données différentes est de modifier le programme en lui-même.
En Python, nous pouvons demander à l'utilisateur d'écrire du texte. Pour cela, nous allons écrire input() là où l'on veut utiliser le texte. Par exemple, nous pouvons écrire ceci:
print("Vous avez écrit:", input())
L'interpréteur va d'abord demander du texte à l'utilisateur, puis va afficher "Vous avez écrit:" suivi du texte.
Par contre, vous remarquerez en faisant le test vous-même que le programme ne sera pas poli: il va en effet ne rien dire pour demander le texte ! Si jamais l'on veut mettre un texte juste avant que l'utilisateur écrive (ce qui lui permet de savoir quoi dire), nous pouvons écrire entre les parenthèses de input(). Pour reprendre l'exemple d'avant, nous pouvons écrire ceci:
print("Vous avez écrit:", input("Ecrivez quelque chose: "))
Nous pouvons aussi mettre logiquement le texte lu par le programme dans une variable:
reponse = input("Bonjour ! Quel est votre nom ? ") #Tips: Mettez un espace à la fin.
Par contre, il se peut que nous ne voulions pas que l'utilisateur donne du texte: il devrait pouvoir donner aussi des int ou des float. Mais l'interpréteur va considérer à chaque fois que le résultat de input() est un string. Nous devons alors convertir ce résultat dans le type de données que nous voulons.
Pour créer une donnée à partir d'une ou plusieurs autres (dans notre cas, convertir en autre chose tout bêtement), nous devons écrire le nom du type et mettre entre parenthèse la ou les donnée(s). Concrètement, pour convertir par exemple le string "1729" en int, il faut écrire:
int("1729")
Cela fonctionne pour tous les types classiques, comme int, float et str (pour convertir un int par exemple).
Nous pouvons utiliser cela pour convertir le texte de l'utilisateur en entier ou en flottant en mettant simplement input() entre les parenthèses du type dans lequel on convertit. On peut alors ensuite le mettre dans une variable, faire un calcul, etc.
Ainsi, pour demander un nombre à la personne et lui afficher le nombre multiplié par deux, voici un programme:
reponse = float(input("Choisissez un nombre: "))
print(reponse * 2)
Il existe d'autres astuces pour lire les données écrites d'une certaine manière, mais je réserve cela pour plus tard...
Pour communiquer avec l'utilisateur, nous allons utiliser une interface.
Pour afficher à l'utilisateur, nous allons utiliser print:
print(premiere_valeur, deuxieme_valeur...)
#On peut aussi utiliser le caractère de fin et celui de séparation comme ceci
print(premiere_valeur, deuxieme_valeur..., sep=" ", end="\n")
Voici comment écrire certains caractères différents des lettres classiques:
\n (retour à la ligne)
\t (tabulation)
\' (guillemet)
\" (doubles guillemets)
Pour demander une entrée à l'utilisateur, on va utiliser input qui retourne un string: ce qu'a écrit l'utilisateur.
input("Entrez un nombre: ")
Pour convertir cette chaîne de caractère en un autre type de donnée, nous mettrons le input() dans par exemple int() ou float().
float(input())
Voici par exemple un programme qui demande un nombre à l'utilisateur et affiche son double:
reponse = float(input("Entrez un nombre: "))
print(2 * reponse)