Commit d3aa58aa authored by Tancredi Orlando's avatar Tancredi Orlando
Browse files

Fixes.

parent dd13e020
......@@ -101,7 +101,7 @@ Python e non eseguito direttamente dal processore.
```
$ python3
Python 3.6.1 (default, Mar 27 2017, 00:27:06)
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 info...
>>> print('Hello, world!')
......@@ -632,6 +632,7 @@ if 3 > 2:
```
## Blocchi
- Sono corpi di codice allineati con una spaziatura multipla coerente
- Per bontà agli dèi usate quattro spazi ed evitate le tabulazioni come la peste
......@@ -877,7 +878,6 @@ variabile globale
----
## None
- Equivale al `NULL` di C
......@@ -935,7 +935,7 @@ esatto!
`from <modulo> import <oggetto>`
- Aiuta la leggibilità del codice
- Si omette il modulo di provenienza
- modulo.py
```
default_lim = 3
......@@ -972,116 +972,72 @@ importati alcuni elementi con la sintassi `from ... import`.
----
## La variabile `__name__`
- Contiene il nome del modulo
- Modulo importato o eseguito direttamente?
È possibile eseguire del codice solo se il modulo è eseguito direttamente
e non è stato importato (o il contrario)
```python
if __name__ == '__main__':
print('Programma eseguito direttamente')
print('Programma eseguito direttamente')
else:
print('Questo modulo è stato importato')
print('Questo modulo è stato importato')
```
- La variabile `__name__` contiene il nome del modulo corrente
- Se un modulo è eseguito direttamente la variabile `__name__` assume valore
`__main__`
---
# Input e Output
----
## I/O
- A volte può essere utile interagire con l'utente
- Per esempio chiedere valori in ingresso e stampare risultati
- Useremo `input()` per ricevere dei valori e `print()` per stamparli.
```python
nome = input("Inserisci il tuo nome: ")
print("Il tuo nome è", nome)
```
- Purtroppo a volte è necessario interagire con l'utente
- È possibile ottenere un valore dall'utente
- È possibile accedere a un file presente sul disco
----
## Formattazione dell'Output
- Per formattare l'output spesso `print()` da sola non è sufficiente.
## Formattazione dell'output
- Possiamo usare i metodi della classe `str` e in particolare `str.format()`
```python
>>> s = 'This {food} is {adjective}.'.format(
... food='spam', adjective='horrible')
>>> print(s)
This spam is horrible
```
---
# Errori ed Eccezioni
----
## Errori di Sintassi
```python
>>> while return print('Hello?') # ??????
SyntaxError: invalid syntax
>>> s = 'Corsi {} {}'
>>> s.format('Python', '2017')
'Corsi Python 2017'
>>> s.format('Linux', 'base')
'Corsi Linux base'
```
- Sono i più comuni da commettere per chi sta imparando Python :-)
- Accadono quando scriviamo una istruzione in maniera *sintatticamente* errata
- L'interprete Python non riesce a capirne il significato e quindi non può eseguirla
----
## Eccezioni
- Rappresentano il verificarsi di situazioni *eccezionali*
- Cosa succede se stiamo tentando di leggere un file che non esiste? O se
cerchiamo di dividere per zero?
```
>>> s = 'Corsi {argomento} {tipo}'
>>> s.format(tipo='avanzati', argomento='antani')
'Corsi antani avanzati'
```
----
## Gestire le Eccezioni
## Input dall'utente
- Possiamo (e dovremmo) gestire le eccezioni racchiudendo le nostre istruzioni in un blocco `try/except`
```
>>> a = input()
asd
>>> a
'asd'
```
```python
try:
x = int(input('Inserisci un intero: '))
except ValueError:
print('Oops! Non era un intero.')
```
>>> nome = input("Inserisci il tuo nome: ")
Gattuso
>>> 'Il tuo nome è {}.'.format(nome)
'Il tuo nonme è Gattuso.'
```
----
## Sollevare Eccezioni
- In alcuni casi può essere utile sollevare delle eccezioni
- Per esempio quando una funzione non è in grado di gestire alcuni input
- Dovranno essere gestite (catturate) dal chiamante della funzione,
altrimenti l'utente vedrà un messaggio di errore
```python
def mandaEmail(email, testo):
if not '@' in email:
raise ValueError("email non valida")
# [..]
```
## Accesso ai file
---
# The End
----
# Thank you!
Queste slides sono sotto licenza Creative Commons<br>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment