Skip to content

Instantly share code, notes, and snippets.

@salvatorecapolupo
Last active February 24, 2026 09:43
Show Gist options
  • Select an option

  • Save salvatorecapolupo/9e3e69fcb003ebcc6ebf533fab163742 to your computer and use it in GitHub Desktop.

Select an option

Save salvatorecapolupo/9e3e69fcb003ebcc6ebf533fab163742 to your computer and use it in GitHub Desktop.

Pre requisiti

Ecco la lista delle linee di comando più comuni per Python e la gestione delle librerie (pip), utile per i tuoi progetti di Sistemi e Reti:

  • python --version
  • python script.py
  • python -m venv venv
  • source venv/bin/activate
  • venv\Scripts\activate
  • pip install nome_libreria
  • pip install requests moviepy matplotlib
  • pip install -r requirements.txt
  • pip list
  • pip show nome_libreria
  • pip freeze > requirements.txt
  • pip install --upgrade pip
  • pip uninstall nome_libreria
  • python -m pip install --upgrade setuptools

1. Il "Ping" HTTP (GET Request)

Il primo passo è capire se un server ci risponde. Usiamo httpbin.org, un servizio perfetto per i test perché è "anonimo" e non richiede registrazioni.

import requests

# Facciamo una chiamata a un server che ci restituisce il nostro IP
response = requests.get("https://httpbin.org/ip")

# Verifichiamo il "Codice di Stato" (200 = OK)
print(f"Status Code: {response.status_code}")
print(f"Tuo IP pubblico: {response.json()['origin']}")

Concetto TPSIT: Qui stai vedendo il modello Client-Server in azione. Il tuo script è il Client, httpbin è il Server.


2. Passare parametri (Query Strings)

Immagina di voler inviare dei dati a un server tramite l'URL. Riprendiamo i dati del tuo esercizio sulle diseguaglianze: numeri e segni.

import requests

# Definiamo i dati da inviare
payload = {
    'numeri': '3,8,1,5,2', 
    'segni': '<,>,<,>'
}

# Inviamo una GET con parametri
r = requests.get("https://httpbin.org/get", params=payload)

# L'URL finale costruito da requests sarà:
# https://httpbin.org/get?numeri=3%2C8%2C1%2C5%2C2&segni=%3C%2C%3E%2C%3C%2C%3E
print(f"URL generato: {r.url}")

Concetto TPSIT: Questo è il modo in cui i motori di ricerca gestiscono le tue query.


3. Gestire il JSON (L'anima delle API)

In quinta si studiano i dati strutturati. Le API moderne parlano quasi solo JSON. Proviamo a recuperare dei dati "finti" da un server di test professionale.

import requests

# Simuliamo il recupero di una lista di utenti/nodi di rete
response = requests.get("https://jsonplaceholder.typicode.com/users/1")

if response.status_code == 200:
    data = response.json()
    print(f"Nome Utente: {data['name']}")
    print(f"Email: {data['email']}")
    print(f"Città: {data['address']['city']}")
else:
    print("Errore di rete!")

4. Integrazione Finale: "Remote Sorting"

Uniamo la libreria requests con la logica del tuo PDF . Immaginiamo che una API ci fornisca i numeri e noi dobbiamo ordinarli seguendo le diseguaglianze.

import requests

def ordina_remoto():
    # 1. Recuperiamo i numeri da una API (simulata)
    # In un caso reale questa potrebbe essere una dashboard di monitoraggio reti
    r = requests.get("https://jsonplaceholder.typicode.com/todos/1")
    
    # Usiamo dei dati di test basati sul tuo PDF
    [cite_start]nums = [1, 3, 2, 3, 5] [cite: 46]
    [cite_start]segni = ["<", "<", "<", "<"] [cite: 47]
    
    # [cite_start]2. Applichiamo la logica del ciclo for [cite: 49-61]
    for _ in range(len(nums)):
        for i in range(len(segni)):
            if (segni[i] == "<" and nums[i] > nums[i+1]) or \
               (segni[i] == ">" and nums[i] < nums[i+1])[cite_start]: [cite: 54]
                
                # [cite_start]Swap Pythonico [cite: 56-58]
                nums[i], nums[i+1] = nums[i+1], nums[i]
    
    return nums

print(f"Risultato dopo recupero e ordinamento: {ordina_remoto()}")

5. Il modo più semplice (Disegno geometrico)

La libreria Turtle è già installata in Python. È perfetta per capire la logica dei cicli e delle coordinate senza configurare nulla.

import turtle

t = turtle.Turtle()
t.speed(2)

# [cite_start]Disegniamo un quadrato (Ciclo semplice [cite: 2])
for i in range(4):
    t.forward(100)
    t.left(90)

turtle.done()

6. Il modo "Sistemi e Reti" (Grafici e Visualizzazione)

Se vuoi visualizzare l'andamento di una rete o l'esito di un algoritmo (come quello del tuo PDF), si usa Matplotlib. In 3 righe crei un grafico professionale.

Esempio: Visualizzare il "Profilo della montagna" Prendiamo i numeri ordinati secondo le diseguaglianze del tuo documento.

import matplotlib.pyplot as plt

# [cite_start]Dati dal tuo PDF [cite: 12]
numeri = [1, 8, 2, 5, 3] 

plt.plot(numeri, marker='o', color='red') # Disegna la linea con i punti
plt.title("Profilo della Montagna (Diseguaglianze)")
plt.show()

7. Esempio Integrato: Animazione della Logica

Ecco uno script che unisce il "disegno" alla logica di ordinamento del PDF . Disegna delle barre che cambiano altezza mentre l'algoritmo lavora.

import matplotlib.pyplot as plt

def disegna_passaggio(nums, passo):
    plt.clf() # Pulisce il disegno precedente
    plt.bar(range(len(nums)), nums, color='skyblue')
    plt.title(f"Passaggio {passo}")
    plt.pause(0.5) # Pausa per vedere l'animazione

[cite_start]nums = [3, 8, 1, 5, 2] # [cite: 8]
[cite_start]segni = ["<", ">", "<", ">"] # [cite: 10]

plt.ion() # Modalità interattiva accesa
for j in range(len(nums)):
    for i in range(len(segni)):
        # [cite_start]Logica di confronto del PDF [cite: 54]
        if (segni[i] == "<" and nums[i] > nums[i+1]) or \
           (segni[i] == ">" and nums[i] < nums[i+1]):
            [cite_start]nums[i], nums[i+1] = nums[i+1], nums[i] # Swap [cite: 56-58]
            disegna_passaggio(nums, j)

plt.ioff()
plt.show()

Per chiudere in bellezza il primo percorso su Python per TPSIT, usiamo MoviePy. Questa libreria è perfetta per capire come i sistemi gestiscono i flussi multimediali, i codec e il rendering. Oltre a moviepy, per gestire i testi la libreria ha bisogno di un "motore". Il modo più moderno e semplice (senza installare software esterni pesanti come ImageMagick) è usare il backend di Pillow.

pip install moviepy

8. Creare un video a partire da un testo

from moviepy.editor import TextClip, ColorClip, CompositeVideoClip

# [cite_start]1. Definiamo il testo (dal tuo PDF [cite: 12])
testo_risultato = "[1] < [8] > [2] < [5] > [3]"

# 2. Creiamo la scritta (Clip di testo)
# Nota: puoi cambiare 'font' con uno presente sul tuo sistema
clip_testo = TextClip(testo_risultato, fontsize=70, color='white', font='Arial')
clip_testo = clip_testo.set_duration(5).set_position('center')

# 3. Creiamo uno sfondo colorato (per non avere il nero totale)
sfondo = ColorClip(size=(1280, 720), color=(30, 144, 255)).set_duration(5)

# 4. Sovrapponiamo il testo allo sfondo e salviamo
video_finale = CompositeVideoClip([sfondo, clip_testo])
video_finale.write_videofile("risultato_tpsit.mp4", fps=24)

4. Piccolo trick: Rendere il video dinamico

Se vuoi che il video mostri il "profilo della montagna" che cambia, potresti generare una clip per ogni passaggio del ciclo for che scambia i numeri .

Suggerimento: MoviePy è ottimo, ma su alcuni computer scolastici potrebbe dare errori di "ImageMagick binary not found". Se succede, basta specificare il percorso dell'eseguibile nel codice o, più semplicemente, usare la versione di MoviePy che sfrutta Pillow per il disegno dei testi.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment