Skip to content
This is my space, where experience meets the will to start over. This is my space, where experience meets the will to start over.

The first step is knowing where you want to go.

  • Home
  • Coding Hub
    • Software & Project
      • Small Biz Ops – S.B.O.
        • SmallBizOps – Day 10/90
      • CRM/ERP
      • MyTracker
      • My Budget
    • Form Zero to “WoW”
      • JavaScript from Zero (Completed)
        • 2. Remove and Edit List Items
        • 3. Separate HTML and JavaScript, Use addEventListener and Conditional Logic
        • 4. Add Dynamic CSS Classes
        • 5. Save & Restore Your List with localStorage
        • 6 – Turn Your App into a Full To-Do List
      • Python from Zero (Completed)
        • 2. Lists & Loops
        • 3. Conditional Menus
        • 4. Edit & Remove Tasks (with closing: Python vs PHP and Large Data)
        • 5 – Save to File: Make Your Tasks Survive Restarts
        • 6 — Pythin from zero – Final Project Polishing: Numbering, Formatting, and Preparing for CSV
      • Rust – From Zero to “WoW” (Completed)
        • 1 – Setup and Project Structure in Rust
        • 2 – User input: validation and error handling
        • 3 – Rust from Zero to “WoW – BMI Calculation and Conditional Logic
        • 4 –Rust – Clear, Formatted Output
        • 5 – Rust – Final Thoughts: Precision as a Form of Respect
      • Go from Zero to “WoW” (Completed)
        • 1 – Why Go Is Perfect for a Personal Expense Tracker
        • 2 – Logging Expenses and Console Input
        • 3 – Go from Zero to “WoW” – Smart Filtering & Display Logic
        • 4 – Go – Saving Data to Local Files
        • 5 – Go – Final Project – Expense Tracker in Go
      • C++ from Zero to “WoW” (Completed)
        • 1 – Why C++ for file organization?
        • 2 – C++ – File Type Detection and Classification
        • 3 – C++ – Creating & Managing Subfolders
        • 4 – C++ – Safe File Movement and User Feedback
        • 5 – C++ – Order as Mental Clarity
      • Ubuntu – From Zero to “WoW” (Completed)
        • 2 – Ubuntu – The Desktop Environment and Essential Commands
        • 3 – Ubuntu – Managing Files, Folders, and Permissions
        • 4 – Ubuntu – Installing and Updating Software with APT and Snap
        • 5 – Ubuntu – Customizing the Desktop Environment
        • 6 – Ubuntu – Network and Device Configuration
        • 7 – Ubuntu – User Management & System Security — “The Cathedral of Permissions”
        • 8 – Ubuntu – The Talking Machine: Terminal & Bash Scripting
        • 9 – Ubuntu – Ubuntu as a Server or Development Environment
        • 10 – Ubuntu – Backup, Maintenance & Troubleshooting
    • Git Hub Repository
      • Small Biz Ops – S.B.O.
      • Mini ERP – PHP & MySQL
      • CleverCRM (Java, Spring Boot)
      • FraudWatch (Python, FastAPI + scikit-learn)
      • OnboardIQ – Smart Onboarding Portal (Flask + SQLite Demo)
    • ArchPilot
      • 1-Users & Roles, End-to-End (Architecture, Database, and Cross-Framework Code)
      • 2 – Client Registry (CRM) Across Frameworks
      • 3 – Project & Budget Tracker (ERP)
      • 4 – Approval Workflow Engine Multi-step routing, status tracking, escalation paths
      • 5 – Audit Trail & Versioning
    • Small Biz Ops – S.B.O.
  • Vivere in USA
  • P4Y
  • Testi poetici
    • 1 – Sospeso
    • 2 – Il bicchiere di vetro quieto
    • 3 – Quando l’amore inciampa
    • 4 – Ma chi siete davvero?
    • 5 – Above the Thread of Day
    • 6 – The Truth That Doesn’t Exist
    • 7 – All of You, I Miss
    • 8 – The Captain and the Ocean
    • 9 – Between Light and Mist
    • 10 – Il peso delle scelte
  • Contact
  • Admin
This is my space, where experience meets the will to start over.
This is my space, where experience meets the will to start over.

The first step is knowing where you want to go.

Coding – Step 10.3 – Python from Zero – Conditional Menus

Posted on 9 Agosto 202517 Agosto 2025 By Francesco

Step 10.3 – Python from Zero – Conditional Menus

Create a command-based menu with options: Add, View, and Exit

🧠 Why this lesson is important

In the first two lessons, we learned how to:

  • Lesson 1 → Read input, use variables, and make decisions with if/else.
  • Lesson 2 → Store multiple elements in a list and use loops to iterate over them.

Now, we’ll combine these skills to create an interactive program where the user selects actions from a menu and the program responds accordingly.

🎯 Goal

We will build a command-line To-Do List with these features:

  • [A] Add a task
  • [V] View all tasks
  • [X] Exit the program

🏗️ Menu structure

  1. Display the available options.
  2. Read the user’s choice.
  3. Execute the appropriate action using if/elif/else or match/case.
  4. Repeat until the user chooses to exit.

📝 Base code

# todo_menu.py

tasks = []  # Task list

def show_menu():
    print("\n=== TO-DO MENU ===")
    print("[A] Add task")
    print("[V] View tasks")
    print("[X] Exit")

def add_task():
    text = input("Write the new task: ").strip()
    if text:
        tasks.append(text)
        print(f"✅ '{text}' added to the list!")
    else:
        print("⚠️  You didn't write anything, task not added.")

def view_tasks():
    if not tasks:
        print("📭 No tasks available.")
        return
    print("\n📋 Your tasks:")
    for i, t in enumerate(tasks, start=1):
        print(f"{i}. {t}")

def main():
    print("Welcome to your To-Do List!")
    while True:
        show_menu()
        choice = input("Choose an option: ").strip().lower()

        if choice == "a":
            add_task()
        elif choice == "v":
            view_tasks()
        elif choice == "x":
            print("Goodbye! 👋 See you next time.")
            break
        else:
            print("❌ Invalid command. Try again.")

if __name__ == "__main__":
    main()

🔍 How it works

  • tasks = [] → creates an empty list to store tasks.
  • show_menu() → displays the available options each time.
  • add_task() → asks for a text input and adds it to the list if it’s not empty.
  • view_tasks() → lists tasks or shows a message if there are none.
  • main() → runs the loop, reads the choice, and calls the corresponding function.

💡 Alternative with match/case (Python ≥ 3.10)

while True:
    show_menu()
    choice = input("Choose an option: ").strip().lower()

    match choice:
        case "a":
            add_task()
        case "v":
            view_tasks()
        case "x":
            print("Goodbye! 👋 See you next time.")
            break
        case _:
            print("❌ Invalid command. Try again.")

🎨 Improving user experience

  • Use emojis or symbols to make messages clearer.
  • Add blank lines \n to make the output easier to read.
  • Always normalize input with strip() and lower() to avoid errors.

🧩 Exercises

  1. Task count: after displaying tasks, also show the total number (len(tasks)).
  2. Multiple task addition: allow adding multiple tasks until the user types done.
  3. Clear all tasks: add option [C] to clear the list after confirmation.
  4. Numeric menu: allow numbers 1/2/0 as alternative menu options.

🚫 Common mistakes

  • Not checking if the list is empty before printing it.
  • Comparing input without strip() or lower() and failing to recognize commands.
  • Forgetting break in the exit condition, causing the program to run indefinitely.

📌 Key takeaways

In this lesson, you learned to:

  • Create an interactive menu in Python.
  • Handle user input with multiple conditions.
  • Organize your code into functions for clarity and maintainability.

In the next lesson, we will add functions to delete and mark tasks as complete, and to save data to a file.

Post Views: 292

Condividi:

  • Condividi su Facebook (Si apre in una nuova finestra) Facebook
  • Condividi su X (Si apre in una nuova finestra) X
Coding Python

Navigazione articoli

Previous post
Next post

Francesco

My name is Francesco Boschi, originally from Italy and currently based in the United States. For over twenty years, I’ve worked as a manager and consultant across diverse sectors — from education and cultural institutions to the food industry — developing skills in operational management, strategic consulting, and complex problem-solving. In recent years, I’ve combined this experience with a strong passion for software development, creating custom tools designed to simplify workflows and meet real business needs.

Relocating to the U.S. marks the beginning of a new chapter: a personal and professional decision driven by the desire to be close to my son and to embrace new challenges in a different environment. Today, my goal is to turn my experience into meaningful solutions, blending strategic vision with technical expertise to help people and organizations work more effectively.

I enjoy moving between different worlds, adapting tools and approaches to people and contexts. I bring leadership, flexibility, attention to detail, analytical thinking, and a strong problem-solving mindset — along with a deep curiosity to learn and grow. Above all, I believe in sharing: I’m always eager to offer my experience to support the growth of others.

Related Posts

Coding

ArchPilot – Step 3 – Project & Budget Tracker (ERP)

Posted on 30 Novembre 202530 Novembre 2025

A cross-framework showcase of the Project & Budget Tracker module, demonstrating how different technologies handle the same ERP workflow with clarity, adaptability, and architectural insight.

Condividi:

  • Condividi su Facebook (Si apre in una nuova finestra) Facebook
  • Condividi su X (Si apre in una nuova finestra) X
Read More
Coding

Coding – Step 5 -You don’t need to spend more. You need to invest better.

Posted on 16 Giugno 202526 Luglio 2025

Many believe that to organize a business effectively, you need a large investment in technology.That’s not true.What you really need is a clear philosophy and tools that support it.And often, it takes less than one monthly salary to create something that truly makes a difference. Because what you invest at…

Condividi:

  • Condividi su Facebook (Si apre in una nuova finestra) Facebook
  • Condividi su X (Si apre in una nuova finestra) X
Read More
Coding

Coding – MyBudget: Building a Modular Budget System for Families

Posted on 20 Ottobre 202520 Ottobre 2025

A Laravel-based budgeting app designed for families, with multi-timeframe tracking, modular categories, secure onboarding, and automated email reports. Built from real-world enterprise experience, adapted for everyday life.”
tech=”Laravel, PHP, MySQL, HTML5

Condividi:

  • Condividi su Facebook (Si apre in una nuova finestra) Facebook
  • Condividi su X (Si apre in una nuova finestra) X
Read More

Iscriviti alla nostra Newsletter

🤞 Let's keep in touch

We do not send spam! Read our Privacy policy for more information.

Controlla la tua casella di posta o la cartella spam per confermare la tua iscrizione

Cerca nel sito

©2026 This is my space, where experience meets the will to start over. | WordPress Theme by SuperbThemes