Switch#
Introduction#
Switch blocks help students transition from block-based coding to text-based coding. With Switch blocks, students can type Python code directly inside a blocks project — writing commands, conditions, values, or function definitions — while still building the rest of the project with blocks. Individual blocks can also be converted into their equivalent Python commands.
To learn how to type Python commands, methods, and operators, see the VEX VR Python API.
Because Switch blocks contain Python code, spelling, punctuation, and indentation must be correct for the project to run as expected.
Below is a list of all Switch blocks:
Switch blocks — Add Python code to a Blocks project.
Stack — Provides a space to type Python commands that run in sequence with other stack blocks.
C Block — Provides a space to type Python control code, such as
if,while, orforstatements.C Expandable — Provides a space to type Python control code with multiple branches, such as
if,elif, orelse.Boolean — Provides a space to type Python code that returns
TrueorFalse.Reporter — Provides a space to type Python code that returns a value.
Hat — Provides a space to define a Python function.
Stack#
The Stack block provides a space to type Python commands that run in sequence with other stack blocks.
[] :: custom-switch
A Stack block can contain one line or multiple lines of Python code.
when started
[Drive forward 400 mm.]
[drivetrain.drive_for(FORWARD, 400, MM)] :: custom-switch
C Block#
The C Block provides a space to type Python control code, such as if, while, or for statements. Blocks placed inside the C Block run as part of that Python control structure.
if [] :: custom-switch
end
Python control code that can be used in a C Block includes:
ifwhilefor
when started
[Continuously drive until the bumper is pressed.]
drive [forward v]
forever
if [if bumper.pressed():] :: custom-switch
print [Bumper was pressed!] ▶
stop driving
end
end
C Expandable#
The C Expandable block provides a space to type Python control code with multiple branches, such as if, elif, or else. Additional branches can be added by selecting the plus arrow.
if [] :: custom-switch-expand
end
Python control code that can be used in a C Expandable block includes:
ifelifelsewhilefor
when started
[Continuously move forward until the bumper is pressed.]
forever
if [if bumper.pressed():] :: custom-switch-expand
print [Bumper was pressed!] ▶
stop driving
else [else:] :: custom-switch-expand
drive [forward v]
end
end
Boolean#
The Boolean block provides a space to type Python code that returns True or False. It can be placed inside blocks with hexagonal inputs.
<[] :: custom-switch>
A Boolean block can contain a Python condition.
<[bumper.pressed()] :: custom-switch>
A Boolean block can also use logical operators:
andornot
<[bumper.pressed() or distance.found_object()] :: custom-switch>
A Boolean block can use comparison operators to compare values:
Greater than:
>Less than:
<Equal to:
==Other comparison operators include
<=,!=, and>=
<[drivetrain.heading() > 100] :: custom-switch>
when started
[Turn right until the Distance Sensor finds an object.]
turn [right v]
forever
if <[distance.found_object()] :: custom-switch> then
print [Object found!] ▶
stop driving
end
end
Reporter#
The Reporter block provides a space to type Python code that returns a value. It can be placed inside blocks with circular inputs.
([] :: custom-switch)
A Reporter block can contain Python code that returns a value.
([drivetrain.heading()] :: custom-switch)
Math operators can be used in a Reporter block:
Addition:
+Subtraction:
-Division:
/Multiplication:
*
([drivetrain.heading() + 45] :: custom-switch)
when started
[Print the robot's heading plus 45 degrees.]
print ([drivetrain.heading() + 45] :: custom-switch) ▶
Hat#
The Hat block provides a space to define a Python function. Blocks attached under the Hat become the body of that function.
[] :: hat custom-switch
Type a Python function definition in the Hat block. Parameters go inside the parentheses. If the function does not use parameters, use empty parentheses.
[def function_name(parameter):] :: hat custom-switch
[def drive_400():] :: hat custom-switch
[Define a custom function using a Hat block.]
drive [forward v] for (400) [mm v] ▶
when started
[drive_400()] :: custom-switch