Skip to content

Instantly share code, notes, and snippets.

View giacomocavalieri's full-sized avatar
🌸

Giacomo Cavalieri giacomocavalieri

🌸
View GitHub Profile
@giacomocavalieri
giacomocavalieri / read_line.gleam
Last active June 26, 2024 09:05
Lines stream in Gleam
import gleam/dynamic.{type Dynamic}
import gleam/int
import gleam/io
const file = "./lines.txt"
pub fn main() {
let assert Ok(stream) = open(file)
let assert Ok(lines) = do_count_lines(stream, 0)
lines |> int.to_string |> io.println

Breve rassegna dei tipi di dato e delle operazioni che vi possono essere applicate (o che producono un valore di quel tipo) viste a lezione.

  • Int e Float:
    • Operatori
      • aritmetici: +, *, /, %
    • Funzioni:
      • int(stringa): converte una stringa o un float in un intero (il float viene troncato)
      • float(stringa_o_int): converte una stringa o un intero in un float (nel caso di un intero questo viene troncato)
      • round(float): arrotonda un float all'intero più vicino
@giacomocavalieri
giacomocavalieri / esercizi_laboratorio.md
Last active January 30, 2025 07:07
esercizi_laboratorio.md
  1. Scrivere un programma che stabilisce se un numero è primo (vale a dire se non è divisibile per nessun numero eccetto 1 e sè stesso)
    n = 17
    primo = None # Completare con un appropriato booleano
    
    for possibile_divisore in range(2, n):
        # Completare l'esercizio
        
    if primo:

print(f"{n} è primo")

@giacomocavalieri
giacomocavalieri / esercizi_laboratorio_2.md
Last active February 8, 2025 07:04
esercizi_laboratorio_2
  1. Quando salvo un esercizio dal sito python editor questo aggiunge due righe di commento all'inizio del file:
    # exported from python editor
    # 4944-38-1738855966229-6CE5503B8BB21C7C7068FE27DDB2D57A0DFE033C01DC742C583E988E9AD75093
    La seconda riga riporta alcune informazioni separate da un trattino -:
    • Il primo numero indica il numero di modifiche che sono state effettuate fino a quel momento
    • Il secondo numero indica il numero di volte in cui il codice è stato eseguito
    • Gli ultimi due valori sono irrilevanti ai fini dell'esercizio
@giacomocavalieri
giacomocavalieri / es2.md
Created February 15, 2025 07:19
esercizio 2

Dopo un allenamento in bicicletta Gianluca consulta il proprio smartwatch che ha memorizzato, per ogni tappa del percorso, l'altitudine rispetto al livello del mare nella seguente lista di numeri:

altitudini = [-2, 0, 20, 50, 90, 70, 0]

Ciò significa che è partito da un punto che si trovava 2 metri sotto al livello del mare, e l'altitudine massima raggiunta è stata di 100 metri sopra al livello del mare. Scrivere un programma Python che determina qual è stata la variazione massima in salita fra due tappe consecutive. In questo caso la variazione massima è stata di 40 metri in salita.

@giacomocavalieri
giacomocavalieri / es1.py
Last active February 20, 2025 17:19
Correzione esercizi
periodi = input("Inserisci un testo").split(".")
riassunto = ""
for periodo in periodi:
parole = periodo.strip().split(" ")
# Se il periodo ha una singola parola aggiungo solo quella al
# riassunto finale che andrò a stampare. Non posso ignorarla.
if len(parole) == 1:
[parola] = parole
riassunto = riassunto + f"{parola}... "
  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
  1. Scrivere un programma che prende in input una stringa rappresentante una divisione nel seguente formato 1 / 2 e ne stampa il risultato. Attenzione, in caso di divisione per zero stampare "divisione per zero".
  2. Scrivere un programma che prende in input una lista di numeri nel seguente formato 1; 2; 4; 10; 11; 20 e ne stampa la media. Attenzione, in caso non sia stato inserito alcun numero stampare "non è stato inserito alcun numero"
  1. Scrivere una funzione test_uguali che prende in input due argomenti e stampa se sono uguali, mentre stampa se sono diversi
  2. Scrivere una funzione massimo che prende in input una lista di numeri e restituisce il valore massimo nella lista (e restituisce None se la lista è vuota!). Non utilizzare la funzione built-in max!
  3. Verificare il corretto funzionamento di massimo utilizzando la funzione test_uguali mostrata in precedenza nel seguente modo:
    test_uguali(massimo([1, 2, 3]), 3)
    test_uguali(massimo([]), None)

test_uguali(massimo([-1, 100, 0]), 100)

  1. L'istituto di meteorologia ha raccolto misurazioni sulla temperatura di diverse città in diverse giornate. Ogni misurazione giornaliera riporta una serie di righe, ciascuna delle quali presenta il nome della città in cui è stata effettuata la misurazione, l'orario della misurazione e la temperatura rilevata. Per esempio, questi sono i dati rilevati nella giornata di martedì:
    cesena, 10:00, 15.0
    forlimpopoli, 10:00, 15.5
    bagno di romagna, 10:00, 14.8
    cesena, 11:00, 15.5
    forlimpopoli, 11:00, 16.0