[teaser]In questa seconda parte della guida dedicata a Python, parliamo della manipolazione di Stringhe e delle Liste, e del ciclo For.[/teaser]

Già nella lezione precedente, abbiamo cominciato a vedere le Variabili.

Tipi di Variabili

Abbiamo già detto che python, non è un linguaggio tipizzato: ciò non toglie che di volta in volta ci ritroveremo a lavorare con tipi di oggetti diversi.

Per sapere che tipo di variabile stiamo manipolando, possiamo eseguire il comando type:

stringa = '5'
type(stringa) # Ritorna str (stringa)
integer = 5
type(integer) # Ritorna Int (intero)

Tutto ciò che è preceduto dal simbolo cancelletto non viene letto da Python. In questo modo, possiamo commentare il codice senza avere errori di sintassi. Il discorso sui commenti potete capirlo leggendo quest’altro articolo.

Il primo assegnamento, si differenzia dal secondo per gli apici: in questo modo infatti, stiamo dichiarando una variabile di tipo stringa.

A che scopo sapere questo?

Bene, diciamo che le operazioni aritmetiche che abbiamo visto nella lezione precedente, valgono anche per le stringhe: le sequenze di caratteri infatti, verranno ripetute.

stringa = 'c'
operazione = stringa*10

Ritornerà cccccccccc

L’operatore aritmetico somma (+) invece, serve a concatenare delle stringhe.

stringa1 = 'Ciao,'
stringa2 =' Come ti chiami?'
stringa3 = stringa1+stringa2
print stringa3

Il comando print serve a stampare a video il contenuto di una variabile.

Il risultato di questo programmino, è quello di stampare nella nostra shell la stringa:

Ciao, Come ti chiami?

Se inseriamo questo operatore (+), fra una stringa e un intero avremo un errore. Questo perchè python non può concatenare stringhe e numeri.

stringa = 'c'
integer = 5
sbagliato = stringa+integer

Questo programma ritornerà un’errore di sintassi. A volte però, è necessario concatenare stringhe a, per esempio, risultati di espressioni. Per risolvere il problema, usiamo la funzione “str()” che trasforma appunto una variabile in un tipo string.

stringa1 = '5x2='
intero2 = 5x2
stringa3 = stringa1 + str(intero2)
print stringa3

Il risultato, come è intuibile, sarà:

5×2 = 10

Oltre ai tipi string( stringa), e intger( intero), abbiamo anche come tipi importanti i float, ovvero i numeri con la virgola.

Qualcosa di più sulle Stringhe

Cominciando con una pò di regole su come scegliere il nome delle nostre variabili:

  • Devono cominciare con una lettera,
  • Devono contenere solo caratteri alfanumerici,
  • Le lettere possono essere sia maiuscole che minuscole,
  • Possono essere delle lunghezza che preferiamo.
*variabilesbagliata = 'no'
$variabilesbagliata2 = 'no' 
VariabileOk1 = 'si'
variabileOK2 ='si'

Premesso queste semplici regolette, a volte succede che abbiamo bisogno di inizializzare una variabile come stringa ma senza attribuirgli un valore. Per farlo, si crea una stringa vuota:

stringaVuota = ''
type(stringaVuota)

Il type di stringaVuota, vi ritornerà un valore “str“.

Vediamo ora un’altro modo per creare una variabile stringa, per quando abbiamo bisogno di scriverla su più righe.

In pratica, invece di utilizzare un singolo apice, ne usiamo tre di seguito:

stringa = '''
Ciao,
Ti piace l'informatica?
A presto,
Federico'''

Questo è sintatticamente corretto, infatti python lo accetterà senza fare storie. Ma cosa succese se andiamo a stamparne il contenuto?

print stringa

Avremo una stringa del tipo:

Ciao,\\nTi piace l\\’informatica?\\nA presto,\\nFederico

Adesso probabilmente vi starete chiedendo, cosa sono i caratteri aggiuntivi aggiunti da python?
Questi caratteri, vengono chiamati di escape e vengono utilizzati dal linguaggio di programmazione (si trovano, anche se magari in forme diverse, in ogni linguaggio di programmazione) per evitare di confodersi:

Sequenza Di Escape : Descrizione

  • \\n : Serve per inserire gli “a capo”, ovvero i fine linea. Il testo che lo segue, si troverà in una nuova riga
  • \\’ : Serve a distinguere gli apici del testo con quelli che segnano la fine della dichiarazione della variabile
  • \\” : Come sopra, solo per gli apici doppi
  • \\t : Tab
  • \\\ : Serve se vogliamo inserire nella variabile un backslash, e distinguerlo da carattere di escape.

Cosa sono le Liste

Spesso quando trattiamo con i dati, dobbiamo poter scegliere il metodo più facile per rappresentarli e salvarli nel nostro sistema.
Uno strumento che varia di nome (e leggermente di struttura) di linguaggio in linguaggio, si chiama in Python la Lista.
La lista è un tipo di variabile che ci permette intituivamente, di rappresentare liste di dati.
Ad esempio, potrebbe essere necessario salvare una lista con le persone presenti in quel momento o una lista con i nomi delle persone che conoscete o cose del genere.
Diciamo che, a seconda di problema in problema, sceglieremo la via più facile. Quello che comunque è fondamentale sapere, è che le liste vengono utilizzate molto spesso in Python e che si rivelano molto utili.

Possiamo creare una lista in più modi:

lista = [] #Utilizzando le parentesi quadre
lista2 = list() #Utilizzando la funzione list()

In entrambi i casi, ovviamente, stiamo creando una lista vuota.

Per creare una lista con un elemento invece, faremo così:

listaAlfabeto = ['a','b','c','d'] #...'x','y','z']

Creata questa lista, adesso vediamo come accedere ad ogni singolo elemento:

print listaAlfabeto[0] #Stampa la lettera a
print listaAlfabeto[1] #Stampa la lettera b

Quello tra parentesi quadre, è l’indice dell’elemento della lista e, come potete notare, le liste cominciano a contare da 0.

Dopo aver creato una lista, possiamo aggiungere elementi utilizzando il metodo append():

Quindi la sintassi èlista = [1,2,3] #creo una lista con i numeri 1,2,3
lista.append(4) #aggiungo l'elemento 4
print lista[3] #stamperà 4
nomelista.append(elementoDaAggiungere)

Questa sintassi di indici vale anche per le stringhe:

stringa = "ciao"
print stringa[0] # Stampa: c

Valgono le operazioni matematiche:

lista = [1,2,3]
print lista * 3 # Stampa: 1,2,3,1,2,3,1,2,3
lista2 = lista + [4,5]
print lista2 # Stampa: 1,2,3,4,5

Un paio di metodi utili con le liste:

lista = [1,2,3]
print len(lista) # Stampa la lunghezza della lista, quindi in questo caso 3
print  sort.lista() # Ordina la lista, e poi la stampa

Adesso proponiamo un problema: se noi abbiamo la lista dei numeri primi da 0 a 10.000.000.000 come potremmo fare? Potremo sì, stampare elemento per elemento, indice per indice, ma ciò, si capisce bene, richiederebbe una enorme ripetizione di codice.
Come fare quindi?

Il ciclo For

For è l’inglese di “Per”, con cui si intende più specificamente “Per quante volte” ripetere il codice che gli forniamo. Per chi ha conoscenze di altri linguaggi, quello di python è più un foreach che un for.

Vediamo quindi subito a freddo, un esempio di ciclo for:

lista = [1,2,3]
for elemento in lista:
    print elemento

Che cosa notate subito? La sintassi è molto importante in python: è caratterizzata dall’ identazione. L’identazione, è più semplicemente la spaziatura che indica che un codice è contenuto in un altro. In questo caso, il comando print elemento è contenuto nel ciclo for ed è identato avanti di 4 spazi.

Che cosa fà il codice? “elemento” è un elemento generico nella lista “lista”, che a seconda della lunghezza di lista assumera di volta in volta l’elemento considerato.

Esempio:

Avviando il codice, al primo avvio “elemento” sarà 1 perciò il primo print stamperà uno, al secondo giro elemento assumerà valore 2 perciò il print stamperà due, infine all’ultimo giro (dato che poi la lista ha terminato gli elementi) “elemento” assumera il valore 3, e col comando print stamperemo proprio questo valore.

Vedremo comunque nella prossima lezione le funzioni che ci permetteranno di fare i nostri primi programmi un pò più complessi, altri cicli e metodi di controllo.