Home » Fun Fact Generator in Python

Fun Fact Generator in Python

Java SE 11 Developer (Upgrade) [1Z0-817]
Spring Framework Basics Video Course
Java SE 11 Programmer II [1Z0-816] Practice Tests
Oracle Java Certification
1 Year Subscription
Java SE 11 Programmer I [1Z0-815] Practice Tests

In this tutorial, we will create a Fun Fact Generator using Python.

The program will display a random fact every time the user runs it, or each time a button is clicked (if using a GUI version).

This can be a fun way to present random trivia, interesting information, or even educational content.

We will use:

  • A list of fun facts stored in the program.
  • Python’s random.choice() method to select a random fact.
  • (Optional) Tkinter for creating a GUI version.

Let's build the program step by step.

Step 1: Import the Required Modules

We will need the random module to generate random choices from the list of facts. Additionally, if you want to create a graphical interface (GUI), we’ll use the tkinter module.

import random
import tkinter as tk  # Optional: For the GUI version

Step 2: Create a List of Fun Facts

We will store several fun facts in a Python list. Each time the program runs, it will randomly select one of these facts to display.

# List of fun facts
fun_facts = [
    "Honey never spoils. Archaeologists have found pots of honey in ancient Egyptian tombs that are over 3,000 years old and still edible!",
    "A day on Venus is longer than a year on Venus.",
    "Bananas are berries, but strawberries aren't.",
    "There are more stars in the universe than grains of sand on all of Earth's beaches.",
    "Octopuses have three hearts and blue blood.",
    "The Eiffel Tower can be 15 cm taller during the summer due to thermal expansion.",
    "Humans share about 60% of their DNA with bananas."
]

Step 3: Function to Generate a Random Fun Fact

We will use Python’s random.choice() function to select and return a random fact from the list.

# Function to return a random fun fact
def get_random_fact():
    return random.choice(fun_facts)

Explanation:

  • random.choice(fun_facts): This method returns a random element from the list fun_facts.

Step 4: Simple Command-Line Version

Now, we can create a simple command-line version of the Fun Fact Generator that prints a random fact each time the program runs.

if __name__ == "__main__":
    print("Here is your fun fact for today:")
    print(get_random_fact())

Example Output:

Here is your fun fact for today:
A day on Venus is longer than a year on Venus.

Step 5: Creating a GUI Version with Tkinter (Optional)

If you want to create a graphical version, we will use Tkinter to build a simple window with a button that generates a new fun fact when clicked.

Code for the Fun Fact Generator with GUI:

import tkinter as tk
import random

# List of fun facts
fun_facts = [
    "Honey never spoils. Archaeologists have found pots of honey in ancient Egyptian tombs that are over 3,000 years old and still edible!",
    "A day on Venus is longer than a year on Venus.",
    "Bananas are berries, but strawberries aren't.",
    "There are more stars in the universe than grains of sand on all of Earth's beaches.",
    "Octopuses have three hearts and blue blood.",
    "The Eiffel Tower can be 15 cm taller during the summer due to thermal expansion.",
    "Humans share about 60% of their DNA with bananas."
]

# Function to return a random fun fact
def get_random_fact():
    return random.choice(fun_facts)

# Function to display the fact in the label
def show_fact():
    fact = get_random_fact()
    fact_label.config(text=fact)

# Create the main Tkinter window
root = tk.Tk()
root.title("Fun Fact Generator")
root.geometry("500x300")  # Set the window size

# Create a label to display the fun fact
fact_label = tk.Label(root, text="Click the button for a fun fact!", wraplength=400, font=("Arial", 12), pady=20)
fact_label.pack(pady=20)

# Create a button to generate a new fun fact
fact_button = tk.Button(root, text="Generate Fun Fact", command=show_fact, font=("Arial", 14), bg="lightblue")
fact_button.pack(pady=20)

# Start the Tkinter main loop
root.mainloop()

Explanation of the GUI Code:

  1. Main Window:
    • We create the Tkinter window using tk.Tk() and set its size with root.geometry().
  2. Label Widget:
    • The Label widget is used to display the fun fact. It is initially set to a placeholder message (“Click the button for a fun fact!”).
    • wraplength=400 ensures that the text wraps within the label for long facts.
  3. Button Widget:
    • The Button widget allows the user to generate a new fun fact. When the button is clicked, it triggers the show_fact() function.
    • The button text is set to “Generate Fun Fact”.
  4. show_fact() Function:
    • This function is triggered by the button. It retrieves a random fact using get_random_fact() and updates the text of the label with the new fact using fact_label.config(text=fact).
  5. Event Loop:
    • root.mainloop() keeps the window open and responsive, allowing users to click the button and generate new facts.

Complete Code for Both Versions

Command-Line Version:

import random

# List of fun facts
fun_facts = [
    "Honey never spoils. Archaeologists have found pots of honey in ancient Egyptian tombs that are over 3,000 years old and still edible!",
    "A day on Venus is longer than a year on Venus.",
    "Bananas are berries, but strawberries aren't.",
    "There are more stars in the universe than grains of sand on all of Earth's beaches.",
    "Octopuses have three hearts and blue blood.",
    "The Eiffel Tower can be 15 cm taller during the summer due to thermal expansion.",
    "Humans share about 60% of their DNA with bananas."
]

# Function to return a random fun fact
def get_random_fact():
    return random.choice(fun_facts)

if __name__ == "__main__":
    print("Here is your fun fact for today:")
    print(get_random_fact())

GUI Version with Tkinter:

import tkinter as tk
import random

# List of fun facts
fun_facts = [
    "Honey never spoils. Archaeologists have found pots of honey in ancient Egyptian tombs that are over 3,000 years old and still edible!",
    "A day on Venus is longer than a year on Venus.",
    "Bananas are berries, but strawberries aren't.",
    "There are more stars in the universe than grains of sand on all of Earth's beaches.",
    "Octopuses have three hearts and blue blood.",
    "The Eiffel Tower can be 15 cm taller during the summer due to thermal expansion.",
    "Humans share about 60% of their DNA with bananas."
]

# Function to return a random fun fact
def get_random_fact():
    return random.choice(fun_facts)

# Function to display the fact in the label
def show_fact():
    fact = get_random_fact()
    fact_label.config(text=fact)

# Create the main Tkinter window
root = tk.Tk()
root.title("Fun Fact Generator")
root.geometry("500x300")  # Set the window size

# Create a label to display the fun fact
fact_label = tk.Label(root, text="Click the button for a fun fact!", wraplength=400, font=("Arial", 12), pady=20)
fact_label.pack(pady=20)

# Create a button to generate a new fun fact
fact_button = tk.Button(root, text="Generate Fun Fact", command=show_fact, font=("Arial", 14), bg="lightblue")
fact_button.pack(pady=20)

# Start the Tkinter main loop
root.mainloop()

Conclusion

In this tutorial, we built a Fun Fact Generator using Python. We explored:

  1. A simple command-line version where a random fact is displayed when the program runs.
  2. A GUI version using Tkinter, where users can click a button to display a new random fact.

The generator uses Python's random.choice() to select a fact from a predefined list.

This project can be further extended with more facts, or you can connect it to a web API to pull fun facts dynamically.

You may also like

Leave a Comment

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More