Skip to content

Instantly share code, notes, and snippets.

@giacomocavalieri
Last active March 1, 2025 06:44
Show Gist options
  • Save giacomocavalieri/780f3929b556fbf1f5a6a77fb11df59c to your computer and use it in GitHub Desktop.
Save giacomocavalieri/780f3929b556fbf1f5a6a77fb11df59c to your computer and use it in GitHub Desktop.
  1. Modifichiamo l'esercizio 8 del secondo laboratorio. Il codice originale era il seguente:
    tags_cercati = ["grammys", "chappellRoan", "sabrinaCarpenter"]
    tags_del_post = ["grammys", "doechii"]
    
    post_visualizzato = False
    for tag_del_post in tags_del_post:
       for tag_cercato in tags_cercati:
          if tag_cercato == tag_del_post:
              post_visualizzato = True
              break
    
    if post_visualizzato:
        print("✅ Il post verrà mostrato")
    else:
        print("❌ Il post non verrà mostrato")
    Vorremmo renderlo più facile da leggere definendo delle funzioni aggiuntive: post_visualizzato(post) che restituisce un Bool che dice se il post passato come primo argomento va visualizzato o meno a seconda dei tag_cercati passati come secondo argomento:
    def post_visualizzato(post, tag_cercati):
        # implementare la funzione...
        return True
        
    tags_cercati = ["grammys", "chappellRoan", "sabrinaCarpenter"]
    post = ["grammys", "doechii"]
    if post_visualizzato(post, tags_cercati):
        print("✅ Il post verrà mostrato")
    else:
        print("❌ Il post non verrà mostrato")
    Per implementare la funzione post_visualizzato definire e utilizzare una nuova funzione intersezione che prende in input due liste e restituisce una nuova lista con i soli elementi in comune fra le due.
  2. Riprendiamo l'esercizio della calcolatrice, vogliamo renderlo più facile da leggere utilizzando delle funzioni; una volta modificato il codice apparirà come segue:
    # Preso un `input` di tipo Stringa nel seguente formato `n operatore m`, lo spezza in una lista con
    # 3 elementi nel seguente ordine `[n, operatore, m]`:
    #   - `n` e `m` sono due valori di tipo `float`
    #   - `operatore` è la stringa fra i due operandi `n` e `m`
    # Se la stringa non è in un formato valido, restituisce una lista vuota!
    def operazione_da_testo(input):
        # Implementare la funzione
        return []
    
    # Dati due numeri `n` e `m`, e un `operatore` espresso come una stringa, applica l'operazione corrispondente
    # ad `n` e `m`. Gli unici operatori supportati sono `+` e `*`, se viene dato in input un qualunque altro
    # operatore il risultato è `None`
    def applica_operazione(n, operatore, m):
        # Implementare la funzione
        return None
        
    while True:
        testo_input = input()
        if testo_input == "stop":
            break
            
        operazione = operazione_da_testo(testo_input)
        if len(operazione) == 3:
            [n, operando, m] = operazione
            risultato = applica_operazione(n, operando, m)
            if risultato != None:
                print(f"{n} {operando} {m} = {risultato}")
            else:
                print(f"Operando non supportato: '{operando}'")
        else:
            print("l'operazione fornita non ha un formato valido")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment