Skip to content

DaoistRose/Magic-8-Ball.py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Magic-8-Ball.py

Build a Magic 8-Ball with Python: Fun Beginner Project with Input Validation and UX Enhancements

Learn how to create a Python Magic 8-Ball app from scratch! Perfect for beginners, this project includes input validation, UX polish, and replayability. Great for practice and your Python portfolio.


Turning Nostalgia into Code — My Beginner's Journey

Have you ever shaken a Magic 8-Ball, hoping for a sign from the universe? For my Codecademy Python project, I was tasked with reimagining that classic toy in code—while adding a few creative touches along the way.


Getting Started

I’m at the very beginning of my coding journey. When Codecademy presented this project, it felt approachable yet full of potential: build a Python program that answers users’ questions with random “Yes” or “No” style fortunes.

The challenge was clear and built on fundamentals I’d learned over the past two days. But I wanted to see how far I could go, how many rabbit holes I’d find, and how I could stretch this assignment to learn more in the process.


Project Overview

Write a Python script that returns a random fortune when a user asks a question. Simple, right?

But good code isn’t just about functionality—it’s about making the experience enjoyable, accessible, and user-friendly.

Starting Points

  • A list of 9 possible Magic 8-Ball answers
  • Code to randomly select a fortune
  • User input for name and question
  • Clear print statements to display results

After implementing the basics, I started thinking: How could I make this even more engaging?


Enhancing the Experience

Input Validation

To create a smoother user experience, I added validation for both names and questions:

  • Names must be 2–15 characters and contain only letters, hyphens, spaces, or apostrophes (because everyone from Mary-Jane to O’Connell deserves inclusion).

Image description

  • Questions must be 10–50 characters and end with a ? (because it’s not a question without one!).

Image description

  • No numbers or odd symbols allowed — to prevent unexpected behavior or potential code injection.

Invalid input gives friendly, clear feedback to help the user try again.


A Touch of Dramatic Flair

To make the experience more immersive, I used time.sleep() to insert short pauses before revealing each answer. It’s a small trick, but it makes it feel like the universe is pondering your question.

Image description


Replay Value

Using a while loop, users can keep asking questions until they decide to stop. Each question brings a new, suspenseful fortune—just like the original toy.

Image description


Final Polish

To finish the project, I added some fun touches:

  • ASCII art for a welcoming intro
  • Friendly goodbye message at the end
  • A bonus answer for extra variety
  • Thoughtful handling of edge cases like skipped input

Image description


Lessons Learned

This project was about more than just getting the code to work. Along the way, I learned:

  • The importance of user experience and clear input validation
  • How to use loops and conditionals effectively
  • How to write code that’s clean, maintainable, and readable

Final Thoughts

Building the Magic 8-Ball project was a fun, practical way to boost my Python skills—and a great reminder of why people love software that surprises and delights.

Whether it’s predicting your future or sparking a smile, a little bit of code can feel like magic.


Feedback?

How would you improve this project? I’m new to programming, and every day is a new opportunity to learn. Looking forward to hearing from you all!

Image description

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages