Introduction: The Role of Daily Prompts in the Game

Welcome back! In the previous lesson, you learned how to generate and store prompt data for the LLM Prediction Game. Now, let’s see how to use that data to make the game dynamic and engaging for players.

A key part of the game is that each day, players see a new prompt. This keeps the game fresh and gives everyone the same challenge for that day. In this lesson, you’ll learn how to select the correct prompt for today using the data you’ve already created.

By the end of this lesson, you’ll understand how the game picks a prompt based on the current date, loads it from your JSON file, and handles any issues that might come up. You will use the datetime, json and pathlib libraries to achieve this. This is an important step in making your game feel like a real daily challenge!

Project File Structure Overview

Before we dive into selecting the daily prompt, let’s get familiar with the main files and folders in your project. Here’s a quick overview of what each file does:

This structure helps keep your code organized and makes it easy to find where different parts of the game are implemented. In this lesson we will work on the game.py file.

How the Game Chooses Today’s Prompt

To make sure everyone gets the same prompt on a given day, we need a way to pick a prompt based on the date. One simple and effective method is to use the "day of the year." This means:

  • January 1 is day 1
  • February 1 might be day 32
  • December 31 is day 365

Let’s see how you can get the day of the year in Python.

If today is March 1, this code will print 60 (or 61 in a leap year). This number will help us pick which prompt to use from our list.

Why use the day of the year?

  • It’s simple: just a number from 1 to 365.
  • It repeats every year, so you can reuse prompts.
  • It makes sure everyone playing on the same day gets the same prompt.
Loading and Validating Prompt Data

Now, let’s load the prompt data you created earlier. The prompts are stored in a JSON file, usually at static/prompts/data.json. We need to read this file and make sure it has the right number of prompts.

Here’s how you can load the prompts:

Explanation:

  • We use Path from the pathlib module to handle the file path.
  • We check if the file exists. If not, we raise an error.
  • We open the file and load its contents using json.load().

Once loaded, let’s also make sure the file has the correct number of prompts. For a daily game, you usually want 365 prompts (one for each day of the year):

This check helps catch mistakes early, such as missing or extra prompts.

Selecting and Returning the Correct Prompt

Now that you have all the prompts loaded and validated, let’s select the prompt for today.

First, remember that Python lists are zero-indexed. That means the first item is at index 0, the second at index 1, and so on. However, our day of the year starts at 1. So, we need to subtract 1 to get the correct index.

Let’s put it all together step by step.

Step 1: Get the Day of the Year
  • If no date is given, we use today’s date.
  • We use tm_yday to get the day of the year.
  • We use min(day_of_year, 365) to make sure we don’t go past 365, even in a leap year.

The leading underscore in _get_day_of_year is a Python naming convention that indicates the function is intended for internal use within the module. It signals to other developers that this function is a "private" helper and not part of the module's public API. This helps keep the code organized and makes it clear which functions are meant to be used only inside the module, rather than being called from other parts of the application.

Step 2: Select the Prompt
  • We load and validate the prompts.
  • We calculate the correct index for today’s prompt.
  • We return the prompt for today.

Example Output:

Suppose today is January 2 (day 2 of the year). The function will return the second prompt in your list.

Output (example):

Summary and What’s Next

In this lesson, you learned how to select the correct daily prompt for your LLM Prediction Game:

  • You used the day of the year to pick which prompt to show.
  • You loaded and validated your prompt data from a JSON file.
  • You handled possible errors, such as missing files or the wrong number of prompts.
  • You made sure to use the right index so the game always shows the correct prompt for today.

Next, you’ll get to practice these steps yourself. You’ll write code to select prompts, handle errors, and see how your game can deliver a new challenge every day. Good luck, and have fun!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal