day_1.md 4.12 KB
Newer Older
Tancredi Orlando's avatar
Tancredi Orlando committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Corsi Python 2017

----

Potete ottenere questa presentazione recandovi all'indirizzo:

[slides.poul.org/2017/python](https://slides.poul.org/2017/python)

---

# Perché Python?

- Ottimo per i principianti
- Facile da usare
- Estremamente diffuso
- Moduli per qualunque cosa

----

## C

```c
#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}
```

----

## Java

```java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Goodbye, World!");
    }
}
```

----

## Python

```python
print('Hello World!')
```

----

![import antigravity](https://imgs.xkcd.com/comics/python.png)

----

## Breve storia

- Nasce nel 1991 per mano di Guido van Rossum
- Prende il nome dai Monty Python
- È in continua evoluzione
- Convivono due versioni (2 e 3)
edne's avatar
edne committed
63
- Noi useremo Python 3
Tancredi Orlando's avatar
Tancredi Orlando committed
64
65
66
67
68
69
70
71
72
73
74
75
- Fatelo anche voi

Notes:
Ricordatevi il nome di Guido
Aggiungere statistiche sullo sviluppo di python

----

## Interpretato vs. compilato

- Compilato: tradotto in linguaggio macchina
- Interpretato: eseguito da un altro programma
edne's avatar
edne committed
76
- Python è interpretato (circa)
Tancredi Orlando's avatar
Tancredi Orlando committed
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

Notes:
Parlare della VM Python

---

## Cosa serve

- Editor di testo (Atom, Notepad++)
- Interprete Python
  - Linux: generalmente preinstallato, altrimenti utilizzare il package manager
  - macOS: [Installer](https://www.python.org/ftp/python/3.6.1/python-3.6.1-macosx10.6.pkg)
  - Windows: [32bit](https://www.python.org/ftp/python/3.6.1/python-3.6.1.exe)
    o [64bit](https://www.python.org/ftp/python/3.6.1/python-3.6.1-amd64.exe)

----

## REPL

**R**ead, **E**val, **P**rint **L**oop

```bash
$ python3
Python 3.6.1 (default, Mar 27 2017, 00:27:06) 
[GCC 6.3.1 20170306] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello world!')
Hello world!
```

Per uscire: quit()

Notes:
Differenza tra interprete (il software che converte le istruzioni in bytecode e
poi esegue quest'ultimo) e REPL (il software che si interfaccia con l'utente)

----

## Espressioni

edne's avatar
edne committed
117
```
Tancredi Orlando's avatar
Tancredi Orlando committed
118
119
>>> 2 + 2
4
edne's avatar
edne committed
120

Tancredi Orlando's avatar
Tancredi Orlando committed
121
122
>>> 3 * 3
9
edne's avatar
edne committed
123
124

>>> 4 < 5
Tancredi Orlando's avatar
Tancredi Orlando committed
125
126
127
128
129
130
131
True
```

----

## Errori

edne's avatar
edne committed
132
```
Tancredi Orlando's avatar
Tancredi Orlando committed
133
134
135
136
137
138
>>> 3 / 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
```

edne's avatar
edne committed
139
140
"Le scritte vanno lette" o "Il segreto degli hacker"

Tancredi Orlando's avatar
Tancredi Orlando committed
141
142
143
144
145
146
147
148
([Lettura consigliata](http://www.girodivite.it/Diario-di-un-aspirante-hacker.html))

----

## Variabili

```python
>>> x = 6
edne's avatar
edne committed
149

Tancredi Orlando's avatar
Tancredi Orlando committed
150
151
>>> x
6
edne's avatar
edne committed
152

Tancredi Orlando's avatar
Tancredi Orlando committed
153
154
155
156
>>> 2 * x
12

>>> y = x + 4
edne's avatar
edne committed
157

Tancredi Orlando's avatar
Tancredi Orlando committed
158
159
160
161
162
163
164
165
>>> y
10
```

----

### Cosa ho di fronte?

edne's avatar
edne committed
166
```
Tancredi Orlando's avatar
Tancredi Orlando committed
167
168
169
170
171
172
173
174
175
>>> type(3)
<class 'int'>

>>> type(3.14)
<class 'float'>
```

----

edne's avatar
edne committed
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
### Interi (`int`)

- Cifre senza punto

----

### Decimali (`float`)

- Cifre con punto

```
>>> 3.14 + 1.234
4.3740000000000006

>>> 100 / 3
33.333333333333336
Tancredi Orlando's avatar
Tancredi Orlando committed
192

edne's avatar
edne committed
193
194
195
>>> 100 // 3
33
```
Tancredi Orlando's avatar
Tancredi Orlando committed
196
197
198

----

edne's avatar
edne committed
199
200
201
### Casting

- È l'azione di conversione del tipo
Tancredi Orlando's avatar
Tancredi Orlando committed
202

edne's avatar
edne committed
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
```
>>> int(4.20)
4

>>> x = float(13)

>>> x
13.0

>>> type(x)
float

>>> type(13)
int
```
Tancredi Orlando's avatar
Tancredi Orlando committed
218
219
220

----

edne's avatar
edne committed
221
### Booleani (`bool`)
Tancredi Orlando's avatar
Tancredi Orlando committed
222

edne's avatar
edne committed
223
224
225
226
227
228
229
230
231
232
233
234
- Possono assumere due valori: `True` o `False`
- Supportano operazioni logiche (`and`, `or`, `not`)
- Sono il risultato delle operazioni di confronto

```
# esempi + corto circuito e quando ti esplode in faccia la vita
# cast a booleano?
```

----

### None
Tancredi Orlando's avatar
Tancredi Orlando committed
235
236
237

----

edne's avatar
edne committed
238
### Stringhe (`str`)
Tancredi Orlando's avatar
Tancredi Orlando committed
239

edne's avatar
edne committed
240
241
242
243
244
245
246
247
248
- Testo.
- Racchiuse tra singoli apici (`'`) o virgolette (`"`)
- Per stringhe su più righe racchiuse tra tripli apici (`'''`) o virgolette (`"""`)

```
>>> a = "Hello"
>>> b = "World"
>>> a + ' ' + b
'Hello World'
Tancredi Orlando's avatar
Tancredi Orlando committed
249
250
251
252
253
254
255
256
```

----

### Liste

Contengono una certa qualtità di elementi, anche di tipi diversi.

edne's avatar
edne committed
257
```python
Tancredi Orlando's avatar
Tancredi Orlando committed
258
259
260
261
262
263
264
265
266
lista = [1, "due", 3.0]
```

----

### Tuple

Esattamente come le liste, ma immutabili.

edne's avatar
edne committed
267
```python
Tancredi Orlando's avatar
Tancredi Orlando committed
268
269
270
271
272
273
274
275
276
277
tupla = ('a', 1, 2, 'bcd')
```

----

### Insiemi

- Come gli insiemi matematici,
- Non contengono elementi duplicati

edne's avatar
edne committed
278
```python
Tancredi Orlando's avatar
Tancredi Orlando committed
279
280
281
282
283
284
285
286
287
288
insieme = {"mele", "pere", 2, "arance"}
```

---

### Dizionari

- Associano una chiave ad un valore
- Le chiavi devono essere immutabili

edne's avatar
edne committed
289
```python
Tancredi Orlando's avatar
Tancredi Orlando committed
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
dizionario = {
    "nome":"Tancredi",
    "cognome":"Orlando"
    }
```

----

## Strutture di controllo

----

### if

----

### while

----

### for

---

Tancredi Orlando
`<`[`tancredi@coselosche.org`](mailto:tancredi@coselosche.org)`>`

edne's avatar
edne committed
317
Niccolò Izzo `<`[`izzo.niccolo@gmail.com`](mailto:izzo.niccolo@gmail.com)`>`