Appunti sul linguaggio Python

Una interessante introduzione al linguaggio Python ricca di esempi anche nel campo della matematica

Pensare da informatico

di Allen B. Downey, Jeffrey Elkner e Chris Meyers

Traduzione di Alessandro Pocaterra


Un'altra introduzione più semplice è

Tutorial per principianti in Python

di Josh Cogliati

Versione in lingua italiana del "Tutorial per principianti in Python" a cura di Nicholas Wieland e Ferdinando Ferranti.


Anche l'autore del linguaggio Python, Guido van Rossum ha scritto una introduzione

Il tutorial di Python

di Guido van Rossum

Traduzione in italiano Ferdinando Ferranti e Riccardo Fabris,


Siti INTERNET

in inglese: www.python.org

in italiano: www.python.it

Grafica cartesiana con un modulo

del prof. John M. Zelle Ph. D. Wartburg College

100 Wartburg Blvd.
Waverly, IA 50677

siti Internet
http://mcsp.wartburg.edu/zelle/python
http://www.fbeedle.com/99-6.html


Indice




Introduzione


Il linguaggio Python è un linguaggio di programmazione interpretato: le istruzioni vengono tradotte in linguaggio macchina una ad una e quindi eseguite se si rispetta la sintassi. Una volta entrati nell'interprete è possibile scrivere direttamente una istruzione ed eseguirla. Ad esempio si può utilizzare il Python come una calcolatrice per far eseguire operazioni. Basta scrivere le operazioni e premere invio.

Si possono inserire anche delle funzioni direttamente dalla tastiera con la seguente sintassi:

>>> def f(x): invio

...         return 1/(1+x**2) invio

....     invio

Nella seconda riga il rientro è obbligatorio: la colonna da cui comincia return non può essere la stessa di def. Il doppio asterisco indica l'elevamento a potenza.

Una volta definita la funzione è possibile utilizzarla ad esempio scrivendo

>>> f(-2)

e verrà visualizzato il risultato. Più in generale la sintassi per scrivere una funzione è:

def nome_funzione(parametri):

        istruzioni rientro obbligatorio

Tra una istruzione e l'altra basta andare a capo e scrivere con lo stesso rientro.





Per importare moduli

Per poter utilizzare determinate funzioni o metodi, è possibile importare “moduli” standard già previsti oppure nuovi definiti da chi usa il linguaggio. Ad esempio un modulo già previsto nel linguaggio è math che comprende alcune funzioni e costanti matematiche come ad esempio la radice quadrata sqrt, i logaritmi, le funzioni trigonometriche, la costante pigreco. Per utilizzare un modulo si deve scrivere:

import nome_modulo

Dopo ciò ogni funzione prevista nel modulo può essere richiamata con la sintassi nome_modulo.nome_funzione.

Esempio

>>> import math

>>> math.sqrt(4)

>>> math.pi

Esistono centinaia di moduli standards. Per avere un elenco di quelli subito disponibili, basta digitare nel python

>>> help()

e quindi modules

Un nuovo modulo può essere scritto da chi usa il linguaggio ed essere importato nello stesso modo a patto che il python venga eseguito nella stessa directory dove è memorizzato il file corrispondente.

Esempio

In un file scriviamo due funzioni (vedi dopo utilizzare IDLE) una per il fattoriale e una per calcolare i coefficienti binomiali

def fattoriale(n):

    if n==0:

        return 1L

    else:

        return n*fattoriale(n-1)

def binomiale(n,k):

    if k==0:

        return 1L

    else:

        return fattoriale(n)/(fattoriale(k)*fattoriale(n-k))

La strana L dopo 1 avvisa il python di utilizzare interi molto lunghi.

Visto che = è l'operatore assegnazione, l'operatore confronto è == ovvero due uguali.

La funzione fattoriale è un notevole esempio di funzione ricorsiva: il fattoriale di zero è uno altrimenti (else) il fattoriale di n è dato da n per il fattoriale di n-1. Da notare i successivi rientri che sono obbligatori perchè delimitano le istruzioni.

Memorizzato il file dando come estensione .py abbiamo creato un modulo; si esegua il python a partire dalla directory che contiene il file appena creato. Si può adesso importare il modulo

>>> import nome_modulo

Utilizzare quindi le due funzioni nome_modulo.fattoriale(n) e nome_modulo.binomiale(n,k)



Utilizzare IDLE

Sia in ambiente Windows che Linux, è disponibile un programma scritto con il Python stesso che permette di scrivere e provare programmi in Python:
IDLE
Integrated Development Environmet

Con questo programma si ha a disposizione un "editor" per scrivere programmi in Python ed eseguirli.

Per scrivere un nuovo modulo di funzioni oppure un insieme di comandi, entrati nella IDLE si può utilizzare dal menù File New Window. Appare una pagina bianca su cui si può scrivere. Dopo aver memorizzato il file con una estensione .py, si ritorna nell'ambiente iniziale (Python Shell) e da lì si può importare il modulo di funzioni per poterle quindi eseguire.

Se si tratta di comandi, dopo aver memorizzato il file, essi possono essere eseguiti se si utilizza il menù Run Run Module.

Esempio

Scrivere in un file

def f(x):

    return 1/(2.0+x**2)


x = 0

while x<=1:

    print x,'\t', f(x)

    x = x+0.2


Nella definizione di funzione, 2.0 indica l'uso di numeri decimali. Dopo aver assegnato un valore alla variabile x, inizia un ciclo di ripetizioni while ovvero mentre x è minore od uguale ad 1, stampa x ed f(x) separati dalla tabulazione che viene indicata dalla stringa '\t'

Dopo aver memorizzato il file con estensione .py, eseguirlo con il menù Run Run Module.

Per eseguire un programma
In ambiente Linux, scrivere un file di testo e memorizzarlo con estensione .py.  Da riga di comando digitare

$ python nome_file.py

oppure

$ python -i nome_file.py

-i sta per interattivo cioè permette l'esecuzione di altre istruzioni dopo aver eseguite quelle contenute nel file.

Il file di testo con il programma viene spesso chiamato script.


 da un terminale o shell dopo aver cambiato directory spostandosi dove è salvato il file, scrivere:

$ python nome_file.py



Variabili globali

La parola riservata "global" serve a definire appunto globale una variabile
Le variabili definite dentro una funzione sono locali; con global invece diventano globali e se vengono modificate in una funzione cambieranno anche nelle altre. La sintassi è molto semplice. Scrivendo dentro una definizione di funzione:
global h, k
h e k diventeranno variabili globali.




Un esempio per disegnare circonferenze assegnato il centro e il raggio:


import math
def circ(x0,y0,r,fin):
    def ww(x):
        return math.sqrt(r**2-(x-x0)**2)+y0
    fin.grafico(ww,x0-r,x0+r,0.1)
    def qq(x):
        return -math.sqrt(r**2-(x-x0)**2)+y0
    fin.grafico(qq,x0-r,x0+r,0.1)
   
Due osservazioni: a) è possibile inserire definizioni di funzione dentro una funzione; b) è possibile passare come parametro  una istanza di una classe (in questo caso fin) precedentemente definita (vedi esempio).


 

Per utilizzare gli insiemi

  Nel Python esiste il tipo insieme (set). Per definire un insieme si può ad esempio scrivere
>>> a = set([2,4,1])
>>> b = set([7,4,8])
  Se gli elementi sono lettere esse devono essere racchiuse fra apici ' '.
  Esiste ovviamente l'operatore appartiene che è in
>>> 4 in a
     True

Tabella di alcune operazioni con gli insiemi
metodo
notazione infissa
a.unione(b)
a | b
a.intersection(b)
a & b
a.difference(b)
a - b
a.issubset(b)
a <= b
a.issuperset(b)
a >=  b



Le liste


Con il Python è disponibile il tipo di dato chiamato lista. Si tratta di un insieme ordinato di oggetti: variabili, numeri, stringhe (con gli apici) altre liste ecc. racchiusi fra due parentesi quadre.

Una funzione utile per creare liste di interi è

range([start,] stop [,step])

Es. range(4) restituisce [0, 1, 2, 3]
range(0,12,2) restituisce [0, 2, 4, 6, 8, 10]

Operazioni con le liste
Il segno + concatena due liste
Invece moltiplicando una lista per un naturale si ottiene una nuova lista con le ripetizioni.
Es. q = ['a','b','c']
q*3
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

Per ottenere porzioni di lista si può utilizzare ad es.
k=lista[1:3]
che restituisce una lista dall'elemento uno al numero tre.

tt=[2,3,4,5,6,7]
k = tt[1:4]
[3, 4, 5]
Si incomincia a contare da zero.

Si può anche scrivere lista[:4] recurando gli elementi da 0 a 3.

La lunghezza della lista si ottiene con len(lista).

Data una lista c, se si scrive b=c, se si modifica b, si modificherà anche c. Invece se si scrive b=c[:] si ha una copia esatta di c che non influenza più c.



Ciclo di ripetizioni for


Per eseguire un ciclo di istruzioni un numero n esatto di volte si può scrivere:
    for x in range(n):
             istruzione
             istruzione

Es. for x in range(4):
             print x
0
1
2
3

Quando non si conosce il numero di iterazioni del ciclo si può utilizzare il ciclo while (vedi la definizione di poli nella  grafica della tartaruga).

Indice

Scalette e programmi per un corso sul Python



Un progetto molto ambizioso e molto interessante  è Pygraph di Daniele Zambelli che rende disponibili sia la grafica cartesiana che la grafica della tartaruga che la geometria dinamica con il Python.