Magic 8 Ball and Restaurant Selector

Welcome to our deep dive on creating a Magic 8 Ball in Python! In this blog post, we will be exploring the crucial concepts of if, elif, else, and return statements while coding a fun and simple Python program based on the nostalgic toy, the Magic 8 Ball. So, without further ado, let's dive in!

Understanding if, elif, else in Python

The if, elif, and else statements in Python are conditional statements that allow us to control the flow of our program based on specific conditions. Here's a quick summary of what each statement does:

  • If: This statement checks if a certain condition is true. If it is, the code inside the if block is executed.
  • Elif: Short for "else if". This statement checks if the previous conditions weren't met and if its condition is true. If it is, the code inside the elif block is executed.
  • Else: This statement catches all cases where the previous conditions weren't met. The code inside the else block is executed.

Understanding the return statement in Python

The return statement in Python is used in a function to exit it and return a value. If we don't provide a value, the function will return None. The return statement is especially useful in a program where you need to manipulate the output of a function.

Creating a Magic 8 Ball in Python

Now that we understand the key concepts, let's start building our Magic 8 Ball program. Here's what we want our program to do:

  • Take a question from the user.
  • Return a random prediction, just like a real Magic 8 Ball would!

        import random

        def ask_question():
            question = input("Ask the Magic 8 Ball a question: ")
            return question

        def shake_ball():
            responses = ["Yes", "No", "Maybe", "Ask again later", 
                         "Without a doubt", "My sources say no", 
                         "Outlook not so good", "It is decidedly so"]
            prediction = random.choice(responses)
            return prediction

        def magic_8_ball():
            question = ask_question()
            prediction = shake_ball()
            print(f"Question: {question}\nMagic 8 Ball says: {prediction}")


In this program, we first import the random module, which we will use to generate a random prediction. Then, we define a function, ask_question(), that asks the user for a question and returns it. We also define a function, shake_ball(), that selects a random prediction from a list of predictions and returns it.

Finally, we define the main function of our program, magic_8_ball(). This function calls the previous two functions, prints the user's question and the Magic 8 Ball's prediction, and ties the whole program together. We call this function at the end to start our program.

Adapting Magic 8 Ball to Select a Restaurant

Next, let's see how we can adapt the Magic 8 Ball program to make it a Restaurant Selector. The concept is the same, instead of choosing random responses, we'll have it select from a list of restaurants. Let's assume we have the following list of restaurants:

  • Dick's Hotdog Stand
  • Bill's Grill
  • Western Sizzlin
  • Joyner's Barbecue
  • Paul's
  • Something Different
  • Hero's American Grille
  • Da Bayou
  • Wilson Cafe
  • Parker's Barbecue

Now, let's look at the code:

    import random

    def ask_for_preferences():
        preference = input("Do you have any food preference today? ")
        return preference

    def select_restaurant():
        restaurants = ["Dick's Hotdog Stand", "Bill's Grill", "Western Sizzlin", 
                       "Joyner's Barbecue", "Paul's", 
                       "Something Different", "Hero's American Grille", 
                       "Da Bayou", "Wilson Cafe", "Parker's Barbecue"]
        selection = random.choice(restaurants)
        return selection

    def restaurant_selector():
        preference = ask_for_preferences()
        selection = select_restaurant()
        print(f"Preference: {preference}\nThe Restaurant Selector suggests: {selection}")


In this adapted version, we replaced the Magic 8 Ball's predictions with a list of restaurants. The function ask_for_preferences() is analogous to the ask_question() function from our previous example, it takes user input for a food preference. Though this preference doesn't affect the selection, it provides a more interactive user experience.

The select_restaurant() function chooses a random restaurant from the list and returns it. Finally, the restaurant_selector() function ties everything together: it calls the other two functions, and then prints the user's preference and the selected restaurant. In the Google Colab examples, we take it a step further by adding "keyword" association and directions to each restaurant.  

Implementing an ETL Process Flow in Python

In an ETL (Extract, Transform, Load) process, we often need to verify if data exists before proceeding to the extraction process. In Python, we can use if-else statements to perform this check, thereby controlling the flow of our ETL process. For this example, let's consider course data, student data, budget data, enrollment data, building data, and financial aid data.

    def data_exists(data_type):
        # Implement your data existence check here
        # For simplicity of this example, we'll return False indicating that the data doesn't exist
        return False

    def run_extract_process(data_type):
        print(f"Running extract process for {data_type}.")

    def etl_process_flow():
        data_types = ["course", "student", "budget", "enrollment", "building", "financial aid"]

        for data_type in data_types:
            if data_exists(data_type):
                print(f"{data_type.capitalize()} data exists. No need to extract.")
                print(f"{data_type.capitalize()} data does not exist.")


In this example, we have a function data_exists() that checks if a specific type of data exists. As per your request, I have not implemented the actual data checking process, but you can replace the code in this function with the relevant data existence checking logic for your use case.

The function run_extract_process() represents the extraction process for a specific type of data. Again, you can replace the print statement with the actual extraction logic.

The etl_process_flow() function controls the ETL process flow. It iterates over all data types and for each type, it checks if the data exists. If the data does not exist, it runs the extraction process for that data type.

This is a simple illustration of how we can control the flow of an ETL process in Python using if-else statements. The actual implementation might be more complex and involve different steps based on the specific requirements of your ETL process. Happy coding!

Google Colab link


Popular posts from this blog

Drawing Tables with ReportLab: A Comprehensive Example

Blog Topics

DataFrame groupby agg style bar