Welcome to the 100 Python Challenge Projects! These exercises are designed to test and improve your Python skills across a wide range of topics — from beginner to advanced. Each challenge includes a brief description, suggested libraries, and hints to help you get started.
- Description: A simple Flask web server that displays "Hello, World!" in the browser.
- Libraries:
flask - Hint: Use Flask's route decorators and
app.run().
- Description: Perform basic arithmetic operations from user input.
- Libraries: None
- Hint: Use
input(),eval()or define functions for each operation.
- Description: Command-line to-do manager with add/remove/show options.
- Libraries:
argparse,os - Hint: Store tasks in a list or text file.
- Description: User guesses a number between 1–100.
- Libraries:
random - Hint: Use a loop until guess is correct.
- Description: Generate a list of Fibonacci numbers.
- Libraries: None
- Hint: Use recursion or iteration.
- Description: Check if a string is a palindrome.
- Libraries: None
- Hint: Compare string to its reverse.
- Description: Calculate BMI from weight and height.
- Libraries: None
- Hint: BMI = weight / (height^2)
- Description: Generate a table for any number.
- Libraries: None
- Hint: Use a
forloop.
- Description: Generate strong random passwords.
- Libraries:
random,string - Hint: Combine uppercase, lowercase, digits, and symbols.
- Description: Countdown from a set time in seconds.
- Libraries:
time - Hint: Use
time.sleep()in a loop.
- Description: Convert distances, weights, etc.
- Libraries: None
- Hint: Use fixed conversion rates.
- Description: Fill in blanks in a story with user input.
- Libraries: None
- Hint: Use string templates.
- Description: CLI game against the computer.
- Libraries:
random - Hint: Use conditionals to compare choices.
- Description: Convert currency using static rates.
- Libraries: None
- Hint: Hardcode some exchange rates.
- Description: Simulate a dice roll.
- Libraries:
random - Hint: Use
randint(1, 6).
- Description: Extract username and domain from email.
- Libraries: None
- Hint: Use string
split()method.
- Description: Set an alarm at a specific time.
- Libraries:
datetime,time - Hint: Compare current time to alarm time.
- Description: Convert digits into English words.
- Libraries:
inflect - Hint: Use
engine.number_to_words().
- Description: Simple CLI login and password system.
- Libraries:
getpass - Hint: Use a dictionary for storing credentials.
- Description: Generate QR code from user input.
- Libraries:
qrcode - Hint: Save as image with
.make()and.save().
- Description: Get live weather using an API.
- Libraries:
requests - Hint: Use OpenWeatherMap API.
- Description: Add/remove/display tasks with a GUI.
- Libraries:
tkinter - Hint: Use
ListboxandButton.
- Description: Convert
.mdfiles to.html. - Libraries:
markdown - Hint: Read file and use
markdown.markdown().
- Description: Scrape titles from a website.
- Libraries:
requests,BeautifulSoup - Hint: Parse HTML with
soup.find_all().
- Description: Time your focus and break sessions.
- Libraries:
tkinter,time - Hint: 25 min focus, 5 min break cycle.
- Description: Download video from a URL.
- Libraries:
pytube - Hint: Use
YouTube.streams.first().download().
- Description: Sort files by extension into folders.
- Libraries:
os,shutil - Hint: Loop through files and move them.
- Description: Track and total daily expenses.
- Libraries:
csv,datetime - Hint: Store and read entries in CSV.
- Description: Respond to simple user inputs.
- Libraries: None
- Hint: Use
if-elifconditions.
- Description: Merge multiple PDFs into one.
- Libraries:
PyPDF2 - Hint: Use
PdfMerger.append().
- Description: Measure user typing speed.
- Libraries:
time - Hint: Compare time before and after typing.
- Description: Resize images to new dimensions.
- Libraries:
Pillow - Hint: Use
.resize()and.save().
- Description: Two-player game on the terminal.
- Libraries: None
- Hint: Use a 2D list or flat list for board.
- Description: Fetch a random quote from an API.
- Libraries:
requests - Hint: Use
quotable.ioor similar API.
- Description: Live digital clock with GUI.
- Libraries:
tkinter,time - Hint: Update time every second.
- Description: Create a barcode image.
- Libraries:
python-barcode - Hint: Use
EAN13or similar class.
- Description: Detect faces in images.
- Libraries:
opencv-python - Hint: Use Haar Cascades.
- Description: Convert audio files from MP3 to WAV.
- Libraries:
pydub - Hint: Use
AudioSegment.from_mp3().
- Description: Create GIF from images.
- Libraries:
Pillow - Hint: Use
.save(..., save_all=True).
- Description: Display flashcards to learn new terms.
- Libraries:
json - Hint: Load terms from a JSON file.
- Description: Generate static blog HTML pages from markdown.
- Libraries:
markdown,jinja2 - Hint: Use HTML template rendering.
- Description: A stopwatch with start/stop/reset.
- Libraries:
time - Hint: Track elapsed time.
- Description: Load and display MCQs from file.
- Libraries:
json - Hint: Include score tracking.
- Description: Show desktop popup notifications.
- Libraries:
plyer - Hint: Use
notification.notify().
- Description: Scrape top posts from subreddit.
- Libraries:
praw - Hint: Authenticate with Reddit API.
- Description: Convert CSV data to JSON.
- Libraries:
csv,json - Hint: Use
csv.DictReader.
- Description: Convert CSV rows to Markdown table format.
- Libraries: None
- Hint: Format strings with
|.
- Description: Take a full-screen capture.
- Libraries:
pyautogui - Hint: Use
pyautogui.screenshot().
- Description: Record audio from mic.
- Libraries:
pyaudio - Hint: Stream to WAV.
- Description: Convert currency using API data.
- Libraries:
requests - Hint: Use exchangerate.host or similar.
- Description: Save all user input into a log file.
- Libraries:
datetime - Hint: Append each message with timestamp to a
.txtfile.
- Description: Generate hashtags for a given topic or keyword.
- Libraries:
random,json - Hint: Use a local file of hashtags and random sampling.
- Description: Match pairs of cards by memory.
- Libraries:
pygame - Hint: Flip two cards, then hide if no match.
- Description: Define words via dictionary API.
- Libraries:
requests - Hint: Use
api.dictionaryapi.dev.
- Description: Generate printable PDF invoices.
- Libraries:
reportlab,datetime - Hint: Generate PDF with tables, totals, and date.
- Description: Create and view calendar events.
- Libraries:
tkinter,calendar,datetime - Hint: Let users click dates and add tasks.
- Description: Check if a list of websites is online.
- Libraries:
requests - Hint: Use
requests.get()and checkstatus_code.
- Description: Simulate chat between two users.
- Libraries:
tkinter - Hint: Use input boxes and chat window for display.
- Description: Display a folder structure like
treecommand. - Libraries:
os - Hint: Use recursion with indentation.
- Description: Monitor CPU, RAM, and disk usage live.
- Libraries:
psutil - Hint: Display usage as percentages in terminal.
- Description: Build a smart chatbot using natural language processing.
- Libraries:
nltk,re - Hint: Tokenize and match user intents.
- Description: Show live stock prices and charts.
- Libraries:
yfinance,plotly,dash - Hint: Use Dash callbacks for dynamic updates.
- Description: Automatically tweet from your account.
- Libraries:
tweepy - Hint: Authenticate via Twitter API.
- Description: Create a personal portfolio to showcase your projects.
- Libraries:
flask,jinja2 - Hint: Use templates and routes for dynamic pages.
- Description: Identify people in images using face encoding.
- Libraries:
face_recognition,opencv-python - Hint: Load known faces and compare encodings.
- Description: Download photos from Instagram.
- Libraries:
instaloader - Hint: Login with credentials to access private posts.
- Description: Track live prices of cryptocurrencies.
- Libraries:
requests,matplotlib,tkinter - Hint: Use CoinGecko or similar API.
- Description: Build an async REST API for a microservice.
- Libraries:
fastapi,uvicorn,pydantic - Hint: Use data models and decorators.
- Description: Suggest similar movies based on user input.
- Libraries:
pandas,scikit-learn - Hint: Use cosine similarity on TF-IDF matrix.
- Description: Translate text between languages.
- Libraries:
googletrans,deep_translator - Hint: Detect language and translate using API.
- Description: Display latest headlines from multiple sources.
- Libraries:
newsapi-python - Hint: Loop through top headlines by category.
- Description: Respond to voice commands like “what’s the time?”
- Libraries:
speechrecognition,pyttsx3 - Hint: Use speech-to-text and conditionals.
- Description: Draw using webcam and color tracking.
- Libraries:
opencv-python,numpy - Hint: Use color masking and contour tracking.
- Description: Solve any Sudoku puzzle using backtracking.
- Libraries:
numpy - Hint: Use recursion to fill empty cells.
- Description: Build a basic LAN chat server and client.
- Libraries:
socket,threading - Hint: Use separate threads for sending/receiving.
- Description: Extract info from PDF resumes.
- Libraries:
pdfminer.six,re - Hint: Parse name, email, and skills.
- Description: Snake game controlled by AI.
- Libraries:
pygame,numpy - Hint: Use a neural network or rule-based AI.
- Description: Automatically send bulk emails to a contact list.
- Libraries:
smtplib,email,csv - Hint: Use CSV for contact list and
MIMETextfor email body.
- Description: Create Flappy Bird and train an AI to play it.
- Libraries:
pygame,neat-python - Hint: Use NEAT algorithm to evolve the agent.
- Description: Generate text captions for images.
- Libraries:
tensorflow,keras,PIL - Hint: Use CNN + LSTM-based architecture.
- Description: Detect multiple objects in real-time using webcam.
- Libraries:
opencv-python,YOLO,cvlib - Hint: Load pre-trained object detection model.
- Description: Classify digits from images using a trained model.
- Libraries:
tensorflow,keras,sklearn - Hint: Use the MNIST dataset.
- Description: Extract text content from PDF documents.
- Libraries:
PyPDF2,pdfplumber - Hint: Loop through all pages and extract text.
- Description: Build a mini conversational model using transformers.
- Libraries:
transformers,torch - Hint: Use pre-trained models like
DialoGPT.
- Description: Web-based blog manager with posts and admin panel.
- Libraries:
flaskordjango,sqlite3 - Hint: Use a relational DB and login system.
- Description: Convert short videos into animated GIFs.
- Libraries:
moviepy - Hint: Use
.subclip()and.write_gif().
- Description: Record every keystroke typed on the keyboard.
- Libraries:
pynput - Hint: Log output to a file — for educational purposes only.
- Description: Extract text from images using OCR.
- Libraries:
pytesseract,Pillow - Hint: Preprocess image before feeding to OCR engine.
- Description: Identify traffic signs from images.
- Libraries:
tensorflow,opencv,sklearn - Hint: Use GTSRB dataset.
- Description: Control your mouse using webcam and hand gestures.
- Libraries:
opencv,mediapipe,pyautogui - Hint: Track hand landmarks with Mediapipe.
- Description: Clone a voice from a sample and synthesize speech.
- Libraries:
coqui-ai,torchaudio,resemblyzer - Hint: Use pretrained TTS + speaker encoder.
- Description: Generate styled Excel reports.
- Libraries:
openpyxl,xlsxwriter - Hint: Format tables, fonts, and charts.
- Description: Live browser-to-browser chat app.
- Libraries:
Flask-SocketIO,eventlet - Hint: Use rooms and emit messages in real time.
- Description: Track workout logs and progress.
- Libraries:
tkinter,sqlite3,matplotlib - Hint: Store exercises with timestamps.
- Description: Summarize long articles into short bullet points.
- Libraries:
transformers,sumy,nltk - Hint: Use pretrained BART or T5 model.
- Description: Backend for a shopping app with products, users, and carts.
- Libraries:
fastapi,sqlalchemy - Hint: Include authentication and CRUD routes.
- Description: Predict future currency prices.
- Libraries:
pandas,scikit-learn,xgboost - Hint: Time-series forecasting with regression.
- Description: Automatically fill out PDF forms.
- Libraries:
pdfrw,reportlab - Hint: Replace placeholder fields with text.
- Description: Type without a physical keyboard using webcam.
- Libraries:
opencv,mediapipe,pyautogui - Hint: Detect hand tap motion on screen.
- Description: Generate resume content based on user input and templates.
- Libraries:
jinja2,pdfkit,openai - Hint: Collect info, auto-fill HTML templates, convert to PDF.