Lección 2: Uso de un bucle While
En esta lección, creará un proyecto utilizando el sensor de parachoques y el bucle mientras . En el mini-desafío, aplicarás estas habilidades para navegar desde el comienzo del laberinto de la pared hasta la letra "A".

Resultados de aprendizaje
- Identifique que los comandos que no están en espera hacen que el proyecto continúe incluso si el comportamiento del comando aún no se ha completado.
- Identifique que un comando de espera completa el comportamiento antes de continuar con el proyecto.
- Identifique que el bucle while verificará repetidamente una condición booleana y no pasará al siguiente comando hasta que la condición informe Verdadero.
- Identifique que el bucle while se utiliza con comandos que no son de espera (por ejemplo, drive) para verificar la condición del sensor.
- Identifique que la palabra clave no invierte el valor de una condición booleana de Verdadero a Falso o de Falso a Verdadero.
- Identifique que los comandos left_bumper.pressed y right_bumper.pressed devuelven un valor Verdadero o Falso en un while bucle.
- Describa cómo crear un proyecto que tenga una unidad de robot VR hacia adelante hasta que se presione el sensor del parachoques.
Bucles While
El bucle while acepta condiciones booleanas. Mientras que los bucles comprueban repetidamente una condición booleana y controlan el flujo del proyecto. El bucle while continuará mientras la condición sea& Verdadera. El bucle while saldrá del bucle y pasará al siguiente comando fuera del bucle una vez que la condición se informe como Falso.

Básicamente, un bucle mientras le dice al robot VR que continúe realizando un comportamiento mientras se cumple una determinada condición. La lógica es similar a este escenario: mientras brilla el sol, ve a jugar afuera. ¿Qué harías? La condición de "el sol está brillando" determina dónde debes estar. Cuando el sol brilla, la condición es Verdadero, así que ve a jugar afuera. Cuando el sol se pone, esa condición es falsa, por lo que volverías a entrar.

Los bucles y el problema del laberinto de pared
La misma lógica se aplica al robot de realidad virtual en el laberinto de la pared. Mientras el sensor del parachoques no esté pulsado, el robot VR debe seguir avanzando. Cuando se pulsa, debe detenerse o girar. Usando mientras bucles en conjunción con comandos que no requieren espera, como conducir, podemos codificar el Robot VR para hacer justamente eso. However, the Bumper Sensor commands use the condition of the Bumper Sensor being pressed (left_bumper.pressed or right_bumper.pressed) In order to code the VR Robot to drive while the Bumper Sensor is not pressed, we need to use a not operator.
def main():
while not condition:
wait (5, MSEC)Para su información
Los comandos de no espera y de espera determinan cuándo comienza un comportamiento el siguiente comando. Los comandos de espera, como drive_for y turn_for, completan sus comportamientos antes de pasar al siguiente comando del proyecto. Los comandos que no requieren espera, como drive y turn, continúan moviéndose al siguiente comando en el proyecto incluso si el comportamiento del comando que no requiere espera no está completo.
Comandos en espera
transmisión.drive_for(ADELANTE, 200, MM)
transmisión.turn_for(DERECHA, 90, GRADOS)Comandos que no están a la espera
drivetrain.drive(ADELANTE)
drivetrain.turn(DERECHA)La palabra clave Not
La palabra clave not normalmente se usará con los bucles while , para hacer que los comandos dentro del bucle se ejecuten mientras la condición devuelve Falso. Para utilizar el ejemplo "el sol está brillando", se puede lograr el mismo efecto utilizando un operador y no . Mientras no brille el sol, entra.

En el laberinto de pared, esto es útil para que podamos codificar el robot VR para que, mientras no se presiona el sensor de parachoques, avance. La condición sigue siendo "si se pulsa el sensor del parachoques", pero de esta manera, cuando informa Falso (no pulsado), el flujo del proyecto permanece en el bucle. Cuando se pulsa el sensor de parachoques, la condición es verdadera, por lo que el proyecto saldrá del bucle.
Para su información
La palabra clave no es un operador lógico que el valor de un valor booleano. Poner la palabra clave no delante de un comando que devuelve un valor booleano invertirá Verdadero a Falso y Falso a Verdadero. Por ejemplo, imagine que se presiona el sensor del parachoques izquierdo en el robot VR y el comando left_bumper.pressed devuelve True. La palabra clave no invertirá el valor booleano y hará que esta expresión devuelva Falso.
not left_bumper.pressed()Dependiendo de los datos del sensor que esté utilizando, la palabra clave y no puede ser necesaria para que un robot VR ejecute los comportamientos deseados.
def main():
while not left_bumper.pressed():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()Creación de un proyecto con un bucle While y el sensor de parachoques
Nombrar y guardar el proyecto
- Abra un nuevo proyecto de texto y seleccione Wall Maze Playground cuando se le solicite.

-
Nombra el proyecto Unit4Lesson2.

-
Arrastre o escriba el comando mientras en el espacio de trabajo para reemplazar el comando Drivetrain que se completa automáticamente como parte de un nuevo proyecto de texto. Tenga en cuenta que hay un comando a esperar dentro del bucle. No elimine el comando wait , garantizará que el Robot VR ejecute el proyecto correctamente. Tu proyecto debería verse así:
def main(): while condition: wait(5, MSEC) -
Escriba un operador no después del 'while' en el comando while . Tu proyecto ahora debería verse así:
def main(): while not condition: wait(5, MSEC) -
Arrastre o escriba el comando left_bumper.pressed en la 'condición' del bucle while. Los comandos dentro del bucle se ejecutarán mientras la condición no sea Verdadera, es decir, cuando no se pulse el Sensor del Parachoques Izquierdo. Tu proyecto ahora debería verse así:
def main(): while not left_bumper.pressed(): wait(5, MSEC) -
Dentro del bucle while , arrastre o escriba el comando drive. Asegúrese de que el comando drive y el comando wait estén correctamente sangrados dentro del bucle while , de modo que el bucle se ejecute según lo previsto. Puede utilizar las líneas de guía como ayuda visual. Tu proyecto ahora debería verse así:
def main(): while not left_bumper.pressed(): drivetrain.drive(FORWARD) espera(5, MSEC) -
Arrastre o escriba un comando stop fuera del bucle while Asegúrese de que el comando stop esté alineado con el bucle while y no sangrado, de modo que se fuera del bucle como está previsto. Puede utilizar las líneas de guía como ayuda visual. Tu proyecto ahora debería verse así:
def main(): while not left_bumper.pressed(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() - Abra la ventana del patio de recreo si aún no está abierta. Asegúrate de que el laberinto de pared del patio de juegos se abra.
- Ejecutar el proyecto.
- Observe el accionamiento del robot VR desde el inicio del laberinto de pared y deténgase cuando el sensor de parachoques sea presionado por la pared.
- El comando Drive permite que el robot VR siga avanzando mientras comprueba el estado del sensor del parachoques con el comando Left Bumper Pressed. Una vez que el comando left_bumper.pressed se informe como Verdadero, el Robot VR se moverá al siguiente comando fuera del bucle y dejará de conducir.
Seleccione el botón Siguiente para continuar con el resto de esta lección.