Python come “calcolatore”

Come far fare calcoli a Python.

Bene, abbiamo imparato a far scrivere qualcosa a Python, ma la faccenda è un po’ stupida dato che siamo noi a dire esattamente cosa ci deve mostrare. Vediamo di chiedergli qualcosa di più... Cosa c’è di meglio di chiedere a un “calcolatore” se non di far calcoli? Mettiamolo alla prova. Possiamo scrivere istruzioni per stampare il risultato delle operazioni aritmetiche:

>>> print(5+9)
14

Alcune osservazioni:

  1. L’espressione “5+9” può anche contenere spazi: “5 + 9” e viene comunque interpretata ed eseguita correttamente.

  2. All’interno di IDLE si potrebbe anche omettere il comando print, l’ambiente IDLE aggiunge automaticamente un’istruzione per la visualizzazione del risultato di un’espressione:

    >>> 5+9
    14
    

    ma è preferibile evitare comandi impliciti: “Non basta che tu calcoli 5+9, devi anche stampare il risultato!”.

  3. Nota: l’ambiente IDLE (ma cosa vuol dire idle in inglese?) permette di riprendere e modificare un’istruzione precedente senza riscriverla, basta portare il cursore sull’espressione, premere <Invio> e IDLE ce la ricopia su una nuova riga, pronta per essere modificata e rieseguita.

Prova tu scrivendo espressioni con più operazioni, espressioni con parentesi controllando che Python faccia i calcoli giusti!

Se hai fatto diverse prove e controllato con attenzione i risultati ti sarai accorto che:

  1. Python commette degli errori,
  2. Python sa eseguire poche operazioni.

Il primo problema sorge quando tentiamo di eseguire una divisione:

>>> print 33/7
4

Ma come è possibile che un linguaggio di programmazione serio faccia questi errori? I programmatori che hanno progettato Python hanno pensato che il risultato di una divisione tra interi debba essere un numero intero. Se vogliamo vedere i decimali del risultato, almeno uno degli operandi deve essere un numero con la virgola (la virgola nei linguaggi di programmazione è il punto!):

>>> print 33./7
4.71428571429

Quindi Python tratta in modo diverso “33” da “33.”: il primo è un oggetto int (intero), il secondo un oggetto float (in virgola mobile). È importante, quando si affronta un problema, prestare ben attenzione se possiamo trattarlo usando numeri interi o in virgola mobile per evitare errori difficili da scovare.

Chi sta usando Python 3.x non avrà compreso i paragrafi precedenti infatti in Python 3.x è stato cambiato il comportamento della divisione, il risultato è sempre un numero razionale (float) anche quando gli operandi sono numeri interi.

Nel resto di questo manuale utilizzeremo Python 3.x. Ma chi ha installata sulla propria macchina una versione 2.x può dire a Python di anticipare il comportamento della 3.x importando la divisione e la funzione print dal modulo __future__ con il seguente comando:

>>> from __future__ import division, print_function

Dopo questa istruzione anche Python 2.x darà il seguente risultato:

>>> print(33/7)
4.71428571429

Riassumendo

  • Possiamo usare Python come una calcolatrice. Facendogli calcolare il risultato di espressioni complesse quanto vogliamo.

  • Si può far riscrivere a IDLE un’espressione, modificarla e rieseguirla.

  • Possiamo chiedere a Python 2.x di copmortarsi come Python 3.x per quanto riguarda il comando print e la divisione eseguendo l’istruzione:

    >>> from __future__ import division, print_function
    

Prova tu

  1. Da un libro di matematica prendi qualche espressione con numeri interi e falla eseguire a Python controllando il risultato.
  2. Ora prova a far eseguire espressioni con le frazioni.
  3. Fa qualche prova per vedere quali parentesi vengono accettate nelle espressioni matematiche.
  4. Scrivi le espressioni che calcolano il perimetro e l’area dei quadrilateri che conosci.