# Lezione 8 - Esercizio 1
#
# Scrivere un programma che esegue un conto alla rovescia partendo da un numero intero positivo
# fornito in input dall'utente e arrivando fino a 0.
# 
# Note e consigli:
# - Verificare che il numero inserito dall'utente sia positivo
# - Utilizzare la funzione time.sleep(1) per aspettare 1 secondo

# Il codice qui sotto serve per la soluzione
import time

# Scrivere qui sotto la soluzione:  # NICOLO' PUZZA

# numero = int(input("Salve, inserisci un numero intero positivo: "))

# if numero > 0: 
#     print(f"Il conto alla roverscia partirà da {numero}.")
# else:
#     print("Errore! Il numero che hai inserito non è positivo.")
#     exit(0)

# while numero > 0:
#     print(numero)
#     numero -= 1
#     time.sleep(1)

# print(0)


# ================================================================================================
# Lezione 8 - Esercizio 2
#
# Scrivere un sistema di verifica della password. Il programma deve chiedere all'utente una password
# e, se la password è corretta, il programma deve stampare "Accesso consentito", altrimenti, la
# password deve essere inserita e verificata nuovamente e così via fino all'inserimento corretto.
# 
# Note e consigli:
# - La funzione input() può essere utilizzata anche per riassegnare una stessa variabile in un
#   secondo momento.

# Il codice qui sotto serve per la soluzione e non deve essere modificato
password_corretta = "Pythonata2024"

# Scrivere qui sotto la soluzione:

# psw = input("Inserire la password: ")

# while psw != password_corretta
#     print("Password errata!")
#     psw = input("Si prega di inserire la password corretta: ")

# print("Password corretta, accesso consentito.")





# ================================================================================================
# Lezione 8 - Esercizio 3
#
# Scrivere un programma che simula un processo di controllo qualità in una linea di produzione
# industriale. Il programma deve chiedere all'utente di inserire il risultato di un controllo
# qualità, che può essere "passato" o "fallito". Il programma continua a chiedere i risultati finché
# non viene inserito "fallito". Quando un controllo fallisce, stampare "Prodotto difettoso trovato,
# linea di produzione fermata." e terminare il programma. Qualore l'utente dovesse inserire la
# stringa "esci", invece, terminare immediatamente il programma senza ulteriori messaggi.
# 
# Note e consigli:
# - E' possibile utilizzare le istruzioni continue e break e la funzione exit(0), tuttavia non è
#   obbligatorio. Questo esercizio è il tipico esempio di esercizio risolvibile in innumerevoli modi
#   molto differenti tra loro.

# Scrivere qui sotto la soluzione:

# prodotto = "biero"
# numero = 1

# while prodotto != "fallito":
#     prodotto = input(f"Controllo qualità del prodotto numero {numero}, esito (passato/fallito): ")
#     if prodotto == "passato":
#         numero += 1
#         print("Controllo superato, passaggio a prodotto successivo.")
#     elif prodotto == "esci":
#         break
#     elif prodotto == "fallito":
#         print("Prodotto difettoso trovato, linea di produzione fermata.")
#         break  # Se non scrivi nulla fuori dal while, questo può essere un break
#     else:
#         print("Risultato non valido. Riprovare.")
#         continue



# ================================================================================================
# Lezione 8 - Esercizio 4
#
# Scrivere un programma che continua a chiedere all'utente di inserire numeri interi. Il programma
# deve ignorare (NON elaborare) i numeri negativi inseriti, mentre deve stampare il quadrato (** 2)
# di tutti i numeri positivi inseriti. In altre parole, se il numero inserito è negativo, il
# programma non deve fare nulla e chiedere il prossimo numero. Se, invece, è positivo, il programma
# deve stampare il suo quadrato. Se l'utente inserisce, invece, il numero 0, il programma deve
# terminare.
# 
# Note e consigli:
# - Per l'elevazione a quadrato esiste l'operatore ** in Python (es.: 2 ** 3 -> 8)

# Scrivere qui sotto la soluzione:

# while True:
#     numero = int(input("Inserisci un numero positivo: "))
#     if numero > 0:
#         n_2 = numero ** 2
#         print(f"Il quadrato di {numero} è {n_2}.")
#     elif numero < 0:
#         print("Il numero deve essere positivo.")
#         continue
#     else:
#         print("Numero 0 inserito, terminazione programma.")
#         break



# Lezione 9 - Esercizio 1
# Scrivere un programma che chiede all'utente di inserire numeri interi positivi.
# Il programma deve determinare il numero minimo inserito dall'utente.
# Il ciclo termina quando l'utente inserisce "0".
#
# 1. Chiedere all'utente di inserire numeri interi positivi uno alla volta.
# 2. Ignorare tutti i numeri negativi utilizzando 'continue'.
# 3. Aggiornare e stampare il numero minimo ogni volta che viene inserito un nuovo numero valido.
# 4. Terminare il ciclo quando viene inserito "0".
#
# Note e consigli:
# - Utilizzare 'continue' per gestire eventuali numeri negativi.
# - Assicurarsi di resettare il minimo in modo appropriato.
# - Commentare il codice per spiegare il funzionamento del ciclo e delle condizioni.

# while True:
#     numero = int(input("Inserisci un numero intero positivo: "))
#     # minimo = min(numero)  # Questo non è corretto, min() è una funzione che restituisce il minimo tra i numeri passati come argomento
#     if minimo > numero:
#         minimo = numero

#     if numero < 0:
#         print("Errore, numero negativo!")
#     elif numero > 0:
#         minimo = min(numero)
#         print(f"Il numero minimo tra quelli inseriti è {minimo}.")
#     else:
#         print("Numero 0 inserito, terminazione programma.")
#         break


# Lezione 9 - Esercizio 3
# Scrivere un programma che aiuta a tenere traccia delle spese. L'utente inserisce le spese finché
# il totale non supera il budget di 500€.
#
# 1. Chiedere all'utente di inserire una spesa alla volta.
# 2. Sommare le spese e termina il ciclo se il totale supera 500€.
# 3. Se l'utente inserisce un valore negativo, usare 'continue' per ignorarlo.
# 4. Alla fine, se il budget è stato superato, stampare un avviso.
#
# Note e consigli:
# - Utilizzare 'continue' per gestire le spese negative.
# - Tenere traccia del totale delle spese e confrontarlo con il budget.
# - Fornire feedback all'utente sullo stato del budget.

budget = 500

print("Questo programma ti aiuterà a tenere traccia delle tue spese e del tuo budget.")

while budget >= 0:
    spesa = float(input(f"Il tuo budget è di {budget}€. Inserisci una spesa: "))
    
    if spesa < 0:
        print("Errore, hai inserito una spesa negativa.")
        continue
    
    budget -= spesa

print(f"Attenzione! La tua spesa di {spesa}€ supera il tuo budget di {budget}€. \n Il programma terminerà.")





PSW_CORRETTA = "bierocondor123"
tentativi = 3

while tentativi != 0:
    psw = input("Benvenuto, inserisci la password per accedere: ")

    if psw == PSW_CORRETTA:
        print("Password corretta! Accesso consentito.")
        exit(0)
    else:
        tentativi -= 1
        if tentativi > 1:
            print(f"Password non valida, ti rimangono {tentativi} tentativi.")
        else:
            print(f"Password non valida, ti rimane {tentativi} tentativo.")
        
print("Hai inserito la password errata per 3 volte, il programma terminerà.")