# Scratch and Python Syntax

Explore common concepts in block- and text-based programming.

One aspect of text-based languages that many learners struggle with is understanding the specific syntax (the rules of the language) required. Mistakes in a program are often due to not following these rules, and these mistakes are called syntax errors. Therefore, it is helpful to show the parallels and differences between a language that a learner has already mastered and the one they are trying to learn.

In the next two steps I’ll show you a few Scratch blocks and their equivalent code in Python. The list is far from exhaustive, and is intended as a reference guide rather than an exercise to be worked through.

### Variable Assignment

• In Scratch, a variable needs to be created before it can be assigned a value, whereas in Python, a variable is created when a value is assigned to it.

• In Python, it is necessary to surround strings (any text) with either single (') or double (") quotes.

score = 0
welcome = 'Welcome to the game'


### Increment Variable

• In Scratch, a variable’s value can be increased or decreased. To do this, you use a change block with a variable and the number to increment by, using a negative number to decrease the value.

• To increase or decrease the value of a variable in Python, you must calculate the new value using the value stored in the variable, and assign this new value to the variable.

score = score + 1


### Simple Output

• In Scratch, you make a sprite talk to provide output to the user of the program.

• Python uses print statements to output text, numbers, or symbols.

• Again in Python, you need to use single or double quotes if you are printing strings.

print('Your score is amazing!!!')
print(score)


### Conditional Loops

• Scratch’s conditional loop repeats until a certain statement is True.

• Python’s conditional loop repeats as long as a certain statement is True.

• There needs to be a colon (:) at the end of the statement in Python.

• Notice that the code that is inside the loop is indented. Indentation is normally four spaces or a single tab. This can be compared to the way the Scratch conditional loop block brackets the code within it.

while not score > 10:
print(playing)


• The example above can be simplified in Python though. Using the while loop, it is easier to check that the variable is less than or equal to 10.

while score <= 10:
print(playing)


### Infinite Loops

• Scratch has a specific type of loop that is infinite.

• In Python, a conditional loop is used that always evaluates to True.

while True:
lives = lives + 1


### Conditional Selection

• Scratch has two selection blocks that can be used. If multiple conditions are required, they need to be nested within each other.

• Python has three selection statements: if, elif, and else. Again colons (:) and indentation are needed.

if score > 10:
print("Well done you are doing a great job!")


if score > 10:
print ("Well done you are doing a great job!")
else:
print ("Keep going try to get to 10 points!")


if score > 10:
print ("Well done you are doing a great job!")
elif score < 10:
print ("Keep going try to get to 10 points!")
else:
print ("Yes! You have made it to 10 points!")


### Testing for Equality

• In Scratch, you can use a operator block with an equal sign (=) to test if one value is the same as another value.

• In Python, a single equal sign is reserved for variable assignment, so a double equal sign (==) is used to test for equality.

score == 10


### Challenge

Have a look at the Python code below, then see if you can write the same program in Scratch using the blocks you have seen in this step.

score = 0
welcome = "Welcome to the game"
print(welcome)
while score <= 20:
score += 2
print("You get 2 bonus points for being under 20!!!")
if score >= 20:
print("Well done you have completed the game!")
else:
print("You need to get to 20 to complete the game")


Were there parts of the program which you thought were easier to create in Scratch?