Deuxième test de pratique - while repeat if if/else
et image de réflextion¶
- CS20-CP1 Apply various problem-solving strategies to solve programming problems throughout Computer Science 20.
- CS20-CP2 Use common coding techniques to enhance code elegance and troubleshoot errors throughout Computer Science 20.
- CS20-FP2 Investigate how control structures affect program flow.
- CS20-FP3 Construct and utilize functions to create reusable pieces of code.
Pour confirmer que vous comprenez les concepts majeurs que vous avez vus avec Reeborg, essayez de répondre aux 4 premières questions sans ouvrir l’environnement Reeborg.
Question 1 - Boucle While
¶
- est
- réessayez!
- sud
- réessayez!
- ouest
- réessayez!
- nord
- Génial!
reeborg-second-quiz1: Reeborg est face à l’est. Le code suivant est ensuite exécuté:
while not is_facing_north():
turn_left()
À quelle direction le robot fait-il face maintenant?
Question 2 - Boucles While
et Repeat
¶
- est
- réessayez!
- sud
- réessayez!
- ouest
- Génial!
- nord
- réessayez!
reeborg-second-quiz2: Reeborg est face à l’est. Le code suivant est ensuite exécuté:
while not is_facing_north():
turn_left()
repeat 5:
turn_left()
À quelle direction le robot fait-il face maintenant?
Question 3 - Boucles
et if
¶
reeborg-second-quiz3: Reeborg se situe dans un monde où chaque carré a 3 carottes, qui ressemble à ceci:

Le code suivant est ensuite exécuté:
repeat 8:
if object_here():
repeat 2:
take()
move()
Combien de carottes a-t-il Reeborg maintenant?
Question 4 - Boucles
et If/Else
¶
reeborg-second-quiz4: Reeborg tient une grande poignée de carottes et envisage de les planter alors qu’il se promène dans un monde qui ressemble à ceci:

Le code suivant est ensuite exécuté:
repeat 7:
if front_is_clear():
move()
else:
turn_left()
put()
Combien de carottes Reeborg a-t-il plantées lorsque le code est terminé?
Question 5 - Image de réflexion¶
La pièce (ci-dessous) a des alcôves à gauche et à droite. Certaines des alcôves contiennent des fleurs. Pour chaque alcôve sur le côté gauche contenant une fleur, amenez Reeborg à déplacer la fleur vers l’alcôve opposée du côté droit. Un monde de départ possible pourrait ressembler à ceci:
Ouvrez le monde de pratique de l'image de réflexion et créer une solution à ce problème!

Ne regardez pas à cet exemple de solution à moins que vous avez déjà fini de créer votre propre solution!
Puisque toutes les distances dans le monde restent exactement les mêmes à chaque fois, ce problème peut être résolu en utilisant uniquement des boucles repeat
. Veuillez noter qu’il existe de nombreuses solutions possibles à ce problème. En voici une:
think(0)
def turn_around():
repeat 2:
turn_left()
def turn_right():
repeat 3:
turn_left()
def move_daisy():
take()
turn_around()
repeat 6:
move()
put()
turn_around()
repeat 5:
move()
turn_right()
repeat 6:
move()
turn_left()
move()
if object_here():
move_daisy()
else:
turn_around()
move()
turn_left()
if front_is_clear():
move()
Question 6 - Image de réflexion - 2e partie¶
Cette fois, la distance entre l’alcôve à droite et à gauche n’est pas cohérente (C.À.D., les alcôves peuvent être différentes les unes des autres). Encore une fois, pour chaque alcôve contenant une fleur du côté gauche, amenez Reeborg à déplacer la fleur dans l’alcôve opposée du côté droit. Un monde de départ possible pourrait ressembler à ceci:
Ouvrez le Monde de la pratique de l'image de réflection et créer une solution à ce problème! .. image:: images/practice_quiz_alcove2_start.png
** Ne regardez pas ** cet exemple de solution à moins que vous avez déjà fini de créer votre propre solution!
Comme il y a une distance inconnue à parcourir, vous devrez utiliser une boucle while, au lieu de simplement une boucle repeat. Voici une solution possible
think(0)
def turn_around():
repeat 2:
turn_left()
def turn_right():
repeat 3:
turn_left()
def backup():
turn_around()
move()
turn_around()
def move_daisy():
take()
turn_around()
while front_is_clear():
move()
put()
turn_around()
while front_is_clear():
move()
backup()
turn_right()
repeat 6:
move()
turn_left()
move()
if object_here():
move_daisy()
else:
turn_around()
move()
turn_left()
if front_is_clear():
move()