• Passa al contenuto principale
  • Skip to secondary menu
  • Passa alla barra laterale primaria
  • Passa al piè di pagina
openoikos

openoikos

Software e servizi CAD, GIS e Web Marketing

nanocaditalia
  • Home
  • Blog
    • CAD
    • GIS
    • Grafica
    • Web
    • Linux
    • Android
    • Programmazione
    • stampa 3D
    • Curation
  • Chi sono
  • Di che si parla
  • Forum
  • Contattami
Ti trovi qui: Home / Blog / Nelle spire del Python (lezione 3): giocare con i numeri

Nelle spire del Python (lezione 3): giocare con i numeri

Lascia un commento

logo pythonBene eccoci al terzo appuntamento con Python.
Dunque, abbiamo visto come stampare a video, cosa siano variabili costanti, come ricevere un input dall’utente, come scrivere delle funzioni e come passare loro dei parametri.
Sebbene ci sia ancora molto lavoro da fare, già qualcosa siamo in grado di farlo.
Ora vediamo come giocare con i numeri.

>>> 10 + 20
30
>>> 10 – 5
5
>>> 10 * 2
20
>>> 10 / 2
5
>>> 11 / 2
5

python numeri

Oops, sembra che qualcosa non abbia funzionato. 11 diviso 2 dovrebbe dare 5.5.
Per farlo dobbiamo dire all’interprete che almeno una delle due cifre è decimale. Proviamo così:
>>> 11.0 / 2
5.5

Possiamo anche farlo in maniera diversa:
>>> float( 11 ) / 2
5.5

Il metodo float (che è integrato nel sistema) è un casting, ovvero facciamo capire al sistema che il valore o la variabile vanno considerati come di un tipo diverso, nel nostro caso come cifra decimale invece che intera.

Per dire possiamo anche fare una cosa del tipo:
>>> float( “11” ) / 2
5.5

Eppure “11” è una stringa, se non ci credete potete scrivere
>>> type(“11”)
<type ‘str’>

Ma se è una stringa come può essere divisa per 2 e tornare per di più un valore decimale? E se scrivessimo
>>> int( “11” ) / 2
5

numeri python

Questa operazione (casting) può essere fatta anche all’opposto, da numero a stringa, ecco un esempio:

>>> type(“11”)
<type ‘str’>
>>> type( 11 )
<type ‘int’>
>>> type( str( 11 ) )
<type ‘str’>

numeri python

Python dove può esegue in automatico il casting, l’esempio della divisione (ma vale anche per le altre operazioni matematiche) ne è la prova: 11.0 è un numero decimale, 2 sarebbe un intero ma viene convertito (casting) in decimale (float) per poter eseguire correttamente l’operazione.
Ovviamente possiamo scrivere anche:
>>> 11 / 2.0
5.5

Se comunque volessimo conoscere il resto della divisione? Semplice
>>> 11 % 2
1
>>> 23 % 3
2
Attenzione, è il residuo, non la parte decimale.

Altri operatori che possiamo usare sono la divisione intera
>>> 13.0 // 2
6.0

Notate che se avessimo scritto invece
>>> 13.0 / 2
6.5

e l’elevamento a potenza
>>> 2 ** 2
4
>>> 2 ** 3
8
>>> 2 ** 4
16
>>> 2 ** 5
32

numeri python

Gli operatori hanno delle precedenze, per l’esattezza abbiamo
**
/,*, %
+,-

Questo comporta che se scriviamo
>>> 15 % 6 * 2 + 3
9

In pratica
>>> 15 % 6
3
>>> 3 * 2
6
>>> 6 + 3
9

Se volessimo invece ottenere che il risultato di 15 % 6 sia moltiplicato per 2 + 3?
>>> 15 % 6 * (2 + 3)
15

Perché diventa
>>> 15 % 6
3
>>> 3 + 2
5
>>> 3 * 5
15

Le parentesi sono importantissime quindi per essere certi dell’ordine di elaborazione dei comandi.

Esistono anche altri operatori, i cosidetti operatori di shift (>> e <<) e di confronto bitwise (&, ^ e |) ma che per ora esulano da quanto ci interessa sapere.

Una considerazione: Python e’ un linguaggio typed, ovvero una variabile una volta assegnata prende il tipo con cui viene assegnata. Per capirci:

>>> a = 1
>>> type(a)
<type ‘int’>
>>> b = 12.2
>>> type(b)
<type ‘float’>
>>> c = True
>>> type(c)
<type ‘bool’>
>>> d = ‘ciao’
>>> type(d)
<type ‘str’>

numeri python

Però se assegniamo alla variabile un differente tipo cosa accade?
La variabile (o meglio l’etichetta che gli abbiamo assegnato) viene collegata ad una nuova locazione di memoria (e quindi ad un differente valore).
Non ci credete? Vediamo:
>>> a = 1
>>> id(a)
34259288
>>> a = ‘ciao’
>>> id(a)
140531248445120

numeri python

Ovviamente i valori che otterrete saranno differenti da quelli che ho mostrato, sono gli indirizzi di memoria dove sono memorizzati i valori.
Ma quello che conta è che al cambiare dell’assegnazione non abbiamo una sovrascrittura ma una riassegnazione del valore.
Altri linguaggi che prevedono che una variabile sia inizializzata ad un certo tipo (intero, virgola mobile, stringa, booleano etc.) poi non permettono di cambiare il tipo.
Ovviamente questo ha i suoi pro e i suoi contro.

Altra cosa importante sul casting è che se scriviamo
>>> a = 1
>>> b = ‘ciao’
>>> a+b
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’

Questo perché abbiamo cercato di sommare/accodare due tipi tra loro non compatibili. Se scriviamo:
>>> a = 1
>>> b = 2.4
>>> a+b
3.4

numeri python

Qui l’intero viene convertito automaticamente in float e poi i due numeri sono sommati tra loro.
Possiamo anche fare:
>>> a = ‘Ciao ‘
>>> b = ‘Guido’
>>> a+b
‘Ciao Guido’

Questo perché l’operatore + viene overloaded, ovvero cambia comportamento (sommare/accodare) a seconda dei casi. Volendo possiamo fare:
>>> a = 1
>>> b = ‘ ciao’
>>> str(a)+b
‘1 ciao’

Qui abbiamo eseguito un casting del numero in stringa e quindi l’operatore ha potuto valutare quale comportamento doveva avere (accodare).

Ultime cose: quando abbiamo provato a sommare/accodare un intero ed una stringa abbiamo ricevuto un messaggio di errore.
Il Traceback è un track dello stack degli errori che ci indica l’errore e dove si trova. Come vedremo prossimamnente se l’errore è in un file ci indicherà anche la riga esatta. Meglio di così.

Ultima cosa prima di chiudere, proviamo:
>>> 3 * ‘Ciao ‘
‘Ciao Ciao Ciao ‘

Se si moltiplica una stringa per un valore si ottiene la stringa ripetuta più volte. Ecco un esempio di quando torna particolarmente comodo:
>>> a = ‘Ciao \n’
>>> b = 20 * “-”
>>> print a + b
ciao

numeri python

Arrivederci alla prossima settimana.

Altre letture utili:
Programmare con Python. Guida completa
Python
Programmare in Python

Articoli Correlati

  • Nelle spire del Python (lezione 5): eseguire operazioni ripetitive
  • Nelle spire del Python (lezione 4): come prendere decisioni
  • Nelle spire del Python (lezione 2): variabili, funzioni e parametri

Archiviato in:Blog, Programmazione

Avatar

Info Carlos Catucci

Informatico (per l'esattezza sviluppo e analisi), giocatore di ruolo, animale sociale, anarchico, giullare. Insomma al peggio non c'e' mai fine.
Fedele al mondo dell'open source, da qualche anno prediligo il Python come linguaggio di programmazione, in abbinamento a Javascript per le applicazioni web.
Tra parentesi ho creato la community Pythonisti Anonimi.

Interazioni del lettore

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Barra laterale primaria

Scarica NANOCAD gratis

Segui sui social

  • Facebook
  • LinkedIn
  • Twitter
  • Youtube

Segui Canale Telegram

Da leggere

software free mappe mentali

Mappe mentali per professionisti: 3 software free per disegnarle

Krita alternativa Photoshop

Krita, l’alternativa facile a Photoshop

Tags

android apps cad gratis cadgratis draftsight ebook forum gimp gis igm librecad linux nanocad open data professionista online qcad qgis sitetopo ubuntu video web

Footer

  • Chi sono
  • Privacy Policy
  • Cookie Policy

Articoli Recenti

  • Come disegnare in 3D con nanoCAD
  • Mappe mentali per professionisti: 3 software free per disegnarle
  • Krita, l’alternativa facile a Photoshop
  • Come ottimizzare le prestazioni video in nanoCAD
  • I migliori 3 software gratuiti per computi metrici

cerca

OPENOIKOS di Fabrizio Pieri - P.IVA 02181310562 - email: openoikos@gmail.com