Alien (3) - Instructions conditionnelles
Les règles sont simples : l'alien se situe au départ au centre de la grille et peut être déplacé avec les fonctions
haut, bas, gauche et droite.
L'objectif est de trouver la case finale de l'alien (et donc son parcours) après exécution du programme donné, ou d'écrire le programme permettant de reproduire le cheminement proposé.
Lorsqu'il s'agit d'écrire le programme, il ne faut modifier que les ... présents dans le code :
- avec une valeur,
- avec une instruction complète,
- si
...est le seul contenu d'une ligne, il ne faut les remplacer que par une seule ligne de code (sauf mention contraire).
Les différentes instructions
haut(4)déplace l'alien de4cases vers le haut ;haut(-2)déplace l'alien de2cases vers le bas ;haut()déplace l'alien de1case vers le haut (c'est donc équivalent àhaut(1)).
Le principe est similaire avec les trois autres fonctions.
Attention : mode de déplacement
Dans les exercices où l'on doit déplacer l'alien, les appels de fonction comme haut(4) signifient que l'alien se déplace de 4 cases en une fois, et non 4 fois de une case. Ne cliquer que sur la case d'arrivée.
Nouvelles fonctions !
Trois autres fonctions permettent de situer l'alien dans la grille :
case()renvoie la case sur laquelle se trouve l'alien, de"A01"à"O15";ligne()renvoie la ligne de la case sur laquelle se trouve l'alien, de"A"à"O";colonne()renvoie la colonne de la case sur laquelle se trouve l'alien,"01"à"15".
Pour les questions suivantes, dessinez le parcours de l'alien en cliquant sur la case d'arrivée de chaque instruction exécutée. Vous pourrez ensuite valider votre parcours pour vérifier s'il est correct.
Instruction conditionnelle
Une instruction conditionnelle, ou instruction de test, permet de faire des choix en fonction de la valeur d'une condition. On parle souvent d'une instruction « si ... alors », ou « if ... else » en anglais.
if condition_1:
bloc_instructions_1
elif condition_2:
bloc_instructions_2
else:
bloc_instructions_3
Le code ci-dessus indique que si la condition_1 est vraie, on n'exécute que bloc_instruction_1, sinon on regarde si condition_2 est vraie, on n'exécute que bloc_instruction_2, et si les deux conditions sont fausses, on n'exécute que bloc_instruction_3
Les mots-clés « if », « elif » (contraction de else if) et « else » sont les traductions respectives de « si », « ou si » et « sinon ».
Syntaxe et exécution
Le nombre de conditions peut varier, mais les contraintes suivantes doivent toujours être respectées :
- La première condition est toujours un
if. - Il peut y avoir de \(0\) à \(N\) conditions
elif. - Dans un groupe de conditions, c'est la première qui est vraie qui est exécutée (et uniquement celle-ci).
- Si
elseest utilisé, c'est forcément en tout dernier. Son code n'est exécuté que si aucune des conditions précédentes n'étaient vraies.
if ... elif \(\neq\) if ... if !
Les deux codes ci-dessous n'ont pas du tout le même comportement !
Un seul bloc de conditions
if True:
print("un")
elif True:
print("deux")
Affiche :
un
Deux blocs différents
if True:
print("un")
if True:
print("deux")
Affiche :
un
deux
Comparaison
Une condition est une instruction qui est soit vraie, soit fausse. On dit qu'il s'agit d'une expression booléenne.
Pour tester des inégalité larges (comme \(a \leqslant b\) et \(a \geqslant b\)) ou la différence (comme \(a\neq b\)) on utilise les syntaxes suivantes :
-
le signe
<=pour inférieur ou égal ; -
le signe
>=pour supérieur ou égal ; -
le signe
!=pour n'est pas égal à.
On peut résumer les tests possibles dans le tableau ci-dessous :
| Test | Syntaxe Python |
|---|---|
| \(a=b\) | a == b |
| \(a\neq b\) | a != b |
| \(a<b\) | a < b |
| \(a\leqslant b\) | a <= b |
| \(a>b\) | a > b |
| \(a\geqslant b\) | a >= b |
Exemples
>>> 15 >= 10
True
>>> 5 < 10
True
>>> 32 < 32
False
Comparaison de chaines de caractères
Lorsque l'on compare deux chaines de caractères entre elles, on les compare selon l'ordre alphabétique, caractère par caractère.
Exemples
>>> "A" >= "B"
False
>>> "01" < "15"
True
>>> "code" < "mode"
True
>>> "2" < "15"
False
Source d'erreur classique
Le test d'égalité entre deux variables se fait avec un double égal == (car le simple = a un rôle différent : celui d'affecter une valeur à une variable).
Question 1 : Dessinez le parcours
| 🐍 Script Python | |
|---|---|
1 2 3 4 5 6 7 | |
Dessinez le parcours
Question 2 : Dessinez le parcours
| 🐍 Script Python | |
|---|---|
1 2 3 4 5 6 7 8 | |
Dessinez le parcours
Question 3 : Dessinez le parcours
| 🐍 Script Python | |
|---|---|
1 2 3 4 5 6 7 | |
Dessinez le parcours
Question 4 : Dessinez le parcours
| 🐍 Script Python | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
Dessinez le parcours
Pour les questions suivantes écrire le code nécessaire pour obtenir le déplacement souhaité (les numéros correspondent aux différentes étapes).
Question 5 : Codez le parcours
Figure attendue
Tracé du parcours (le vôtre à gauche, la solution à droite)
Question 6 : Codez le parcours
Figure attendue
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Tracé du parcours (le vôtre à gauche, la solution à droite)
Question 7 : Codez le parcours
Figure attendue
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Tracé du parcours (le vôtre à gauche, la solution à droite)
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)