Test assignment for a Python developer

A test code assignment with the step by step solution for a Python developer

Python is one of the most popular programming languages in 2020. Such grand apps as Instagram, Netflix, Spotify, Uber, Pinterest, Reddit were built using Python. In 2019, Python became the second used programming language at GitHub. No wonder that more and more people are trying to get a job as a Python developer.

To choose the best candidate among the number of applicants, companies use a multiple stage approach. Step by step they filter out candidates until they have the best one they are ready to hire.

How to prepare for a Python developer job interview?

These stages of hiring can include CV evaluation, pre-interview test assignment, soft skills assessment, hard skills evaluation (live coding tasks, hackathons, pair coding, etc.). The selection process can be rather stressful for newbie candidates. Plus, it’s not easy to show your best when you are limited in time and stay under pressure.

The good news is you can prepare for most of the things that wait for you on assessment. Quite often, interviewers use the same type of questions and code tasks. Most of them you can find in open source. And we offer to your attention one of the programming assignments for Python developers.

We recommend using Repl.it to practice and see the result in real-time. And if you feel stuck at some point, use our step-by-step guide to complete the task (just don’t scroll too far down the page before you try it).

Test code assignment for a Python engineer: a simple snake game in Python 3.

Goal: to earn points by making a snake grow.

Task: you need to be able to move the snake with keyboard buttons and increase the snake’s length to gain more scores.

Specification: use a Turtle graphics library; display the number of the score during the game and the best score in the end.

Solution: Simple Snake Game in Python 3.

Step 1: Import the libraries that we need for this task.

# Snake Game in Python 3

import turtle
import time
import random

Step 2: Сreate the variables needed for the game: Delay, Score, Snake head, and Food.

# Delay
delay = 0.1
 
# Score
score = 0
high_score = 0

# Set up the screen
wn = turtle.Screen()
wn.title("Snake Game in Python 3")
wn.bgcolor("orange")
wn.setup(width=600, height=600)
wn.tracer(0)

# Snake head
head = turtle.Turtle()
head.speed(0)
head.shape("square")
head.color("black")
head.penup()
head.goto(0,0)
head.direction = "stop"

# Snake food
food = turtle.Turtle()
food.speed(0)
food.shape("circle")
food.color("red")
food.penup()
food.goto(0,100)

segments = []

# Pen
pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 260)
pen.write("Score: 0  High Score: 0", align="center", font=("Courier", 24, "normal"))

Step 3: Create functions for the Snake head movement and add snake control.

# Snake move functionsdef

go_up():
  if head.direction != "down":
      head.direction = "up"

def go_down():
  if head.direction != "up":
      head.direction = "down"

def go_left():
  if head.direction != "right":
      head.direction = "left"

def go_right():
  if head.direction != "left":
      head.direction = "right"

def move():
    if head.direction == "up":
        y = head.ycor()
        head.sety(y + 20)

    if head.direction == "down":
        y = head.ycor()
        head.sety(y - 20)

    if head.direction == "left":
        x = head.xcor()
        head.setx(x - 20)

    if head.direction == "right":
        x = head.xcor()
        head.setx(x + 20)

# Keyboard bindings for keys move

wn.listen()
wn.onkeypress(go_up, "w")
wn.onkeypress(go_down, "s")
wn.onkeypress(go_left, "a")
wn.onkeypress(go_right, "d")

Step 4: Develop an algorithm for snake growth and high score recording.

while True:
    wn.update()

    if head.xcor()>290 or head.xcor()<-290 or head.ycor()>290 or head.ycor()<-290:
        time.sleep(1)
        head.goto(0,0)
        head.direction = "stop"

        # Hide the segments
        for segment in segments:
            segment.goto(1000, 1000)
        
        # Clear the field
        segments.clear()
        score = 0
        delay = 0.1

        pen.clear()
        pen.write("Score: {}  High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) 

    if head.distance(food) < 20:
        # Move the food to a random spot
        x = random.randint(-290, 290)
        y = random.randint(-290, 290)
        food.goto(x,y)

        # Add a segment
        new_segment = turtle.Turtle()
        new_segment.speed(0)
        new_segment.shape("square")
        new_segment.color("grey")
        new_segment.penup()
        segments.append(new_segment)

        # Shorten the delay
        delay -= 0.001

        # Increase the score
        score += 10

        if score > high_score:
            high_score = score
        
        pen.clear()
        pen.write("Score: {}  High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) 

    # Move the end segments first in reverse order
    for index in range(len(segments)-1, 0, -1):
        x = segments[index-1].xcor()
        y = segments[index-1].ycor()
        segments[index].goto(x, y)

    if len(segments) > 0:
        x = head.xcor()
        y = head.ycor()
        segments[0].goto(x,y)

    move()    

    for segment in segments:
        if segment.distance(head) < 20:
            time.sleep(1)
            head.goto(0,0)
            head.direction = "stop"
        
            for segment in segments:
                segment.goto(1000, 1000)
        
            segments.clear()
            score = 0
            delay = 0.1
        
            # Update the score display
            pen.clear()
            pen.write("Score: {}  High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal"))

    time.sleep(delay)

wn.mainloop()

Step 5: Play the game!

We hope you enjoyed working on this task. And there are plenty of similar ones on the Internet. Remember more training equals more chances to pass the test successfully.

Good luck with getting your job as a Python developer!

Written by
Vlad Sosnov

Frontend Developer at YouTeam.

View all articles