martedì 16 ottobre 2012

Mission Python: Operazioni con i numeri

Oggi parleremo di matematica. Ferrrmi! Non è come sembra!! Davvero!!!
Ancora qui? OK, si parte ma prima un po' di comunicazioni per quello che ci tornerà utile in seguito.
Tra breve cominceremo a scrivere degli script (si chiamano così i programmi in Python) e ci serve un editor. Per Linux vanno bene quasi tutti (no, non servono vi o Emacs anche se...). Per Windows il Blocco note è un po' troppo rudimentale; consiglio caldamente di installare Notepad2, è free e lo trovate qui

Scegliete l'opzione "Download Notepad2 4.2.25 Setup (x86) [292 KB]"

OK, ce ne sono anche altri, magari ne avete già uno o più.

A proposito: tra i millemila che hanno visto le prime lezione ci sono anche quelli che usano Windows vero? Fatecelo sapere perché alcune cose (poche in verità) cambiano per voi.

Per una ragione che vi risulterà chiara in seguito sarebbe cosa buona e giusta avere un editor più orientato a Python. Io uso Geany, lo trovate anche per Windows qui

Per Windows prendete Windows Binaries geany-1.22_setup.exe - Full Installer including GTK 2.16.

Ancora una cosa: noi usiamo il terminale ma con Python ne viene installato uno dedicato, Idle, lo trovate nel menu (quale? dipende)



OK, adesso come promesso vediamo un po' di operazioni che possiamo fare con i numeri. In Python esistono due tipi di numeri: int -> interi e float -> numeri decimali (quasi reali ma se c'è qualche mate mi cazzia se lo dico).



Una cosa che tutti sanno: per i float usiamo il punto e non la virgola.

Cominciamo con gli interi:



OPS! tutto Ok ma la divisione non fa quello che dovrebbe!
No, è tutto sotto controllo: per la divisione fra interi il risultato viene troncato, proprio come facevamo in seconda elementare: 8 diviso 5 dà 1 con il resto di 3. Il resto lo troviamo con l'operatore modulo, dai non siamo più in seconda!



chiaro no?
Attenzione: con la versione 3.x la divisione cambia: non tronca più per cui avremmo ottenuto 1.6; per avere il troncamento dobbiamo scrivere //.

C'è anche l'elevazione a potenza, ecco



funziona anche per fare la radice quadrata, così



o qualsiasi altra radice, ecco la radice cubica



ahemm! problema (estetico) di arrotondamento.
Notare che per quanto detto prima ho scritto 1. per avere un terzo, altrimenti capitava questo errore



E questo è un errore logico, di quelli nascosti che possono essere difficili da scovare. Nel nostro caso 1 / 3 dà 0 e qualsiasi numero diverso da zero elevato a zero dà 1, come certo saprete.

Però la radice quadrata è un'operazione talmente comune che ha un operatore tutto suo. Cioè no, è una funzione nel modulo math (presto sapremo tutto su moduli e funzioni, per adesso prendetela per buona)



OK, adesso passiamo ai reali, cioè float...

però, ripensandoci, ve lo lascio come esercizio, dai è facile.

E la prossima volta interrogo, avvisati nèh!

Juhan

9 commenti:

  1. Bello e ironico al punto giusto.
    Spero che qualcuno non provi a dividere per 0 prima di arrivare a trattare le eccezioni :)

    Ancora complimenti
    Alex

    p.s. ho avuto l'autorizzazione a pubblicare i miei lavori in python quindi prossimamente (pulizia del codice da riferimenti di server etc etc) lo metto su sourceforge e sul mio blog

    RispondiElimina
    Risposte
    1. Alex, intanto grazie. Ti ho appena cerchiato su G+ ma il tuo blog, perdona la gnoranza, qual è?

      Elimina
    2. ahahaah scusa è http://stanzinofree.net ma è poco aggiornato, ero in attesa di avere l'autorizzazione ad usare i miei script per scrivere qualcosa e tra il dire ed il fare poi non avevo mai il tempo di aggiornarlo, forse questa è la volta buona :)

      Elimina
  2. Interessantissimo, anche questa fase è superata.
    Python sembra facile anche per me che non ho mai preso in mano nessun codice, è la prima volta!

    RispondiElimina
    Risposte
    1. Che il biscione sia con te! Ma ricorda che "it's long way to Tipperary".

      Elimina
  3. Visto che Python sembra così facile, con l'occasione riprendo in mano i libri di informatica e di 'puter che avevo alle superiori, e ricomincio proprio dalle basi.
    Per ora vado avanti finché non mi stanco, poi imparo qualcosa in più sera per sera.

    Grazie, corso utilissimo, Juhan.

    RispondiElimina
  4. il problema per me è l'identazione
    mi da speso errore , e poi la sua semplicità
    è un'arma a doppio taglio, per chi come me viene
    da linguaggi più complessi come il Pascal e il Fortran (a prova di scemo) reminiscenze universitarie ..molto lontane ahimè

    RispondiElimina
  5. Python è atipico riguardo ai blocchi: la maggior parte la fa con { e } come il C, qualcuno con begin e end come il Pascal e Delphi.
    Guido ha raccontato più volte come e perché ha scelto l'indentazione (altri l'avevano fatto, ricordo Occam) che un vantaggio ce l'ha: il codice è più ordinato e leggibile.
    Certo bisogna avere un editor che distingue spazi e tab.
    Se serve posso procurarti un elenco.

    Poi, a dirla tutta, ma proprio tutta-tutta, c'è un'altra via: le parentesi, non so se hai presente il Lisp, il mio linguaggio preferito.

    RispondiElimina
  6. no il Lisp non lo conosco è per un ex di Scienze dell'informazione
    ahimè ritirato , non è una bella cosa LOL!
    per Editor uso Notepad++ che dovrebbe andare bene :)

    RispondiElimina