# Lezione 18 - Esercizio 0 - Sesso, droga e C++
# Scrivere un programma in Python che censuri un dato di testo sostituendo
# le parole "sesso", "droga" e "c++" con degli asterischi. È richiesto
# l'utilizzo del metodo join() per ricostruire il testo.

# testo = "nella vita mi piace fare sesso e ogni tanto decido di usare della droga e programmare in C++"

# parole = testo.split(" ")

# for indice, parola in enumerate(parole):
#     if parola == "sesso" or parola == "droga" or parola == "C++":
#         parole[indice] = len(parola) * "*"

# risultato = " ".join(parole)

# print(risultato)

# Soluzione complessa con funzioni e dizionari ecc...
def censura_testo(testo: str) -> str:
    """
    Funzione che censura le parole "sesso", "droga" e "c++" sostituendole con asterischi.

    :param testo: Il testo che deve essere censurato
    :return: La stringa contenente il testo censurato
    """
    parole_da_censurare = {
        "sesso": "*****",
        "droga": "*****",
        "c++": "***"
    }

    parole = testo.split()
    risultato = []

    for parola in parole:
        if parola[-1] == "." or parola[-1] == ",":
            parola = parola[:-1]
        if parola.lower() in parole_da_censurare:
            risultato.append(parole_da_censurare[parola.lower()])
        else:
            risultato.append(parola)
    
    return " ".join(risultato)

def main():
    """
    Programma principale per censurare il testo
    """
    file_con_frase = open("file_con_frase.txt", "r")
    frase = file_con_frase.read()
    file_con_frase.close()

    testo_censurato = censura_testo(frase)
    print("\nTesto censurato:")
    print(testo_censurato)

if __name__ == "__main__":
    main()