Nous avons déjà effectué des petits programmes. Mais ils ne suffiront certainement pas à la plupart des situations. C'est une étape importante que de programmer en prenant en compte des critères que nous, développeurs, n'aurions pas besoin nécessairement d'utiliser à un moment donné. La variable était déjà une façon de prendre en compte la diversité des valeurs possibles pour une information. Maintenant, il existera des cas dans lesquels le calcul ne peut être effectué ou ne doit l'être. Pour détecter ces cas, il suffira de comparer les données fournies avec des valeurs spécifiées pour s'assurer que certaines conditions sont remplies. Par exemple, gardons notre programme calculant le périmètre, mais incluons de quoi calculer les dimensions en fonction d'une unité fournie. Pour cela, nous demanderons à l'utilisateur de choisir entre deux possibilités, nous testerons ce qu'il a saisi et afficheront le résultat dans l'unité de son choix.
La comparaison la plus simple se fait à l'aide de if...else... s'écrivant sous une forme bien particulière :
if comparaison : action à effectuer si la comparaison est valable else : action à effectuer si elle ne l'est pas
Dans cette structure de base, sont absolument nécessaires :
les : à la fin de la ligne if et else
la tabulation en début des lignes d'actions, nommées en général bloc d'instruction
Note : le concept d'indentation (tabulation en début de ligne) est un concept fondamental en Python.
Les retraits permettent à Python de comprendre la suite et l'imbrication des actions et d'éviter au programme de se tromper de direction.
Revenons maintenant à notre exemple.
Pour demander les possibilités, nous utiliserons pour l'instant une simple solution : nous écrirons les unités possibles et attendrons que l'utilisateur saisisse la valeur. Nous utiliserons donc print et raw_input().
print "votre unité de mesure finale voulue : mètre ou centimètre ?" unite = input()
Il suffit alors de reprendre le programme tel que nous l'avions défini et de nous placer à la dernière ligne.
if unite == "mètre" : print perimetre, " mètre" #nous considérons qu'il les a écrits en mètre else : print perimetre*100, " cm"
Si le nombre de conditions est supérieur à 2 la structure if...else... ne sera pas suffisante. Dans ce cas, nous pourrons avoir recours à sa variante : if...elif...elif...else...
Elle s'écrira plus précisément sous la forme :
if unite == "mètre" : print (perimetre, " mètre") elif unite == "centimètre" : print (perimetre*100, " centimètre") elif unite == "millimètre" : print (perimetre*1000, " millimètre") elif unite == "kilomètre" : print (perimetre/1000, " kilomètre")
Une version plus courte d'écrire les tests simples est souvent utilisée. Il s'agit de l'opérateur dit ternaire.
Alors qu'une condition occupe 4 lignes avec la syntaxe de base, avec l'opérateur ternaire, tout sera sur une seule ligne. Cela peut être pratique quand les lignes se multiplient et les niveaux d'indentation aussi. La syntaxe est la suivante :
x = true_value if condition else false_value
La forme de cette expression peut sembler un peu étrange du fait qu'elle est inversée et fonctionne directement en mode affectation. Au lieu d'exprimer, si une condition est vraie ou fait ceci, sinon on fait cela, on exprime on fait cela si une condition est vraie sinon va voir ailleurs. Il s'agit d'une petite chose mais qui marche parfaitement pour les petits besoins. Évidemment, le rôle de l'opérateur ternaire n'est pas de prendre la place de blocs d'instructions complexes.
Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.
Vous devriez rafraîchir la page.