giovedì 28 febbraio 2013

Inserire codice Python nei post di Blogger

Cercavo un modo semplice per inserire codice Python (e non solo) all'interno dei post di Blogger.

Mi serviva un qualcosa che lo formattasse correttamente in pochi semplici passi, magari dotato di syntax highlighting, e che possibilmente non si appoggiasse a qualche script lato utente che lo avrebbe reso inutile per quanti viaggiano in rete con Javascript disabilitato nel browser.

È così che mi sono imbattuto in hilite.me.

Basta copiare il codice nell'apposito box, selezionare il linguaggio (Python e svariate altre decine a scelta), lo stile da usare, se visualizzare o meno i numeri di riga a lato del codice, e infine un click: compare sia la preview che mostra come quel codice sarà visualizzato nel post, sia il codice in puro HTML da incollare nell'editor di Blogger aperto in modalità HTML.

Un esempio dei risultati vale più di mille parole:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
""" Calcolo della radice quadrata con il metodo iterativo di Newton.
"""
import math

x = int(input("Inserisci il numero di cui calcolare la radice quadrata: "))
tolleranza = float(input("Inserisci la tolleranza desiderata (es. 0.0001): "))
z = 1.0
count = 0

while True:
    count += 1
    z = (z + (x / z)) / 2  # nuova e migliore approssimazione della radice quadrata.
    differenza = abs(x - z**2)  # calcola quanto dista l'approssimazione dalla radice reale.
    if differenza < tolleranza:
        break

print("Il valore calcolato con il metodo di Newton e':", z, "calcolato in", count, "iterazioni.")
print("Il valore calcolato con la funzione sqrt() di Python e'", math.sqrt(x))

Per quanti conoscono Python ed i suoi framework, il sito si appoggia a Flask come web framework e Pygments come syntax highlighter. Volendo vi è anche un'API da richiamare per avere in risposta del codice pronto in HTML in formato UTF-8.

Nessun commento:

Posta un commento

L'autore del commento si assume la totale responsabilità del suo contenuto. Commenti ritenuti offensivi o non attinenti potranno essere cancellati.