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 --versionpython script.pypython -m venv venvsource venv/bin/activatevenv\Scripts\activatepip install nome_libreriapip install requests moviepy matplotlibpip install -r requirements.txtpip listpip show nome_libreriapip freeze > requirements.txtpip install --upgrade pippip uninstall nome_libreriapython -m pip install --upgrade setuptools
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.
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.
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!")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()}")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()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()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
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)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.