Pensare da informatico/Variabili, espressioni ed istruzioni: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Update syntaxhighlight tags - remove use of deprecated <source> tags |
|||
Riga 6:
L'istruzione <code>print</code> funziona sia per le stringhe che per gli interi.
<
>>> print 4
4
</syntaxhighlight>
Se non sei sicuro del tipo di un valore, l'interprete te lo può dire:
<
>>> type("Hello, World!")
<type 'string'>
>>> type(17)
<type 'int'>
</syntaxhighlight>
Ovviamente le stringhe appartengono al tipo string e gli interi al tipo int. Non è invece intuitivo il fatto che i numeri con il punto decimale appartengano al tipo float: questi numeri sono rappresentati in un formato chiamato '''[[w:Numero in virgola mobile|virgola mobile]]''' o '''floating-point'''.
<
>>> type(3.2)
<type 'float'>
</syntaxhighlight>
Cosa dire di numeri come "17" e "3.2"? Sembrano effettivamente dei numeri, ma sono racchiusi tra virgolette e questo sicuramente significa qualcosa. Infatti non siamo in presenza di numeri ma di stringhe:
<
>>> type("17")
<type 'string'>
>>> type("3.2")
<type 'string'>
</syntaxhighlight>
Quando scrivi numeri grandi puoi essere tentato di usare dei punti per delimitare i gruppi di tre cifre, come in 1.000.000. Questa in effetti non è una cosa consentita in Python ed il valore numerico in questo caso non è valido. È invece corretta una scrittura del tipo
<
>>> print 1,000,000
1 0 0
</syntaxhighlight>
...anche se probabilmente questo risultato non è quello che ci si aspettava! Python interpreta 1,000,000 come una lista di tre valori da stampare (1, 0 e 0). Ricordati di non inserire virgole nei tuoi interi.
Riga 41:
L''''istruzione di assegnazione''' crea nuove variabili e assegna loro un valore:
<
>>> messaggio = "Come va?"
>>> n = 17
>>> pi = 3.14159
</syntaxhighlight>
Questo esempio effettua tre assegnazioni. La prima assegna la stringa "Come va?" ad una nuova variabile chiamata messaggio. La seconda assegna l'intero 17 alla variabile n e la terza assegna il valore in virgola mobile 3.14159 alla variabile [[w:Pi greco|pi]].
Riga 58:
|}</div>
L'istruzione <code>print</code> funziona anche con le variabili:
<
>>> print messaggio
Come va?
Riga 65:
>>> print pi
3.14159
</syntaxhighlight>
ed in ogni caso il risultato è il valore della variabile. Anche le variabili hanno il tipo; ancora una volta possiamo chiedere all'interprete a quale tipo ogni variabile appartenga:
<
>>> type(message)
<type 'string'>
Riga 74:
>>> type(pi)
<type 'float'>
</syntaxhighlight>
Il tipo di una variabile è il tipo di valore cui essa si riferisce.
Riga 85:
Assegnando un nome illegale alla variabile otterrai un messaggio d'errore di sintassi:
<
>>> 76strumenti = "grande banda"
SyntaxError: invalid syntax
Riga 92:
>>> class = "Computer Science 101"
SyntaxError: invalid syntax
</syntaxhighlight>
76strumenti è illegale perché non inizia con una lettera. milione$ è illegale perché contiene un carattere non valido (il segno di dollaro $). Ma cosa c'è di sbagliato in class?
Riga 118:
Per esempio lo script:
<
print 1
x = 2
print x
</syntaxhighlight>
produce questa stampa:
<
1
2
</syntaxhighlight>
== Valutazione delle espressioni ==
Un'espressione è una combinazione di valori, variabili e operatori. Se scrivi un'espressione sulla riga di comando l'interprete la valuta e mostra a video il risultato:
<
>>> 1 + 1
2
</syntaxhighlight>
Sia un valore (numerico o stringa) che una variabile sono già di per sé delle espressioni:
<
>>> 17
17
>>> x
2
</syntaxhighlight>
La differenza tra "valutare un'espressione" e stamparne il valore è sottile ma importante:
<
>>> messaggio = "Come va?"
>>> messaggio
Riga 149:
>>> print messaggio
Come va?
</syntaxhighlight>
Quando Python mostra il valore di un'espressione usa lo stesso formato che si userebbe per inserirla: nel caso delle stringhe ciò significa che include le virgolette di delimitazione. L'istruzione print invece stampa il valore dell'espressione, che nel caso delle stringhe corrisponde al loro contenuto. Le virgolette sono quindi rimosse.
In uno script un valore preso da solo è legale, anche se non fa niente e non produce alcun risultato:
<
17
3.2
"Hello, World!"
1 + 1
</syntaxhighlight>
{{cassetto
|titolo = Lo script dell'esempio non produce alcun risultato. Come lo modificheresti per mostrare i quattro valori?
|testo =
<
print 17
print 3.2
Riga 171:
sum = "1 + 1"
print sum
</syntaxhighlight>
}}
Riga 186:
Addizione, sottrazione, moltiplicazione ed elevamento a potenza fanno tutto ciò che potresti aspettarti, ma la divisione potrebbe non sembrare così intuitiva. L'operazione seguente ha infatti un risultato inatteso:
<
>>> minuti = 59
>>> minuti/60
0
</syntaxhighlight>
Il valore di minuti è 59, e 59 diviso 60 è 0.98333, non zero. La ragione di questa differenza sta nel fatto che Python sta facendo una '''divisione tra numeri interi'''.
Riga 196:
Una possibile soluzione a questo problema potrebbe essere il calcolo della percentuale, piuttosto che del semplice valore decimale:
<
>>> minuti*100/60
98
</syntaxhighlight>
Ancora una volta il valore è arrotondato per difetto, ma almeno la risposta è approssimativamente corretta. Un'altra alternativa è l'uso della divisione in virgola mobile che tratteremo nella [[Pensare da informatico/Funzioni|sezione 3]].
Riga 216:
messaggio-1 "Ciao"/123 messaggio*"Ciao" "15"+2
L'operatore + funziona con le stringhe anche se la sua funzione è diversa da quella cui siamo abituati in matematica: infatti nel caso di stringhe l'operatore + rappresenta il '''concatenamento''', cioè l'aggiunta del secondo operando alla fine del primo. Per esempio:
<
frutta = "banana"
verdura = " pomodoro"
print frutta + verdura
</syntaxhighlight>
Il risultato a video di questo programma è banana pomodoro. Lo spazio davanti alla parola pomodoro è parte della stringa ed è necessario per produrre lo spazio tra le due stringhe concatenate.
Riga 237:
Sappiamo già sommare e stampare dei numeri e possiamo fare le due operazioni nello stesso momento:
<
>>> print 17 + 3
20
</syntaxhighlight>
In realtà l'addizione è stata portata a termine prima della stampa, così che le due operazioni non stanno avvenendo contemporaneamente. Qualsiasi operazione che ha a che fare con i numeri, le stringhe e le variabili può essere usata all'interno di un'istruzione di stampa. Hai già visto un esempio a riguardo:
<
Puoi anche inserire espressioni arbitrarie nella parte destra di un'istruzione di assegnazione:
<
Questa capacità può non sembrare particolarmente impressionante, ma vedrai presto altri esempi in cui la composizione permette di esprimere elaborazioni complesse in modo chiaro e conciso.
Riga 253:
Per questa ragione è una buona idea aggiungere delle note ai tuoi programmi per spiegare con un linguaggio naturale cosa sta facendo il programma nelle sue varie parti. Queste note sono chiamate '''commenti''', e sono marcati dal simbolo <code>#</code>:
<
# calcola la percentuale di ore trascorse
percentuale = (minuti*100)/60
</syntaxhighlight>
In questo caso il commento appare come una linea a sé stante. Puoi eventualmente inserire un commento alla fine di una riga:
<
Qualsiasi cosa scritta dopo il simbolo <code>#</code> e fino alla fine della riga viene trascurata nell'esecuzione del programma. Il commento serve al programmatore o ai futuri programmatori che dovranno usare questo codice. In questo ultimo esempio il commento ricorda al lettore che ci potrebbe essere un comportamento inatteso dovuto all'uso della divisione tra numeri interi.
|