#!/usr/bin/env python3
# italian_nouns_quiz.py
# A simple quiz script for learning Italian nouns

import random
import time

# ===== VOCABULARY DATA: 200 Essential Italian Nouns =====
# Format: {"en": "English word", "it": "Italian word (with article)"}
VOCAB = [
    # Day 1: Food & Drink ☕
    {"en": "coffee", "it": "il caffè"},
    {"en": "cup", "it": "la tazza"},
    {"en": "moka pot", "it": "la moka"},
    {"en": "sugar", "it": "lo zucchero"},
    {"en": "milk", "it": "il latte"},
    {"en": "water", "it": "l'acqua"},
    {"en": "bread", "it": "il pane"},
    {"en": "croissant", "it": "il cornetto"},
    {"en": "pasta", "it": "la pasta"},
    {"en": "pizza", "it": "la pizza"},
    {"en": "cheese", "it": "il formaggio"},
    {"en": "wine", "it": "il vino"},
    {"en": "beer", "it": "la birra"},
    {"en": "ice cream", "it": "il gelato"},
    {"en": "fruit", "it": "la frutta"},
    {"en": "vegetables", "it": "la verdura"},
    {"en": "meat", "it": "la carne"},
    {"en": "fish", "it": "il pesce"},
    {"en": "salt", "it": "il sale"},
    {"en": "pepper", "it": "il pepe"},
    
    # Day 2: Home & Daily Objects 🏠
    {"en": "home/house", "it": "la casa"},
    {"en": "room", "it": "la stanza"},
    {"en": "table", "it": "il tavolo"},
    {"en": "chair", "it": "la sedia"},
    {"en": "bed", "it": "il letto"},
    {"en": "door", "it": "la porta"},
    {"en": "window", "it": "la finestra"},
    {"en": "light", "it": "la luce"},
    {"en": "key", "it": "la chiave"},
    {"en": "backpack", "it": "lo zaino"},
    {"en": "wallet", "it": "il portafoglio"},
    {"en": "phone", "it": "il telefono"},
    {"en": "computer", "it": "il computer"},
    {"en": "pen", "it": "la penna"},
    {"en": "notebook", "it": "il quaderno"},
    {"en": "book", "it": "il libro"},
    {"en": "bag", "it": "la borsa"},
    {"en": "mirror", "it": "lo specchio"},
    {"en": "closet", "it": "l'armadio"},
    {"en": "bathroom", "it": "il bagno"},
    
    # Day 3: People & Relationships 👥
    {"en": "person", "it": "la persona"},
    {"en": "man", "it": "l'uomo"},
    {"en": "woman", "it": "la donna"},
    {"en": "boy/girl", "it": "il ragazzo / la ragazza"},
    {"en": "friend", "it": "l'amico / l'amica"},
    {"en": "tutor", "it": "il tutor"},
    {"en": "teacher", "it": "il professore / la professoressa"},
    {"en": "student", "it": "lo studente / la studentessa"},
    {"en": "family", "it": "la famiglia"},
    {"en": "father/mother", "it": "il padre / la madre"},
    {"en": "son/daughter", "it": "il figlio / la figlia"},
    {"en": "brother/sister", "it": "il fratello / la sorella"},
    {"en": "neighbor", "it": "il vicino / la vicina"},
    {"en": "colleague", "it": "il collega / la collega"},
    {"en": "customer", "it": "il cliente / la cliente"},
    {"en": "barista", "it": "il barista / la barista"},
    {"en": "doctor", "it": "il dottore / la dottoressa"},
    {"en": "artist", "it": "l'artista"},
    {"en": "content creator", "it": "il creator / la creator"},
    {"en": "I/you/he/she", "it": "io / tu / lui / lei"},
    
    # Day 4: City & Places 🌆
    {"en": "city", "it": "la città"},
    {"en": "town/country", "it": "il paese"},
    {"en": "street", "it": "la strada"},
    {"en": "square", "it": "la piazza"},
    {"en": "café/bar", "it": "il bar"},
    {"en": "restaurant", "it": "il ristorante"},
    {"en": "train station", "it": "la stazione"},
    {"en": "airport", "it": "l'aeroporto"},
    {"en": "museum", "it": "il museo"},
    {"en": "church", "it": "la chiesa"},
    {"en": "park", "it": "il parco"},
    {"en": "shop", "it": "il negozio"},
    {"en": "supermarket", "it": "il supermercato"},
    {"en": "pharmacy", "it": "la farmacia"},
    {"en": "office", "it": "l'ufficio"},
    {"en": "school", "it": "la scuola"},
    {"en": "university", "it": "l'università"},
    {"en": "bridge", "it": "il ponte"},
    {"en": "river", "it": "il fiume"},
    {"en": "mountain", "it": "la montagna"},
    
    # Day 5: Time & Calendar ⏰
    {"en": "time/weather", "it": "il tempo"},
    {"en": "hour/time of day", "it": "l'ora"},
    {"en": "minute", "it": "il minuto"},
    {"en": "second", "it": "il secondo"},
    {"en": "day", "it": "il giorno"},
    {"en": "night", "it": "la notte"},
    {"en": "morning", "it": "la mattina"},
    {"en": "afternoon", "it": "il pomeriggio"},
    {"en": "evening", "it": "la sera"},
    {"en": "week", "it": "la settimana"},
    {"en": "month", "it": "il mese"},
    {"en": "year", "it": "l'anno"},
    {"en": "today", "it": "oggi"},
    {"en": "tomorrow", "it": "domani"},
    {"en": "yesterday", "it": "ieri"},
    {"en": "now", "it": "adesso / ora"},
    {"en": "before", "it": "prima"},
    {"en": "after", "it": "dopo"},
    {"en": "always", "it": "sempre"},
    {"en": "never", "it": "mai"},
    
    # Day 6: Body & Health 🧍
    {"en": "body", "it": "il corpo"},
    {"en": "head", "it": "la testa"},
    {"en": "brain", "it": "il cervello"},
    {"en": "eye", "it": "l'occhio"},
    {"en": "ear", "it": "l'orecchio"},
    {"en": "nose", "it": "il naso"},
    {"en": "mouth", "it": "la bocca"},
    {"en": "tooth", "it": "il dente"},
    {"en": "hand", "it": "la mano"},
    {"en": "finger", "it": "il dito"},
    {"en": "foot", "it": "il piede"},
    {"en": "leg", "it": "la gamba"},
    {"en": "arm", "it": "il braccio"},
    {"en": "back", "it": "la schiena"},
    {"en": "heart", "it": "il cuore"},
    {"en": "health", "it": "la salute"},
    {"en": "pain", "it": "il dolore"},
    {"en": "medicine", "it": "la medicina"},
    {"en": "rest", "it": "il riposo"},
    {"en": "energy", "it": "l'energia"},
    
    # Day 7: Nature & Weather 🌤️
    {"en": "sun", "it": "il sole"},
    {"en": "moon", "it": "la luna"},
    {"en": "star", "it": "la stella"},
    {"en": "sky", "it": "il cielo"},
    {"en": "cloud", "it": "la nuvola"},
    {"en": "rain", "it": "la pioggia"},
    {"en": "snow", "it": "la neve"},
    {"en": "wind", "it": "il vento"},
    {"en": "sea", "it": "il mare"},
    {"en": "lake", "it": "il lago"},
    {"en": "tree", "it": "l'albero"},
    {"en": "flower", "it": "il fiore"},
    {"en": "grass", "it": "l'erba"},
    {"en": "garden", "it": "il giardino"},
    {"en": "forest", "it": "la foresta"},
    {"en": "earth/land", "it": "la terra"},
    {"en": "fire", "it": "il fuoco"},
    {"en": "air", "it": "l'aria"},
    {"en": "season", "it": "la stagione"},
    {"en": "spring/summer/autumn/winter", "it": "la primavera / l'estate / l'autunno / l'inverno"},
    
    # Day 8: Work, Study & Learning 💼
    {"en": "work/job", "it": "il lavoro"},
    {"en": "study", "it": "lo studio"},
    {"en": "lesson", "it": "la lezione"},
    {"en": "language", "it": "la lingua"},
    {"en": "word", "it": "la parola"},
    {"en": "sentence", "it": "la frase"},
    {"en": "grammar", "it": "la grammatica"},
    {"en": "practice", "it": "la pratica"},
    {"en": "exercise", "it": "l'esercizio"},
    {"en": "textbook", "it": "il libro di testo"},
    {"en": "pen/pencil", "it": "la penna / la matita"},
    {"en": "notebook", "it": "il quaderno"},
    {"en": "blackboard", "it": "la lavagna"},
    {"en": "computer", "it": "il computer"},
    {"en": "internet", "it": "internet"},
    {"en": "video", "it": "il video"},
    {"en": "recording", "it": "la registrazione"},
    {"en": "creativity", "it": "la creatività"},
    {"en": "patience", "it": "la pazienza"},
    {"en": "progress", "it": "il progresso"},
    
    # Day 9: Technology & Media 📱
    {"en": "phone", "it": "il telefono"},
    {"en": "smartphone", "it": "lo smartphone"},
    {"en": "computer", "it": "il computer"},
    {"en": "tablet", "it": "il tablet"},
    {"en": "camera/video camera", "it": "la fotocamera / la videocamera"},
    {"en": "screen", "it": "lo schermo"},
    {"en": "keyboard", "it": "la tastiera"},
    {"en": "mouse", "it": "il mouse"},
    {"en": "internet", "it": "internet"},
    {"en": "Wi-Fi", "it": "il Wi-Fi"},
    {"en": "app", "it": "l'app"},
    {"en": "social media", "it": "i social"},
    {"en": "TikTok/Instagram/YouTube", "it": "TikTok / Instagram / YouTube"},
    {"en": "video", "it": "il video"},
    {"en": "photo/image", "it": "la foto / l'immagine"},
    {"en": "audio", "it": "l'audio"},
    {"en": "microphone", "it": "il microfono"},
    {"en": "light (for filming)", "it": "la luce"},
    {"en": "editing", "it": "il montaggio"},
    {"en": "content", "it": "il contenuto"},
    
    # Day 10: Emotions & Abstract Concepts 💭
    {"en": "happiness", "it": "la felicità"},
    {"en": "sadness", "it": "la tristezza"},
    {"en": "anger", "it": "la rabbia"},
    {"en": "fear", "it": "la paura"},
    {"en": "surprise", "it": "la sorpresa"},
    {"en": "love", "it": "l'amore"},
    {"en": "hope", "it": "la speranza"},
    {"en": "patience", "it": "la pazienza"},
    {"en": "curiosity", "it": "la curiosità"},
    {"en": "motivation", "it": "la motivazione"},
    {"en": "frustration", "it": "la frustrazione"},
    {"en": "tiredness", "it": "la stanchezza"},
    {"en": "energy", "it": "l'energia"},
    {"en": "time", "it": "il tempo"},
    {"en": "space", "it": "lo spazio"},
    {"en": "life", "it": "la vita"},
    {"en": "dream", "it": "il sogno"},
    {"en": "idea", "it": "l'idea"},
    {"en": "question", "it": "la domanda"},
    {"en": "answer", "it": "la risposta"},
]

# ===== QUIZ LOGIC =====
def run_quiz(max_words=20):
    """Run the Italian nouns quiz with the first N words from the list."""
    
    # Select the subset of words to practice
    practice_set = VOCAB[:max_words]
    
    # Shuffle for random order
    random.shuffle(practice_set)
    
    print(f"\n🇮🇹 Italian Nouns Quiz — Practicing first {max_words} words")
    print("→ English word will appear. Think of the Italian.")
    print("→ Press ENTER to reveal the answer.")
    print("→ Type 'q' + ENTER anytime to quit.\n")
    print("Press ENTER to start...")
    input()
    
    correct = 0
    total = 0
    
    for i, word in enumerate(practice_set, 1):
        print(f"\n[{i}/{len(practice_set)}] {word['en'].upper()}")
        
        # Check for quit command
        user_input = input("→ [ENTER to reveal] ").strip().lower()
        if user_input == 'q':
            print(f"\n👋 Quiz ended. You practiced {total} words.")
            break
            
        # Reveal answer
        print(f"✅ {word['it']}")
        total += 1
        
        # Optional: self-score (press 'c' if you got it right)
        feedback = input("→ Did you get it? [c=correct, anything=skip] ").strip().lower()
        if feedback == 'c':
            correct += 1
    
    # Summary
    if total > 0:
        print(f"\n🎯 Session complete!")
        print(f"Words practiced: {total}")
        print(f"Self-reported correct: {correct}/{total} ({100*correct//total}%)")
        print(f"Keep going — every word counts! 💪🇮🇹")

# ===== MAIN =====
if __name__ == "__main__":
    try:
        # Ask user how many words to practice
        print("🇮🇹 Welcome to the Italian Nouns Quiz!")
        print(f"Total words available: {len(VOCAB)}")
        
        user_input = input("\nHow many words to practice? (e.g., 10, 20, 30... up to 200): ").strip()
        
        if user_input.lower() in ['q', 'quit', 'exit']:
            print("Ciao! 👋 Come back anytime.")
            exit()
            
        n = int(user_input)
        
        if n < 1:
            print("⚠️ Please choose at least 1 word.")
            n = 10
        elif n > len(VOCAB):
            print(f"⚠️ Max is {len(VOCAB)}. Setting to {len(VOCAB)}.")
            n = len(VOCAB)
            
        run_quiz(n)
        
    except ValueError:
        print("⚠️ Please enter a valid number.")
    except KeyboardInterrupt:
        print("\n\n👋 Interrotto! Ciao, Peter! Come back anytime. 🇮🇹☕")