Simulatore Python con Skulpt — Esegui Codice Python Direttamente nel Browser
Interprete Python 100% client-side: niente server, niente installazione. Scrivi, esegui e testa algoritmi di rete (subnet, parità, checksum) con persistenza locale e esempi pronti da incollare.
1. Cos'è il simulatore Python nel browser
Un simulatore Python browser-based è un interprete Python riscritto in JavaScript (qui Skulpt) che esegue codice Python direttamente nella scheda, senza server. Output va in un <pre>, storage in localStorage, esecuzione asincrona con Promise.
Perché utile a scuola di reti? Perché puoi prototipare in 10 secondi algoritmi che altrimenti richiederebbero installazione: calcolo bit di parità, somma checksum, validazione IPv4, conversione binario-decimale, generazione tabella FLSM. Zero attrito, zero pip install.
Client-only
Niente Python locale. Funziona anche su Chromebook o tablet. Offline dopo primo load CDN.
Feedback immediato
Esecuzione in <200ms per script didattici. Ideale per cicli prova-errore durante lezione.
Focus algoritmi
Testi subnet, parity, CRC in Python invece di JS, poi porti stessa logica in Packet Tracer / script.
In industria gli script di automazione Cisco, validazione config, parsing log e calcolo subnet sono quasi sempre in Python. Questo simulatore ti allena alla sintassi che poi userai con Netmiko, ipaddress, ecc. Skulpt copre molte delle funzionalità necessarie per iniziare a esercitarsi con Python nel browser.
2. Come funziona Skulpt — interpretazione Python → JS
Skulpt non compila via WebAssembly: è un interprete Python 2/3 scritto a mano in JS. Legge sorgente, parser → AST, poi eval in runtime JS che simula oggetti Python (PyObject, dict, list). Moduli standard essenziali sono forniti da skulpt-stdlib.js.
| Componente | Ruolo | Dettaglio |
|---|---|---|
| textarea.python-code | Input utente | Dark editor, font JetBrains Mono, localStorage sim08_python_2026 |
| Sk.configure | Config runtime | output: outfFactory() appende testo, read: builtinRead serve stdlib |
| Sk.misceval.asyncToPromise | Esecuzione | Promise asincrona; cattura eccezioni → err.toString() in output |
| Limiti | Compatibilità | No file I/O reale, no socket, no input() bloccante, no pip, moduli limitati (math, random ok) |
Skulpt implementa Python 3-ish ma non tutto: time.sleep può non funzionare, open() legge solo file virtuali di stdlib, input() non è supportato in modo nativo. Per reti, usa funzioni pure (no rete). Se vedi ExternalError controlla indentazione e moduli.
3. Simulatore interattivo — editor Python con Skulpt
Scrivi sotto, premi Esegui ▶. Il codice viene salvato automaticamente. Reset riporta l'esempio di benvenuto. Usa i chip per caricare snippet pronti.
Scrivi il tuo codice Python qui sotto, premi Esegui e visualizza il risultato. Il codice viene salvato automaticamente nel browser. Usa 4 spazi per indentare.
Fai scrivere prima lo pseudo-codice per FLSM (rete /26 → 62 host). Poi traduci in Python: host = 2**(32-prefix)-2. Verifica con questo simulatore. Infine confronta con calcolo manuale. Il ciclo manuale → codice → simulatore fissa il concetto.
4. Esempi pratici per reti e algoritmi
Tre snippet pronti da incollare con Copia. Coprono print/variabili/if/for/funzioni + casi di reti.
5. Errori comuni, limitazioni e debug
IndentationError
Python vuole 4 spazi. Mix tab/spazi → errore. Skulpt lo segnala come IndentationError.
SyntaxError :
Dimenticare : dopo if/for/def → SyntaxError. Controlla riga indicata nell'output.
ImportError
Solo math, random, etc. Se importi socket o requests → File not found.
| Errore visto in output | Causa tipica | Fix rapido |
|---|---|---|
SyntaxError: bad input | Parentesi non chiusa, virgolette, = vs == | Rileggi riga, conta parentesi, usa == per confronto |
NameError: name 'x' is not defined | Variabile non definita o typo | Definisci prima, controlla maiuscole |
TypeError: ... | Somma str + int, int su None | Converti con int(), str(), usa f-string |
File not found da builtinRead | import modulo non supportato | Togli import, reimplementa funzione a mano |
Se output resta vuoto, hai dimenticato print() — Skulpt non stampa l'ultima espressione come REPL. Aggiungi print. Se vedi testo rosso, copia l'errore e incollalo in verifica sotto per ragionarci.
6. Verifica / Esercizio pratico
🔬 Attività — Lab Python Reti
Usa il simulatore sopra per risolvere, poi confronta output atteso.
- Subnet host: scrivi funzione
host_utili(prefix)che ritorna 2**(32-prefix)-2. Testa per /24, /26, /28, /30 e stampa. - Parità estesa: scrivi funzione che data lista di byte stringhe (es. ["1010","1100"]) calcola parity bit even per ogni byte e ritorna lista T=D+P. Conta quanti 1 totali in T.
- Validatore CIDR: input stringa "192.168.5.0/26" → split IP e prefix → valida IP con funzione vista → calcola mask e host utili. Gestisci errori con print chiaro.
1. def host_utili(p): return 2**(32-p)-2 + loop for. 2. Usa bits.count('1') %2 → parity, appendi. Somma popcount di T per verifica pari. 3. ip, pref = s.split('/') ; pref=int(pref) → try/except, poi riusa ip_to_bin e calc_subnet dell'esempio 2. Se invalido, stampa "CIDR non valido". Questo esercizio allena parsing + funzioni pure = base per automazione.
7. Riepilogo e concetti chiave
asyncToPromise(importMainWithBody) + catch per mostrare errori in .python-output.sim08_python_2026, init automatico con querySelectorAll('.simulatore').