PYTHON per le DISCIPLINE SCIENTIFICHE
PROGRAMMARE TABLET E SMARTPHONE CON Py3 SU O.S. ANDROID,
Guida-PYTHON
PROGRAMMARE IN PYTHON, SU TABLET O SMARTPHONE su O.S. ANDROID.
- APPLICAZIONE NECESSARIA PER PROGRAMMARE su Tablet o Smartphone, in ambiente ANDROID
- DISPONIBILE SUL PLAY_STORE
Ambiente di sviluppo che appare per Py3 dopo averlo avviato.
Dopo aver digitato il codice di qualsiasi script per eseguirlo fare click su cerchio giallo. t
IL LINGUAGGIO PYTHON E LE SUE CARATTERISTICHE
LE PAROLE RISERVATE(keyword) DEL LINGUAGGIO
and del for is raise
assert elif from lambda return
break else global not try
class except if or while
continue exec import pass yield
def finally in print
N.B. Le parole riservate possono essere usate solo in funzione della loro valenza, e
nel loro ambito di pertinenza, ma non per definire variabili, costanti o altro ancora;
in questo caso verranno generati segnali di errore.
Sono degli identificatori riservati che comunicano al compilatore la dichiarazione
e/o istruzione che intende realizzare chi sta sviluppando il programma sorgente.
------------------------------------------------------------------------ -------------------------------------------------
Vademecum:
1) # sono indicate in questo modo tutte le righe di commento che non vengono eseguite dal compilatore ma solo visualizzate.
2) num =int(input(("dammi primo numero\n")) # le stringhe di testo vanno sempre fra le doppie virgolette e sono di colore rosso
3) print("ciao") # Questo è il codice e il colore grafico usato per la parola riservata print che consente di visualizzare quanto contenuto fra le doppie virgolette.
Per le parole riservate(elencate in alto) e per tutte le altre istruzioni (float(input("dammi la base"), sum, append, if, else, try, not, pass, return ...)viene usato lo stesso colore(azzurro); in sostanza, soltanto l'istruzione print ha un colore diverso.
5) questo simbolo significa invio da tastiera e conseguente elaborazione del codice.
6) gli Script realizzati devono essere salvati, con un nome coerente con l'applicazione, in una sotto_cartella predefinita, di nome Scripts, contenuta all'interno della cartella principale di Python; rimane certa la possibilità di salvare il file in qualsiasi directory, desktop compresa.
LE VARIABILI IN PYTHON La Variabile in Python, come in tutti i linguaggi, è un'area di memoria riservata per contenere
un valore numerico, o alfanumerico, che può essere modificato nel corso dell'esecuzione del procedimento risolutivo.
Possiamo definire una variabile in qualsiasi momento. Le variabili sono caratterizzate da tre elementi: il nome, il valore e il tipo.
E' opportuno scegliere i nomi delle variabili legati in modo funzionale all'applicazione che si sta sviluppando;
questo accorgimento aiuta a fissare meglio i concetti e a farci ricordare di cosa ci stiamo occupando.
nomi corretti di variabili
nome valore tipo
velocity 10 int
person = "john" string
stringa = "questa una stringa" string
Volume_Cilindro = 20.5 *10^1 float
TempAmbiente = -5.8 float
massimo = 10 int
minimo = -6 int
area = 0.5 float
pressione = 100.0 float
accelerazione = 4E6 float
Temperatura = 5.6 float
---------------------------------------------------------------------------------------
nomi errati di variabili
temp% = 50
pressione? = 2
8caso = 2
print = "ciao"
class = 4
N.B. Le variabili sono case sensitive e pertanto:
auto = 5 e Auto = 5 (sono due variabili distinte)
----------------------------------------------------------------
COSTANTI IN PYTHON
Peculiarità delle costanti in Python
- Vanno dichiarate, attribuendo loro un nome, prima di essere utilizzate.
- E' convenzione, comune ad altri linguaggi, usare dei nomi con solo lettere maiuscole in modo da evidenziare che si tratta proprio di una costante e, quindi, non modificabile.
- Usare nomi pertinenti con l'applicazione per rendere più chiaro cosa si sta facendo.
nome valore tipo
MASSIMO = 10 int
MINIMO = 20.5 float
SCONTO = 20 int
PERCENTUALE = 20 int
P_GRECO = 3.14 float
-----------------------------------------------------------------------------------
LE OPERAZIONI MATEMATICHE ELEMENTARI
In Matematica Osservazioni Con Python
a = 2*x+4*y/4 a= (2*x+4*y)/4 Sono necessarie le ( )
b = x*y/3 b = x*y/2 ( ) non necessarie: operatori hanno la stessa importanza
c = (1+temperatura) c = (1+ temperatura/100)**2 ( ) sono necessarie
√x^2+y^2 math.sqrt(x**2+y**2) sqrt è contenuto nel modulo matematico
pgreco math.pi il pgreco è contenuto nel modulo matematico
-------------------------------------------------------------------------------
Floor Division con Python e Resto
Es.
15 / 4 da, come risultato, 3.75 in matematica.
Se usiamo operatore // di Floor Division su interi positivi, tale operazione calcola il quoziente ma esclude il resto e quindi con il codice:
>>> print(15 // 4)
3 # verrà scartata la parte frazionaria 0.75
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Per ottenere il resto allora il codice diventa:
>>> print(15%4)
3 # verrà fornito il resto della divisione che è 3
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>>> print(15//2)
7 # verrà scartata la parte frazionaria 0.5
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>>> print(15%2)
1 # verrà fornito il resto della divisione
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Abbiamo il numero n = 1346
>>>print( n % 10) # Per qualsiasi n positivo, n % 10 restituisce ultimo numero di n e quindi 6.
6
>>>print(n % 100) # Restituisce solo le ultime due cifre e quindi 46
46
>>> print(n %1000) # Restituisce solo le ultime due cifre e quindi 346
346
>>>print( n //10) # Restituisce il numero senza ultima cifra 134.
134
>>>print( n //100) # Restituisce il numero senza ultime due cifre 13 .
13
>>> print(n //1000) # Restituisce il numero senza ultime tre cifre 1 .
1
print(n % 2) # Restituisce 0 se n è pari, restituisce 1 se n è dispari
10.0 / 4 = 2.5 # Divisione normale.
10.0 // 4 = 2 # Floor division (lascia solo la parte intera)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FORMATO DI STRINGA
Formato di stringa Uscita Osservazioni
areaT= 58 # dichiariamo delle variabili e poi le visualizziamo usando i vari formati di stringa
totale =2
peso=5.23467
saluto ="ciao"
# visualizziamo le variabili dichiarate
print("%10.2f" % areaT)
print("%d" % areaT) 5 8 Usa d per stampare interi
print("%5d" % areaT) .....5 8 Lascia 5 spazi vuoti e poi stampa il valore
print("%05d" % areaT) 0 0 0 5 8 Aggiunge tre 0 prima del valore stampato
print("Totale:%5d" % totale) Totale : 2 4 Stampa il risultato a dx usa cinque spazi
print("%f" % peso) 5 . 2 3 4 6 7 Usa f per i valori di tipo float- Non tronca
print("%.2f" % peso) 5 . 2 3 Tronca dopo la seconda decimale
print("%s" % saluto) c i a o Usa s per visualizzare una stringa
print("%d %.2f") 4 5 2 . 3 5 Stampare più valori sulla stessa riga
print("%8s" % saluto) c i a o Impone a 8 la larghezza della stringa e scrive c i a o
print("%-8s" % saluto) c i a o Visualizza c i a o sulla sinistra
print("%d%%" % totale) 2 % Aggiunge il simbolo di % al numero
N.B
Quando si comunica un valore numerico, proveniente da un calcolo qualsiasi, può accadere che lo stesso venga visualizzato con molti numeri dopo la virgola.
Per limitare tali numeri a due il codice da scrivere è il seg:
print ("%2f" areaT)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Per stampare lo stesso valore, spostato a destra di 10 posizioni, il codice è:
areaT= 24
print ("%10.2f" % areaT) # restituisce il valore di areaT spostato a dx di 10 posizioni/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Per stampare più cose sulla stessa riga il codice è il seg:
areaT=24
perimetro=30
print ("Area: %d Perimetro: %10.2f" % (areaT, perimetro)) # restituisce
Area:24 Perimetro:30
----------------------------------------------------------------------------------------------
CONVERSIONE DI TIPO
Python contiene un certo numero di funzioni intrinseche che consentono la conversione \n dei numeri e/o delle stringhe da un tipo all'altro. \nViene generato un segnale errore quando non è possibile.
Esempi
>>> y=int(6.435) # da 6 come intero
>>> print(y)
>>> x=float("12.566") # da 12.566 di tipo float
>>> print(x)
>>> z=str(36) # il 36 diventa stringa
>>> print(z)
>>> print(z+"volte") # da 36volte perchè concatena due stringhe
////////////////////////////////////////////////////////////////////////////////////////////
---------------------------------------------------------
Sito di RiferimentoModulo_math
https://stackoverflow.com/questions/18725917/python-drawing-a-circle-with-x-radius-using-forward
Per il calcolo area del cerchio
>>>from math import pi
>>>r= float(input ("Input the radius of the circle : "))
>>>print( "area of the circle with radius " + str(r) + " is: " + str(pi * r**2))
N.B. Tutte le funzioni trigonometriche accettano solo argomenti in radianti e non in gradi - per convertire da gradi in radianti occorre dividere per 360 e moltiplicare per 2Ï€.
Es: per calcolare il seno di 45 gradi devo trasformare prima angolo in radianti e poi usare la funzione seno su di esso. Vale, infatti, la proporzione: 360:2*pi = gradi:x da cui x= (gradi*2*pi)/360
>>>gradi=45
>>>angolo=(gradi*2*math.pi)/360 # trasforma i gradi in radianti
>>>print(math.sin(angolo) # restituisce il seno dell'angolo
>>>print(math.cos(angolo) # restituisce il coseno dell'angolo
>>>print(math.acos(angolo) # restituisce arcocoseno dell'angolo
>>>print(math.asin(angolo) # restituisce arcoseno dell'angolo
>>>print(math.tan(angolo) # restituisce a tangente dell'angolo
>>>print(math.atan(angolo) # restituisce arcotangente dell'angolo
>>> y =print(math.cos(angolo+ math.pi/4)) # prende pgreco(pi) lo divide per 4 e, al quoziente, somma il valore di angolo. Infine calcola il coseno di quanto ottenuto e lo attribuisce come valore alla variabile y.
log(x), log(x, 10) # logaritmo naturale di x e logaritmo in base 10 di x
>>> y =print(math.exp(math.log(10))) # viene calcolato, mediante log, il logaritmo naturale in base e di 10 e poi tale valore viene posto come esponente di e. Il risultato viene assegnato alla variabile y.
>>>decibel = math.log10(30) # attribuisce a decibel il logaritmo di 30 in base 10
>>> print(decibel) # visualizza il valore della variabile decibel.
ALTRE FUNZIONI DEL MODULO math nella SHELL di PYTHON
>>> import math
>>> print (math.abs(-5)) # restituisce il valore assoluto di -5 e quindi 5
5
>>> print(math.round(7.89)) # restituisce il valore intero più prossimo e quindi 8
8
>>>print( math.max(5,6,234,9,23)) # restituisce il più grande e quindi 234
234
>>> print(math.radians(90)) # converte in radianti e ci dà il valore 1.57079632679..
1.57079632679
>>> print(math.degrees(6.28)) # converte in gradi e ci da il valore 359.81749...
359.81749
>>>print (math.min(2,33,1234,6)) # restituisce il numero più piccolo 2
2
-------------------------------------------------------------------
INDENTAZIONE CON PYTHON
LE STRUTTURE DI CONTROLLO
L'indentazione caratterizza il codice e viene applicata per rendere migliore la leggibilità dello stesso. Viene usata nelle strutture di controllo che consentono di eseguire, in modo selettivo, una singola istruzione o un blocco di istruzioni dopo i due punti.
Istruzioni condizionali
if, elif, else
Si prendono più percorsi in relazione al verificarsi di condizioni.
ciclo for e ciclo while
Indentazione nelle istruzioni di ciclo controllate dalle istruzioni break e continue.
break serve a forzare una immediata uscita dal ciclo e l'esecuzione continua con la prima istruzione fuori dal ciclo.
Es.
i =1
while True:
print(i)
i +=1
if (i >10):
break
Esecuzione script
1
2
3
4
5
6
7
8
9
10 # il ciclo infinito si interrompe a 10
================================
Es.
i = 0
while i < 10:
i += 1
if (i == 3):
continue
print(i)
Esecuzione script
1
2
# non viene mandato in stampa il 3 ma il ciclo termina al 10 previsto
4
5
6
7
8
9
10
La differenza fra ciclo for e ciclo while consiste nel numero di ripetizioni:
- nel for, si prevede siano un numero ben definito.
- nel ciclo while il numero delle ripetizioni non si conosce e, a limite, può essere infinito. In entrambi, comunque, l' espressione test viene valutata all'inizio, prima di entrare nel corpo del ciclo. Solo se la variabile, o espressione test, risulta vera(true) viene eseguito il blocco che segue i due punti; se invece è false si prosegue alla prima istruzione successiva al while.
L'indentazione viene usata anche quando si definisce una classe con le segg. istruzioni:
class MyClass: # si crea una classe di nome MyClass
x = 5 # si dichiara la variabile e si attribuisce un valore
p1 = MyClass() # oggetto p1 appartenente a MyClass
print(p1.x) # si stampa il valore dell'oggetto p1 appartenente a MyClass
Come si applica indentazione al codice: occorre avanzare di tre spazi vuoti, dopo i due punti, e dopo aver cliccato su Invio; scrivere poi il resto del codice. Vedere i due esempi
Le istruzioni if, elif, else e l'indentazione del codice
Es. 1 Controlla il valore di una grandezza fisica (temperatura) e comunica delle informazioni specifiche al problema.
Formalizzazione in codice Python
--------------------------------------------------------------------------------------
temperatura = 40 # dichiara e inizializza la variabile temperatura
count = 0 # inizializza il contatore
if temperatura >= 50: # esegue il test e si chiede se la temperatura > = 50
print("hai superato il limite") # salta questa istruzione perchè la temperatura=40
elif temperatura > 0: # esegue istruzione perchè la temperatura è >0 e stampa(hai superato 0 gradi)
count = count+1 # incrementa il contatore
print("hai superato zero gradi ", count," volta") # conta e stampa quante volte si supera 0 gradi
else :
print("siamo sotto zero") # se nessuna delle situazioni precedenti si è verificata allora stampa(siamo sotto zero)
//////////////////////////////////////////////////////////////////////////////////////////////////////
Es. 2 Controlla se il codice di accesso è corretto
Formalizzazione in Python
-----------------------------------------------------
codice = int(input("digita un numero a 4 cifre\n")) # acquisisce il codice da tastiera
if codice == 1234: # esegue test sulla variabile codice e verifica se coincide con quello digitato
print("codice esatto") # stampa le tre righe sottostanti in caso di coincidenza
print("accesso consentito")
print("sei un membro del team")
else:
print("accesso negato") # stampa(accesso negato) in caso di codice non coincidente
/////////////////////////////////////////////////////////////////////////////////////////////////////
Es. 3 Gioco indovina una coppia di numeri
(Sono usate due parole riservate: and, or
Formalizzazione dello script in codice Python
------------------------------------------------------------------------------------------
x,y = 6,3 # sono dichiarate due variabili intere e contemporaneamente si attribuisce un valore
numero1 = float(input("dammi primo numero\n"))
numero2 = float(input("dammi secondo numero\n"))
if numero1 == x and numero2 == y:
print("hai vinto")
elif numero1 == x or numero2 == y:
print("hai vinto metà premio")
else:
print("hai perso")
//////////////////////////////////////////////////////////////////////////////////////////////////////
Es. 4 Sconto progressivo in funzione della spesa effettuata
Formalizzazione in codice Python
----------------------------------------------------------------
print("Sconto progressivo in funzione del numero dei pezzi acquistati")
pe=int(input("dimmi se i pezzi sono fino a 3(5% di sconto), a 5(10% di sconto),a 10(20% di sconto) o piu di dieci(30% di sconto)\n"))
if pe<=3:
n1=float(input("dammi numero prodotti\n"))
cp=float(input("costo del pezzo\n"))
sco=(cp*5)/100
print ((sco*n1),("sconto in euro"))
pagare=(cp-sco)*n1
print("devi pagare",pagare,"euro")
print(cp*n1,"euro che avresti dovuto pagare")
elif pe<=5:
n2=int(input("dammi il numero dei prodotti\n"))
cp=int(input("costo del pezzo\n"))
sco=(cp*10)/100
print (sco*n2),"sconto in euro"
pagare=(cp-sco)*n2
print("devi pagare",pagare,"euro")
print (cp*n2),"euro che avresti dovuto pagare"
elif pe<=10:
n3=int(input("dammi il numero dei prodotti\n"))
cp=int(input("dammi il costo del pezzo\n"))
sco=(cp*20)/100
print (sco*n3),"sconto in euro"
pagare=(cp-sco)*n3
print("devi pagare",pagare,"euro")
print((cp*n3),"euro che avresti dovuto pagare")
else:
n4=int(input("dammi il numero dei prodotti\n"))
cp=int(input("dammi il costo del pezzo\n"))
sco=(cp*30)/100
print (sco*n4),"sconto in euro"
pagare=(cp-sco)*n4
print ("devi pagare",pagare," euro")
Il ciclo while e indentazione del codice
Es.1
Squadre = ["Juve","Milan","Inter","Roma","FeroletoDellaChiesa"]
i=0 # inizializza il contatore che serve a fermare il ciclo dopo aver ispezionato la lista
while i < 4 : # 0 =< i < 5 inizia a contare da zero, che corrisponde alla Juve, e termina al quinto elemento relativo a FeroletoDellaChiesa. In buona sostanza, mentre i è minore di 4, fai quanto compreso fra le graffe
print(Squadre[i]) # stampa una squadra dietro l'altra
i=i+1 # incrementa il contatore
# lo script, messo in esecuzione dopo averlo salvato con estensione .py(es. squadre.py), stampa tutte le squadre contenute nella lista.
////////////////////////////////////////////////////////////////////////
Es.2
ciao
ciao
ciao
ciao
ciao
ciao
////////////////////////////////////////////////////////////////////////
Il Ciclo for annidato e indentazione del codice
Es.1 di ciclo for Mette nella lista res tutti gli elementi concatenati delle stringhe
Formalizzazione dello script in Python
-----------------------------------------------------------------
res=[] # crea una lista vuota create an empty list
for x in "pino": # la x ispeziona la stringa pino
for y in "gino" : # y ispeziona la stringa gino
res.append(x+y) # mette in res ogni elemento della stringa pino concatenato, con il +, a ogni elemento della stringa gino.
print(res) # stampa il contenuto di res.
['pg', 'pi', 'pn', 'po', 'ig', 'ii', 'in', 'io', 'ng', 'ni', 'nn', 'no', 'og', 'oi', 'on', 'oo']
////////////////////////////////////////////////////////////////////////
Es.2 di ciclo for Somma ogni elemento della lista con ogni elemento di b e comunica i risultati
Formalizzazione dello script in Python
------------------------------------------------------------------
a=[4,5]
b= [5,8]
for i in a:
for c in b:
x=i+c
print(x) # somma ogni elemento di a con ogni elemento di b e restituisce la sequenza..
----------
9
12
10
13 /////////////////////////////////////////////////////////////////////////////////////////////////////
Es. 3) di ciclo for Stampa fra un minimo e un massimo con intervallo di 2
Formalizzazione dello script in codice Python
-----------------------------------------------------------------
for x in range(9,20,2):
print(x) # stampa da 9 a 20 con intervallo di 2
------- ----
9 11 13 15 17 19
////////////////////////////////////////////////////////////////////////
Es. 4) di ciclo for Stampa i numeri da 0 a 9 in verticale
Formalizzazione in codice Python
----------------------------------------------------------------
for x in range(10):
print(x) # stampa i numeri da 0 a 9. La variabile x assume 10 valori a partire da zero.
---------
0
1
2
3
4
5
6
7
8
9
////////////////////////////////////////////////////////////////////////
Es. 5) di ciclo for Stampa i caratteri della stringa in verticale
Formalizzazione in codice Python
-----------------------------------------------------------------
a = "pattinaggio" # definisco la stringa
n = 0 # inizializzo il contatore
for x in a:
print(x,n) # stampa ogni singolo valore della stringa insieme ad ogni singolo valore del contatore n
n = n+1 # incrementa il contatore
---------
p 1
a 2
t 3
t 4
i 5
n 6
a 7
g 8
g 9
i 10
o 11
////////////////////////////////////////////////////////////////////////
Es. 6) di ciclo for
Tabellina del 4
Formalizzazione in codice Python
-----------------------------------------------------------------
a=4
for x in range(10):
print(a," per",x+1," =",a*(x+1))
4 x 1 fa 4
4 x 2 fa 8
4 x 3 fa 12
4 x 4 fa 16
4 x 5 fa 20
4 x 6 fa 24
4 x 7 fa 28
4 x 8 fa 32
4 x 9 fa 36
4 x 10 fa 40
////////////////////////////////////////////////////////////////////////
Es. 7) di ciclo while
Data una sequenza di numeri sommare quelli maggiori di un numero qualsiasi.
Formalizzazione dello script in codice Python
-----------------------------------------------------------------
print("dammi una sequenza di numeri e sommo quelli maggiori di 20")
k=3
so=0
while k!=0:
n=int(input("dammi un numero\n"))
if n >20:
so=so+n
print(so,"parziale somma numeri maggiori di 20")
else:
print("non sommabile")
print(so," numero da non ")
---------------------------------------------------------------
GLI OPERATORI CON PYTHON E LA LORO PRECEDENZA
[] Sequenza di elementi numerati a partire dallo zero detto ARRAY
** Elevazione a potenza
* / // % Moltiplicazione, divisione, resto della divisione, resto
+ - Addizione e sottrazione
< <= >= != minore, minore_uguale, maggiore_uguale, diverso
not boolean operatore negazione logica
or boolean operatore somma logica
and boolean operatore prodotto logico
Le Espressioni in Python
All'interno di una espressione gli operandi possono rappresentare: costanti(pgreco), variabili (h altezza di un triangolo), funzioni.
I COMMENTI AL CODICE CON PYTHON.
# Il mio primo programma con Python. Riga di commento che non viene eseguita. Si usa il simbolo cancelletto e solo all'inizio.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
LE LISTE CON PYTHON
Es.1 di ciclo_for su una LISTA
N.B. Un lista e' semplicemente una sequenza di numeri e/o caratteri alfanumerici, separati da virgole, lunga quanto si vuole e riconoscibile perchè gli stessi sono contenti fra due parentesi quadre.
Si suppone di avere una lista del tipo a=[1,6,4,8,23] e si vuole individuare il massimo e il minimo in in essa contenuti.
Si usa il ciclo for, per ispezionare la lista, alla ricerca di minimo e massimo di n numeri che il linguaggio riconosce come min e max. Ecco come appare l'esecuzione dello script in ambiente di sviluppo QEdit.
N.B.
Le liste vengono indicizzate attribuendo al primo elemento il valore 0 e poi a seguire.
Le liste possono contenere sia numeri che stringhe.
Esempi di gestione delle LISTE
Es.1
>>>a=["Torino","Milano","126","8","giuseppe@libero.it"] # crea lista a
>>>print(a[1]) # stampa la stringa Milano
>>>print(a[4]) # stampa ila stringa giuseppe@libero.it
>>>a.append("Genova") # inserisce Genova nella lista
>>>print(a) # appare la lista Torino, Milano, 126,8, giuseppe@libero.it, Genova
>>>print(a.count("dentista") # risponde con 0 perchè non trova dentista nella lista
0
>>>print(a.reverse() # rovescia la lista
["giuseppe@libero.it","8", "126","milano","torino"]
>>>print(len(a) # conta gli elementi della lista
4
>>>a.insert(3,"pino") # inserisce pino nella lista alla posizione 3
>>>print(a) # restituisce la lista con pino nella posizione 3
["giuseppe@libero.it","8", "126","pino","milano","torino"]
////////////////////////////////////////////////////////////////////////
>>>numeri = [2,4,55,6,123] # Lista piena con valori numerici
>>>for i in range(len(numeri)) : # ciclo per ispezionare i numeri dentro array
>>> numeri[i] = i*i # effettua prodotto di ogni elemento per se stesso
print(numeri) #stampa il risultato del prodotto
>>>numeri.append("100") # fuori dal ciclo appende il numero 100 alla lista di numeri
2,4,55,6,123,100
////////////////////////////////////////////////////////////////////////
Es. 2 a = ["gino","151","milano","56"] # crea una lista di 4 elementi
>>> print(a[1]) # stampa 151
151
////////////////////////////////////////////////////////////////////////
>>>print(a[3]) # stampa 56
56
////////////////////////////////////////////////////////////////////////
>>> print(a[2]) # stampa milano
milano
////////////////////////////////////////////////////////////////////////
>>> a.append("genova") # aggiunge genova alla lista
torino, 151, milano, 56, genova
////////////////////////////////////////////////////////////////////////
Es.3
>>>a = ["torino","genova","milano","padova","trieste"] # crea lista di 5 elementi
>>>a.sort()
>>>print(a) # in ordine alfabetico: genova, milano, padova, torino,trieste
///////////////////////////////////////////////////////////////////////
>>>del a[3] # cancella elemento che occupa la quarta posizione cioè padova
////////////////////////////////////////////////////////////////////////
print(a.index("torino")) # restituisce il numero ordine di torino e quindi 0
///////////////////////////////////////////////////////////////////////
Es.4
>>>a= [12,5,234,6,87,57,1567]
>>>a.sort()
>>>print(a) # mette in ordine crescente 5 6 12 57 87 234 1567
>>>a.del() # cancella tutto il contenuto array
>>>del a[3] # cancella quarto elemento
////////////////////////////////////////////////////////////////////////
Es.5
>>>a= [12,5,234,6,87,57,1567] # crea lista
>>>a.append(1000) # uso parola riservata append per appendere elemento alla lista
>>>print(a) # aggiunge il 1000 alla lista che diventa a= [12,5,234,6,87,57,1567,1000]
12,5,234,6,87,57,1567,1000
////////////////////////////////////////////////////////////////////////
>>>print(a.index("234"))
2 # restituisce 2 in quanto indice del posto che occupa nella lista.
////////////////////////////////////////////////////////////////////////
>>>del a[234]
12,5,6,87,57,1567 # elimina elemento 234 dalla lista
////////////////////////////////////////////////////////////////////////
Es. 6
>>>a = [1,2,3]
>>>b=sum(a) # uso la funzione sum per sommare tutti gli elementi della lista a.
>>>print((b) ," somma gli elementi lista") # da come risultato
6 somma degli elementi lista
////////////////////////////////////////////////////////////////////////
Es.7
k=4 # contatore che fissa numero elementi delle liste
a=[] # lista vuota
b=[] # lista vuota
while k>1: # ciclo infinito se k>1
num1=int(input("dammi un numero della prima lista\n"))
num2=int(input("dammi un numero della seconda lista\n"))
a.append(num1) # mette num1 in a
b.append(num2) # mette num2 in b
k=k + 1 # decrementa il contatore k
if (sum(a)==sum(b): # confronta le somme degli elementi delle liste
print(" liste uguali") # comunica uguaglianza liste
print (a," lista a")
print (b," lista b")
else:
print("liste sono diverse") # comunica disuguaglianza liste
a.sort()
print(a,"lista a in ordine crescente")
b.sort()
print(b,"lista b in ordine crescente")
/////////////////////////////////////////////////////////////////////
Es.8
a=[] # crea una lista vuota
Q=2 # variabile di stop
count=0 # inizializza il contatore
while Q != 0:
num=float(input ("dammi numero\n"))
a.append (num)
coun t= count+1
print(sum a,"io sono la somma degli elementi della lista")
print(sum (a/count,"media della lista")
print(a [0],"io sono il primo elemento della lista")
////////////////////////////////////////////////////////////////////////
Es.9
CREA UNA LISTA DI N ELEMENTI E NE STAMPA IL CONTENUTO
i=3 # contatore inizializzato a 3 ma può assumere un valore qualsiasi
a=[] # creo una lista vuota
while i > 0: # creo ciclo controllato dal contatore i
nome = input ("dammi un nome\n")
i=i-1 # decremento contatore
a.append (nome) # metto il nome acquisito nella lista a,
print(a) # stampo lista completa.
print(a [0]," sono il primo elemento") # stampa i singoli componenti la lista.
print(a [1],"sono il secondo elemento")
print(a [2],"sono il terzo elemento")
////////////////////////////////////////////////////////////////////////
Es.10
CREA UNA LISTA IN MODO SEMPLICE
Formalizzazione in codice Python
-------------------------------------------------------------------
docenti=[] # crea una lista vuota che chiamo docenti[]
a=input("dammi i dati di a\n") # acquisisco un docente che chiamo a
docenti.append(a) # mette a dentro la lista docenti.
b=input("dammi i dati di b\n") # acquisisco altro docente che chiamo b
docenti.append(b) # mette b dentro la lista docenti.
c=input("dammi i dati di c\n") # acquisisce altro docente che chiamo c
docenti.append(c) # mette c dentro la lista docenti.
print(docenti) # stampa la lista dove appariranno i nomi dei docenti con eventuali altre indicazioni.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
NUMPY & PYTHON
NUMPY come supporto a PYTHON per la GESTIONE degli ARRAY e, quindi, per attività di MACHINE LEARNING
NumPy è un modulo importabile in ambiente windows per Python e consente di operare, anche e soprattutto, con gli array che, a loro volta, trovano largo impiego nella Scienza dei Dati.
Viene usato anche per applicazioni nel dominio dell'algebra lineare e non solo.
Python presenta una certa lentezza nell'elaborazione degli array(liste); NumPy elabora gli stessi con una velocità anche parecchie decine di volte più elevata(ha un modo diverso per il loro archivio in memoria). Tutto questo incide molto sulla velocità di elaborazione ed esecuzione dei dati quando gli stessi sono costituiti da array molto grandi o da database di grosse dimensioni.
Installazione di NumPy
Se hai Python3.5 e PIP già installati su un sistema, l'installazione di NumPy è molto semplice.
Per installare NumPy si deve accedere al prompt dei comandi di windows e digitare le iscrizioni:
C: \ Users \User Name> pip install numpy
Esempio completo
import numpy as np
lista = numpy.array ([2,4,6,8,10,12]) # crea una lista, o array, con un numero teoricamente infinito di elementi e possono essere associati a qualsiasi evento rappresentabile con numeri o stringhe.
print(lista) # visualizza gli elementi dell'array
2 4 6 8 10 12
print(type(lista)) # indica la tipologia di oggetti che si stanno analizzando
Dimensioni negli array
La dimensione negli array da una indicazione di quanto sia grande e, in buona sostanza, da quanti elementi è costituito.
Quando un array è nidificato vuol dire che risulta costituito da almeno due elementi che a loro volta sono degli array.
Array 0-D Crea un array 0-D con valore 167
import numpy as np
persone = np.array[167]
print(persone, " le persone presenti")
Restituisce
167 le persone presenti
__________________________
E' possibile creare array con elementi di tipo stringa:
import numpy
frutta =numpy.array(['banana','ciliegia','pesca'])
print(frutta)
print(frutta[0])
Restituisce
banana ciliegia pesca
banana
__________________________
Array 1-D
Costituito da elementi tipo O-D ed è chiamato array unidimensionale o 1-D.
Questi sono gli array più comuni e possono essere costituiti da moltissimi elementi.
Esempio
Crea un array 1-D contenente i valori 2,4, 6,8,10,14:
import numpy as np
numeri pari = np.array ([2,4,6,8,10,12,14]) # array di numeri pari
print(nmeripari)
___________________________
Matrici 2-D
Costituito da elementi di tipo 1-D ed è chiamato array 2-D.
Esempio
Creare un array 2-D contenente due array:
import numpy as np
paridispari = np.array ([[2,4,6,8,10], [1,2,3,5,7,11]])
print(paridispari)
__________________________________
Array 3D
Costituito da elementi di tipo 2-D ed è chiamato array 3-D.
Es. Creare un array 3D con due array 2D, entrambi contenenti due array con i valori:
import numpy as np
arraytred = np.array ([[[6,5,3,13], [4,55,7,45]], [[86,33,8,9], [4,7, 9, 11]]])
print(arraytred)
Come accedere a un singolo elemento dell'array
Accedi al terzo elemento del secondo array del primo array:
import numpy as np
accedere = np.array ([[[1, 92, 3], [44, 51, 600]], [[7,88, 9], [105, 11,312]]])
print(accedere[0, 1, 2])
Come funziona:
print([0, 1, 2]) stampa il valore 600.
In quanto: Il primo numero rappresenta la prima dimensione, che contiene due matrici:
[[1, 92, 3], [44, 51, 600]] e: [[7, 88, 9], [105, 11,312]]
Poiché abbiamo selezionato 0, ci rimane il primo array:
[[1, 92, 3], [44, 51, 600]]
Il secondo numero rappresenta la seconda dimensione, che contiene anche due matrici:
[1, 92, 3] e [44, 51, 600]
Poichè abbiamo selezionato 1, ci rimane il secondo array:
[44, 55,60]
Il terzo numero rappresenta la terza dimensione, che contiene tre valori:
44 51 600
avendo selezionato 2, finiamo con il terzo valore:
Restituisce 600
____________________________
Se al posto dei numeri ci fossero delle stringhe:
import numpy as np
accedere = np.array ([[['pino', 'gino', 'rino'], ['mario', 'giorgio', 'andrea']], [['carlo', 'antonio', 'rita' ], ['marco', 'michele', 'giacomo']]])
print(accedere[0, 1, 2])
Restituisce andrea
_________________
Come TAGLIARE uno o più elementi dell'array
Dal secondo elemento, tagliare gli elementi dall'indice 1 all'indice 4 (non incluso):
import numpy as np
taglia = np.array ([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(taglia[1, 1: 4])
Restituisce [1, 2, 3, 4, 5] [6, 10]
/////////////////////////////////////////////////////////////////////////////////////////////////////
STATISTICA(MEDIANA, DEVIAZIONE STANDARD, VARIANZA)
STATISTICA VIDEO
MACHINE_LEARNING VIDEO
Coloro che si occupano di MachineLearning non possono fare a meno di usare delle funzioni statistiche particolari: mediana, media, moda, deviazione standard, percentile, varianza. Tutte sono implementate dal modulo numpy e facilmente utilizzabili, con poche righe di codice, senza dover fare riferimento alla formule specifiche.
Senza il supporto di numpy siamo costretti a scrivere prima lo script in codice Python per poter usare tutte le funzioni, statistiche e non, che ci servono.
Si può accedere direttamente da o.s. Android(tablet o smartphone) ad un sito che consente di editare, testare e poi eseguire del codice, anche in Python, usando tutti i moduli di cui abbiamo bisogno. I moduli mancanti vengono installati automaticamente.
Il sito di rif.to è il seguente: www.REPL.IT
Occorre la registrazione fornendo nickname e password; ne vale la pena!
L' interfaccia che appare è quella sottostante; dopo aver editato il codice, relativo al generico problema, si avvia la sua esecuzione cliccando sul pulsante verde.
Per evidenziare tali aspetti, realizziamo uno script in Python per il calcolo di Media, Mediano, Varianza, DeviazioneStandard e lo confrontiamo con il codice relativo al modulo numpy.
Es. Abbiamo un array relativo al peso degli studenti di una classe costituita da n=25 persone, ma possono essere anche molti di più, e vogliamo calcolare i parametri statistici: media, varianza, deviazione standard, valore massimo e minimo....
Varianza, DeviazioneStandard, Media, Mediano, Percentile.
# codice in ambiente Python 3.6.5
n = 25 // sono 25 gli studenti della classe
b = [] // crea array vuoto per memorizzare dati relativi al problema
peso = [60, 80,80,60,70,85,70,65,60,65,60,58,70,80,75,65,60,55,60,70,70,70,70,60,65]
for x in peso:
media = sum (peso) /n
va = (x-media) **2
b.append(va)
mp = (80*3+70*7+65*4+55*1+60*7+85*2+58*1)/25
print(sum(b))
print(media, " media elementi array")
print(min(peso), " valore minimo array" )
print(max(peso), " valore massimo array" )
print(sum(b)/n, " varianza array")
print((sum(b)/n)**0.5, " deviazione Standard media ponderata su array da 25 elementi")
print(mp, " media ponderata su array da 25 elementi")
____________________
# codice con modulo NumPy in ambiente www.REPL.IT
import numpy
from scipy import stats // modulo necessario per calcolare la moda
peso = [60, 80,80,60,70,85,70,65,60,65,60,58,70,80,75,65,60,55,60,70,70,70,70,60,65]
moda = stats.mode(peso) //metodo per calcolare la moda
media = numpy.mean(peso) // il valore medio
mediano = numpy.median(peso) // valore centrale 9
percentile = numpy.percentile(peso, 27)
DevStandard = numpy.std(peso) // distanza media di tutti i valori dalla media
varianza = numpy.var(peso)
print(media, " valore medio")
print (mediano, " valore mediano")
__________________________
Esecuzione in REPL.IT
// Appare evidente che con il modulo Numpy non scriviamo del codice in puro Python ma usiamo lo stesso modulo, insieme a istruzioni e parole tipiche del linguaggio( print, import, from, random..), per accedere a tutti i metodi che lo stesso mette a disposizione. È evidente che va prima importato insieme a tutti gli altri che riteniamo necessari per la nostra applicazione.
///////////////////////////////////////////////////////////
LA DISTRIBUZIONE DEI DATI
LA DISTRIBUZIONE UNIFORME
Nel mondo reale, fisico e non, può essere difficile e oneroso raccogliere grandi quantità di dati da elaborare per i motivi più disparati.
Se, ad esempio, stiamo raccogliendo dei dati relativi ad un sensore di temperatura che fornisce una tensione variabile fra 0Volt e 5V in modo del tutto aleatorio, cioè non correlato ad altre grandezze, e questo viene fatto ogni minuto per un intero anno, risulta evidente che il relativo array di dimensioni 365x24x60 = 525600 comincia ad essere molto grande. Si deve considerare, infine, che dovremmo aspettare un anno per avere l'array completo. L' utilità di ricorrere a questi metodi è proprio questa: bypassare il problema reale e simularlo con una generazione i dati di tipo random, quindi artificiale, allo scopo di poter effettuare, nell'immediato, degli studi di tipo previsionale.
CODICE PER GENERARE IN MODO RANDOM UN SET DI BIG DATA RELATIVO ALLO SPECIFICO PROBLEMA.
import numpy
import matplotlib.pyplot as plt // modulo per rappresentare graficamente i risultati
Temperatura = numpy.random.uniform (0.0, 5.0, 5256) // togliamo 2zeri per semplificare
plt.hist (Temperatura , 5). // usa metodo per creare istogramma e il numero 5 rappresenta quante sono le barre(la prima il numero di valori per 0 < Temperatura <1 e a seguire)
plt.show () // mostra istogramma
//////////////////////////////
LA REGRESSIONE LINEARE CON NUMPY E PYTHON
print(" La regressione lineare utilizza la relazione tra i punti dati per tracciare una linea retta attraverso tutti loro. Questa riga può essere utilizzata per prevedere i valori futuri. Come si procede? Python ha metodi per trovare una relazione tra i punti dati e per tracciare una linea di regressione lineare. Nell'esempio seguente, l'asse x rappresenta i voti e l'asse y rappresenta le ore di studio impiegate per sostenere ogni singolo esame. Il termine regressione viene utilizzato quando si tenta di trovare la relazione tra le variabili e questo non è sempre possibile; nel nostro caso lo è in quanto da una osservazione degli array si nota che vi è una certa correlazione fra le ore di studio e i voti ottenuti, più ore di studio hanno comportato un voto generalmente più alto. L'obiettivo finale può essere quello di alzare la media a 27, dato che è a 26.5, allo scopo di ottenere la borsa di studio. Dobbiamo trovare il numero di ore di studio ottimali per portare la media al valore prefissato")
import numpy
import matplotlib.pyplot as plt
from scipy import stats
voti = [26,28,30,25,22,28,30,27,26,24,29,25,25,29,30,20,27,26,28,25,24,30]
ores = [45,58,60,48,35,65,66,54,53,54,64,50,50,62,69,40,58,55,59,44,50,66]
media=numpy.mean(voti)
print("RISULTATI IN USCITA ")
print("media dei voti =" , media)
slope, intercept, r, p, std_err = stats.linregress (voti, ores)
def myfunc (voti):
return slope * voti + intercept
mymodel = list (map(myfunc, voti))
plt.scatter (voti, ores)
plt.plot(voti, mymodel)
plt.show()
# INTERPRETAZIONE DELLO SCRIPT
# vengono importati i moduli necessari: import matplotlib. pyplot as plt e from scipy import stats. Si creano poi i due array relativi a voti[] e ores[]
# si esegue un metodo che consente di ottenere due grandezze necessarie per poter operare con la regressione lineare:pendenza, intercetta, r, p, std_err = stats.linregress (voti, ores)
# Viene creata una funzione che utilizza i valori ottenuti per generare un nuovo valore il quale rappresenta dove verrà posizionato sull'asse y(ores) il corrispondente valore di x(voti) :
# def myfunc (voti):
# pendenza di ritorno * voti + intercept
# Esegui ciascun valore dell'array voti tramite la funzione. Ciò comporterà un nuovo array con nuovi valori per l'asse y(ores):
# mymodel = list (mappa (myfunc, voti))
# Disegna il grafico a dispersione originale:
# plt.scatter (voti, ores)
# Disegna la linea di regressione lineare:
# plt.plot (voti , mymodel)
# Visualizza i risultati
plt.show ()
////////////////////////////////////////////////////////////////
LE TUPLE CON PYTHON
I dati contenuti in una tupla non possono essere modificati e devono essere racchiusi fra delle parentesi tonde.
Es.1
#Per creare una tupla
PrimaTupla = ("Milano ", "Torino", "Genova")
print(PrimaTupla)
Si può accedere agli elementi di una tupla indicando, fra due parentesi quadre, il numero indice di tale elenco partendo dal valore 0
Es.2
Stampa il secondo elemento nella tupla:
print(PrimaTupla[1]
#Indicizzazione negativa
Se si usa indicizzazione negativa vuol dire che si parte da ultimo elemento della T.
Es.3
Per stampare ultimo elemento della tupla:
print(PrimaTupla[-1])
#Gamma di indici
Se siamo interessati a un intervallo di indici occorre impostare da quale elemento si parte e dove si vuole arrivare.
In questo caso ci viene fornita una nuova tupla contenente i soli elementi specificati.
Es.1
#Restituisce il terzo, il quarto e il quinto elemento:
PrimaTupla = ("Milano ", "Torino", "Genova", "Ancona"," Firenze","Palermo")
print(PrimaTupla[2: 5])
#Nota: la ricerca inizia dall'indice 2 (incluso Genova) e termina all'indice 5 (non incluso Palermo ).
#Gamma di indici negativi
Come prima, occorre specificare gli indici negativi se si intende partire dalla fine della tupla.
Es.2
#In questo esempio vengono restituiti gli elementi dall'indice -3(incluso) all'indice -1 (escluso)
print (PrimaTupla[-3:-1])
#Modifica i valori di tupla
Essendo la tupla immutabile, è unica possibilità che abbiamo è quella di convertirla in un elenco, sul quale si vanno a fare le modifiche, e poi la si riconverte in un nuova tupla.
Es.3
#Convertire la tupla in un elenco per poterla modificare:
PrimaTupla = ("Milano ", "Torino", "Genova", "Ancona"," Firenze ","Palermo")
PrimaTupla=list(x)
PrimaTupla[1]=Bologna
print(PrimaTupla)
Il ciclo for può essere usato per ispezionare la T. e stampare gli elementi.
Es.4
#Scorri gli articoli e stampa i valori:
PrimaTupla = ("Milano ", " Torino", "Genova", "Ancona"," Firenze"," Palermo" )
for x in PrimaTupla:
print(x)
# Controlla se "Bologna " è presente nella tupla
Es.5
if "Bologna " in PrimaTupla:
print("Sè la città di," Bologna ", è nella tupla delle città ")
Lunghezza tupla: quanti elementi contiene?.
Come in altri linguaggi si usa il metodo len().
Es.6
# Stampa il numero di elementi nella tupla:
PrimaTupla = ("Milano ", "Torino", "Genova, "Ancona","Firenze","Palermo")
print(len (PrimaTupla))
Aggiungi elementi
#Una volta creata una tupla, non è possibile aggiungere elementi ad essa. Le tuple sono immutabili.
Crea tupla con un solo elemento :
# Per creare una tupla con un solo oggetto, devi aggiungere una virgola dopo l'elemento, altrimenti Python non lo riconoscerà come tupla.
Es.7
PrimaTupla = ("Bologna")
Rimuovi elementi
Nota: non è possibile rimuovere elementi in una tupla ma solo eliminare tutta la T
Es.8
#La parola chiave del può eliminare completamente la T. usando la parola riservata delete:
delete PrimaTupla
Congiunzione di due tuple usando il segno +
Es.9
#Unisciti a due tuple:
tuple1 = ("maria", "giovanni", "andrea")
tuple2 = (1, 2, 3)
tuple3 = tuple1 + tuple2
print(tuple3)
Il costruttore di tuple ()
# Risulta anche possibile usare il costruttore tuple () per creare una tupla.
Es.10
Utilizzo del metodo tuple () per creare una tupla:
PrimaTupla = tuple (("" bologna ","torino "," milano ")) # si nota la presenza delle doppie parentesi tonde
-----------------------------------------------------------------------------------------------
ALCUNI ESEMPI DI CICLO FOR IN ZIP MOLTO EFFICACI.
Es.1
DOPPIO ARRAY GESTITO IN MODO ELEGANTE DA UN CICLO FOR IN ZIP CHE INCASTRA I NUMERI PARI E DISPARI E LI STAMPA TUTTI DA 1 A 10
pari = [1,3,5,7,9]
dispari = [2,4,6,8,10]
for parinum, disparinum in zip(pari, dispari):
print(parinum)
print(disparinum)
Esecuzione dello script
1 2 3 4 5 6 7 8 9 10
Es.2
SOMMA GLI ELEMENTI CON LO STESSO INDICE MA MANTIENE INALTERATA LA DIMENSIONE ARRAY.
x = [1, 2, 3, 4]
y = [4, 5, 6, 7]
z = []
for i, j in zip(x, y):
z.append(i + j)
print(z)
#Esecuzione dello script
5 7 9 11 # genera un array zippato:somma gli elementi con lo stesso indice e lascia invariato il loro numero.
//////////////////////////////////////////////////
Una funzione lambda è una piccola funzione insita nel linguaggio ed è anche una reserved word dello stesso.
Accetta qualsiasi numero di argomenti, ma può avere solo una ben definita. espressione.
Es.1
Una funzione lambda che aggiunge 8 al numero passato come argomento e stampa il risultato:
x = lambda a: a + 8
print(x (5)) # risultato 13
Le funzioni Lambda possono accettare svariati argomenti:
Es.2
Una funzione lambda che moltiplica l'argomento a con l'argomento b e stampa il risultato:
y = lambda a, b: a * b
print(y (3,10)) # risultato 30
Es.3
Una funzione lambda che somma l'argomento a, b e c e stampa il risultato:
y = lambda a, b, c: a + b + c
print(x (20,30,10)) # risultato 60
Es.4
def auto(n):
return lambda a : a * n
doppio=auto(2)
triplo=auto(3)
print(doppio(22)) # risultato 44
print(triplo(22)) # risultato 66
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DATI DI INPUT
ACQUISIRE I DATI DA TASTIERA con:
h=int(input("dammi altezza triangolo\n")) # per le variabili intere
b=float(input("dammi base del triangolo\n")) # per le variabili in virgola mobile
nome=input("dimmi il tuo nome\n"); # per le variabili di tipo string
E' opportuno rendere il codice flessibile e quindi adattabile a tutti i problemi dello stesso tipo, indipendentemente dal valore intrinseco delle variabili; se le acquisiamo subito, è possibile utilizzarle all'interno del problema specifico, qualunque sia il loro valore. Python lo fa in modo eccellente ed immediato con il seguente codice:
b=float(input("dammi la base del triangolo\n"))
premendo invio appare un messaggio di dialogo, che si chiama prompt e nel quale appare la stringa contenuta fra la virgolette dammi la base triangolo; dopo aver digitato un numero qualsiasi(es, 5), tale valore viene attribuito alla variabile b e, da quel momento in poi, può essere utilizzato all'interno del codice. Tale valore può cambiare nel corso dell'esecuzione dello script.
In buona sostanza, in Python l'apparizione di un prompt e la lettura del dato esterno, inserito da tastiera, sono combinate in una sola operazione; la stessa istruzione mi fa apparire prima il messaggio fra le virgolette e, subito dopo aver digitato qualcosa, questo valore viene posto all'interno della variabile.
I casi possibili sono in realtà sono tre:
1) nel caso in cui si voglia acquisire un numero in virgola mobile il codice diventa
b=float(input("dammi la base triangolo\n")) # acquisisce la base da tastiera
temperatura=float(input("dammi la temperatura ambiente da controllare\n")) # acquisisce la temperatura con valore in virgola mobile
---------------------------------------------------------
2) nel caso in cui si voglia acquisire un numero intero il codice diventa..
b=int(input("dammi la base triangolo\n")) # acquisisce la base in caso di suo valore intero
---------------------------------------------------------
3) nel caso in cui si voglia acquisire una stringa allora il codice diventa....
nome = input("dammi il tuo nome\n") # acquisisce la stringa relativa al nome immesso.
o in alternativa
nome = input("dammi il tuo nome\n") # acquisisce la stringa relativa al nome immesso.
-------------------------------------------------------------------------------------
CODIFICARE CON PYTHON IL GENERICO PROBLEMA.
Ci si avvale di strumenti tipici della programmazione strutturata di tipo top/down.
Dopo attenta lettura del testo, occorre procedere alla stesura dello pseudocodice che consiste in:
individuare le variabili in ingresso del problema con le quali si andrà ad operare.
individuare le variabili di uscita che dovranno essere determinate al fine di rispondere ai quesiti proposti.
individuare eventuali costanti e attribuire loro il relativo valore ( PGRECO=3.14, SCONTO_PERCENTUALE=30, CAMBIO_EURO_DOLLARO=1.116 ).
sviluppare l'esercizio in relazione a quelle che sono le equazioni o relazioni che lo governano e che andranno risolte, come di norma. Infine eseguire i calcoli.
Comunicare i risultati con la parola riservata print(" "). Es. print (areaT," area del triangolo")
Controllare i risultati usando la calcolatrice.
----------------------------------------------------
ESEMPIO DI BASE PER CODIFICA IN CODICE PYTHON
1) Problema proposto:
Calcolo area di un triangolo
Modo di procedere per lo stesura dello pseudocodice:
individuo le due variabili del problema che sono la base e l'altezza e che per comodità chiamo b e a.
individuo le grandezze in uscita e in particolare, nel nostro caso, la sola area che chiamo per comodità areaT.
osservo che non esistono costanti da dichiarare per risolvere il problema specifico.
mi avvalgo della formula relativa all'area del triangolo(areaT = (b*a)/2 e la applico con riferimento alle due variabili di entrata che ho dovuto preventivamente acquisire.
eseguo i calcoli, a parte, e controllo se i risultati sono concordi con quelli previsti.
Analisi del problema:
Si tratta di un caso molto semplice in cui l'unica cosa possibile da fare è quella di acquisire le variabili di entrata b e a per poi applicare la formula risolutiva. \nIn questo modo possono essere affrontati gran parte dei problemi lineari come questo.
-----------------------------------------------------------------------------------------
Specifiche funzionali al problema
Grandezze in entrata o variabili del problema Grandezze in uscita
b base del triangolo areaT area del triangolo
a altezza del triangolo
Formalizzazione dello script relativo al problema in codice Python
------------------------------------------------------------------------------------------------------------
1 # Calcolo AreaTriangolo.
2 b=float(input("dammi la base triangolo\n")) # acquisisce la base da tastiera
3 a=float(input("dammi altezza del triangolo\n")) # acquisisce altezza da tastiera
4 areaT=(b*a)/2 # calcola area triangolo
5 print areaT," area del triangolo" # comunica il risultato relativo al valore di areaT
Analisi del codice:
Sezione dichiarativa e di acquisizione
-La prima riga rappresenta l'intestazione dello script, pertinente con il tipo di applicazione.
-Con la seconda e terza riga vengono acquisite le variabili del problema.
Sezione esecutiva.
-La quarta riga calcola area del triangolo.
Sezione emissione risultati.
-La quinta riga comunica il risultato con la parola riservata print."\n" La virgola consente di concatenare il valore numerico di areaT con la stringa "area del triangolo".
------------------
2) ESEMPIO DI BASE PER CODIFICA IN CODICE PYTHON
2^ Problema proposto:
Calcolo area e circonferenza del cerchio
Modo di procedere per lo stesura dello pseudocodice:
individuo unica variabile del problema, il raggio r del cerchio.
individuo la costante PGRECO necessaria per il calcolo sia dell'area che della circonferenza.
individuo le grandezze in uscita che sono areaCerchio e circoCerchio.
osservo che esiste una costante da dichiarare(PIGRECO) per risolvere il problema specifico.
mi avvalgo della formula relativa all'area del cerchio(areaCerchio = PGRECO*raggio**2) e di quella relativa alla circonferenza(circoCerchio=2*PGRECO*raggio) e le applico con riferimento alla variabile raggio che devo preventivamente acquisire.
eseguo i calcoli con una calcolatrice e mi segno i risultati.
Analisi del problema:
Si tratta di un caso molto semplice in cui l'unica cosa possibile da fare è quella di acquisire l'unica variabile del problema che è il raggio del cerchio.
Devo definire la costante PGRECO e assegnare ad essa il relativo valore.
Si applicano, infine, le due formule relative al calcolo dell'area e della circonferenza del cerchio. Si comunicano i risultati ottenuti.
Specifiche funzionali al problema
--------------------------------------------------------------------------
Grandezze in entrata o variabili del problema Grandezze in uscita
raggio raggio del cerchio areaCerchio
PGRECO costante di valore noto circoCerchio circonferenza
Formalizzazione dello script in codice Python -------------------------------------------------------------------
1 print("Calcolo area circonferenza del cerchio")
2 import math # importazione del modulo matematico
3 PGRECO =3.14 # dichiarazione e assegnazione della costante
4 raggio = float(input("dammi il raggio\n")) # acquisisce, in virgola mobile, il raggio da tastiera
5 areaCerchio = math.round(PGRECO*raggio**2) # calcolo area con valore arrotondato
6 circoCerchio = math.round(2*PGRECO*raggio) # calcolo circonferenza
7 print("Area del cerchio =", areaCerchio, " Circonferenza del Cerchio = ", circoCerchio) # comunica i risultati, su una sola riga, concatenando con la virgola
-----------------------------------------
Analisi del codice:
Sezione dichiarativa
-La prima riga rappresenta l'intestazione dello script
Sezione importazione moduli
-Con la seconda riga viene importato il modulo matematico.
Sezione dichiarativa e di acquisizione
-Con la terza si definisce la costante e si assegna il valore.
-Con la quarta si acquisisce la variabile del problema.
Sezione esecutiva.
-Con la quinta e sesta riga si eseguono i calcoli.
Comunicazione risultato.
-Con la settima si comunicano i risultati.
//////////////////////////////////////////////////////////////////////////////////////////////////////
3) ESEMPIO DI BASE PER CODIFICA IN CODICE PYTHON
Problema proposto:
Per pavimentare una stanza di lati (l, h) pari a m(mq) ci sono volute h ore di lavoro. \nVogliamo determinare quante ore occorrono per pavimentare una stanza di m1(mq)
Modo di procedere per lo stesura dello pseudocodice:
individuo le variabili del problema: l, h, l1, h1, ore.
osservo che non esistono costanti da dichiarare.
applico la formula risolutiva che ho trovato prima.
eseguo i calcoli
Analisi del problema
si tratta di una proporzionalità semplice nel senso che se aumenta la superficie aumenteranno anche le ore di lavoro. La proporzione può essere espressa nel modo seguente:
se è vero che per pavimentare (l x h)mq di superficie S occorre un certo numero di ore, che chiamiamo ore, sarà anche vero che per pavimentare (l1 x h1)mq di superficie S1 occorreranno ore1. E quindi: S : ore = S1 : ore1 e che risolta da ore1 = (ore*S1)/S"
Specifiche funzionali al problema
-----------------------------------------------------------------------------------------
Grandezze in entrata o variabili del problema Grandezze in uscita
l un lato della stanza in metri ore1 ore necessarie per pavimentare altra stanza
h altro lato della stanza
ore numero di ore per pavimentare la prima stanza
l1 primo lato altra stanza
h1 secondo lato altra stanza
Formalizzazione dello script in codice Python
----------------------------------------------------------------------------
# la proporzionalità semplice
print("Per pavimentare una stanza di l, h pari a m(mq) ci sono volute h ore di lavoro. Vogliamo determinare quante ore occorrono per pavimentare una stanza di m1(mq)")
print("si tratta di una proporzionalità semplice nel senso che se aumenta la superficie aumenteranno anche le ore di lavoro. La proporzione può essere espressa nel modo seguente:se è vero che per pavimentare (l x h mq) di superficie S occorre un certo numero di ore che chiamiamo ore di lavoro, sarà anche vero che per pavimentare l1, h1 mq si superficie S1 occorreranno ore1. E quindi: S : ore = S1 : ore1 e che risolta da ore1 = (ore*S1)/S")
print("DATI DI INGRESSO")
l = float(input("dammi un lato della stanza in metri\n"))
h = float(input("dammi altro lato della stanza in metri\n"))
ore = float(input("dammi il numero di ore per pavimentare la prima stanza\n"))
l1 = float(input("dammi primo lato altra stanza in metri\n"))
h1 = float(input("dammi secondo lato altra stanza in metri\n"))
S = l1*h1 # superficie finale da pavimentare
ore1= (ore*S1)/S
print("RISULTATI IN USCITA")
print(ore1,"ore necessarie per pavimentare", S1,")
//////////////////////////////////////////////////////////////////////////////////////////////////////
4) ESEMPIO DI BASE PER CODIFICA IN CODICE PYTHON
Problema proposto:
Si vuole studiare il moto di un corpo in caduta libera e, in particolare, quelli che sono gli spazi da esso percorsi in un intervallo di tempo predefinito(i primi 10 secondi). Tali valori, dopo essere stati accumulati dentro un array vuoto, vengono visualizzati sullo schermo con la parola riservata print.
Modo di procedere per lo stesura dello pseudocodice:
la variabile che interviene è il tempo t e il calcolo è relativo ai primi 10 secondi
osservo che esiste una costante da dichiarare, quella gravitazionale g, che interviene nella formula della caduta libera h = 0.5*g*t**2.
creo un array vuoto per depositare i dati che vengono generati durante il ciclo for.
uso il ciclo for t in range(1,11) che, dato il numero limitato di step(10), è certamente il più idoneo e risolve il progetto, in modo elegante ed efficace, come evidenzia il codice dello script. In questa fase: vengono eseguiti i calcoli relativi ad ognuno dei 10 secondi per l'equazione h = 0.5*g*t**2 e i valori, così ottenuti, posti nell'array a in precedenza creato. Si comunicano, infine, i risultati.
Analisi del problema
tipico problema di fisica che non presenta difficoltà in quanto l'unica equazione da considerare è quella relativa al moto, uniformemente accelerato, dei corpi in caduta libera e quindi soggetti alla sola forza di gravità g. L'equazione che governa tale moto è la classica h = 0.5*g*t**2 che viene applicata ed eseguita, per 10volte, come imposto dal ciclo for.
Specifiche funzionali al problema
---------------------------------------------------------------------------------------------------------
variabili di input grandezze in uscita
t variabile tempo y spazio percorso
Formalizzazione dello script in codice Python
--------------------------------------------------------------------------------------------------------
print("CORPO IN CADUTA LIBERA SOTTOPOSTO ALLA SOLA GRAVITA")
a=[]
for t in range(1,11):
h = 0.5*9.81*t**2
a.append(h)
print(h," spazio percorso dopo ",t," secondi")
---------------------------------
Analisi del codice:
- la prima riga con print visualizza sullo schermo la traccia del problema.
- la seconda crea un array vuoto di nome a e serve per accumulare i 10 risultati ottenuti per lo spazio h(t).
- la terza usa il ciclo for t in range(1,11) per imporre quante volte deve essere effettuato il calcolo sulla y(t).
- la quinta usa la parola riservata append() per collocare i 10 valori calcolati all'interno dell'array a.
- con la sesta riga si comunicano i risultati numerici mentre le stringhe di testo servono per commentare cosa abbiamo fatto.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SCRIPTS VARI PER ACQUISIRE MEGLIO CONCETTI_BASE
ACQUISIRE DATI E COMUNICARNE I RISULTATI (USO DELLE LISTE)
1) Acquisire dati da tastiera, elaborarli e comunicare i risultati sul video.
--------------------------------------------------------------
print("Un elettrodomestico generico assorbe una potenza espressa da un certo numero di watt; sapendo che esso viene utilizzato per un un certo numero di ore al giorno, calcolare l`energia consumata in un mese e il suo costo in euro")
print ("Soluzione: basta moltiplicare il numero di ore di utilizzo nel mese per i watt consumati dal dispositivo per il costo del kilowattore")
# dichiara le variabili ore e potenza di tipo float perchè si prevedono risultati non interi
print ("acquisire le variabili in entrata")
ore = float(input("dimmi quante ore viene utilizzato in un mese\n"))
pot = float(input("dimmi la potenza che consuma il tuo elettrodomestico\n"))
FasciaOraria=raw_input ("dammi la fascia oraria che può essere la F0_fascia unica la F1_Giorno la F2 e F3_sera e weekend\n")
if FasciaOraria == "F0":
EC = ore*pot*0.06804
print(EC, "energia consumata in un mese in fascia F0")
if FasciaOraria=="F1":
EC=ore*pot*0.07576
print(EC, " Energia consumata in un mese in fascia F1")
else:
EC=ore*pot*0.06393
print(EC, "Energia consumata in un mese in fascia F2 e F3")
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ACQUISIRE DATI RELATIVI ALLA TEMPERATURA E COMUNICARNE I RISULTATI (USO DELLE LISTE)
2) Acquisire dati da tastiera, memorizzarli e comunicarli a video.
Formalizzazione dello script in codice Python
----------------------------------------------------------------------------------------
k=4 # crea contatore e lo inizializza a 4 per acquisire 5 città
a=[] # crea la lista a.
b=[] # crea la lista b.
c=[] # crea la lista c.
while k>=0: # mentre k>=0 esegui le righe sottostanti
ci=input("città controllata\n") # acquisisce la città con valore di tipo string
a.append(ci) # pone la città dentro la lista creata e chiamata a
tempM=int(input("massimo di temperatura\n")) # acquisisce la tempM con valore di tipo int.
b.append(tempM) # pone la tempM dentro la lista creata e chiamata b.
tempm=int(input("minimo di temperatura\n")) # acquisisce la tempm con valore di tipo int.
c.append(tempm) # pone la tempm dentro la lista creata e chiamata c.
k=k-1 # scale di una unità il contatore
if tempM > max: # effettua un test sulla tempM e controlla se > max.
max = tempM # con test positivo pone tempM dentro la variabile di nome max, creata subito.
print (ci,"più calda con",max) # visualizza la città più calda
if tempm < min: # effettua un test sulla tempm e controlla se < min.
min = tempm # con test positivo pone tempm dentro la variabile di nome min, creata subito.
print(ci,"più fredda con",min) # visualizza la città più fredda
print(a,"città controllate") # visualizza la città acquisite
print(b,"temperature massime rilevate") # visualizza le temperature massime rilevate
print(c,"temperature minime rilevate") # visualizza le temperature minime rilevate
a.sort () # riordina i dati della lista a in ordine alfabetico e relativi alle città
b.sort () # riordina i dati della lista b in ordine alfabetico e relativi alle temperature massime tempM.
c.sort () # riordina i dati della lista c in ordine alfabetico e relativi alle temperature minime tempm.
print(b ,"temperature massime dalla più bassa alla più alta")
print(c, "temperature minime dalla più bassa alla più alta")
print(b[4], "temperatura massima")
print(c[0], "temperatura minima")
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3) Somma i primi 7 numeri successivi a un numero qualsiasi introdotto da tastiera. Uso del while
Formalizzazione in codice Python
---------------------------------------------------------
n = input("dammi un numero\n") # acquisisce n
stop =7 # crea e fissa il contatore a 7
a=[] # crea una lista vuota
i=1 # crea altro contatore
while (stop != 0): # crea ciclo infinito che si ferma quando stop=0
somma = n+i # incrementa contatore
a.append(somma) # mette somma dentro la lista a[ ]
stop=stop - 1 # decrementa contatore di stop
i=i+1 # incrementa contatore della somma
print(somma)
print(sum (a))
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ELENCO DIPENDENTI
4) Elenco Dipendenti. Realizzare uno script che mostri elenco degli impiegati e la loro funzione e ne conti anche il numero.
Formalizzazione dello script in codice Python
-------------------------------------------------------------------
count = 0 # crea il contatore e lo inizializza a 0.
D=["pino:insegnante","gino:bidello"," rino:preside", "dino:segretario"] # crea una lista lunga a caso
for x in D: # ispeziona la lista D
count = count + 1 # incrementa il contatore in modo che il primo elemento sia indicato con 1
print(x, count) # stampa gli elementi della lista e li conta singolarmente
print(count," numero complessivo di impiegati") # stampa il valore totale degli impiegati
////////////////////////////////////////////////////////////////////////
NUMERI_PERFETTI
5) Ricerca numeri perfetti
Stabilire se un numero qualsiasi, introdotto da tastiera, risulta essere un numero perfetto. Occorre ricordare che un numero va considerato perfetto quando la somma dei suoi divisori è uguale al numero stesso. Es. il numero sei 6(1,2,3) è perfetto in quanto la somma di 1+2+3=6.
Es. 28(1,2,4,7,14) è perfetto in quanto 28=1+2+4+7+14
Formalizzazione in codice Python
------------------------------------------------------------
while True: # crea un ciclo infinito
a=[] # crea una lista vuota
n=int(input("dammi il numero che vuoi controllare\n")) # acquisisce numero intero da tastiera
for x in range(1,n): # la x ispeziona da 1 a n con ciclo for
if n%x == 0 and n != x: # sono le condizioni per avere un numero pari e diverso da n
a.append(x) # mette il numero x nella lista vu
if(sum(a))= n: # verifica se la somma elementi della lista=n. Sono le condizioni per avere numero perfetto e stampa il risultato se vero.
print(n, " è un numero perfetto") # stampa il numero perfetto
Esecuzione dello script
////////////////////////////////////////////////////////////////////////
6) Uso del while Genera 10 numeri a partire dal numero qualsiasi introdotto data tastiera
n= int(input("dammi un numero qualsiasi\n"))
count = 0
a=[]
while count <= 9:
count = count +1
n= n+1
a.append(n)
print(a)
////////////////////////////////////////////////////////////////////////
7) Uso del while Effettua il prodotto fra numeri mediante la somma
n1= int(input("dammi un numero qualsiasi\n"))
n2= int(input("dammi un numero qualsiasi\n"))
count = 0
s = 0
while n2 != count:
count = count +1
s= s+1
print(s, "prodotto di ",n1," per ",n2)
////////////////////////////////////////////////////////////////////////
STABILIRE IL NUMERO MASSIMO FRA GLI N NUMERI ACQUISITI
8) Stabilire quale è il numero massimo fra tutti quelli introdotti da tastiera. La ricerca deve essere bloccata da un contatore.
Formalizzazione in codice Python
-------------------------------------------
print("stabilisce il massimo fra n numeri")
max = 1 # dichiara max come numero intero e assegna valore 1 ipotizzando tutti i numeri siano > 1
for x in range(5): # esegue un ciclo for con variabile x da 0 a 5 e pertanto richiede inserimento di 6 numeri.
n=int(input("dammi numero\n"))
if n > max: # test-verifica se il numero inserito e` maggiore di max
max = n # se n>max attribuisce il valore a max che prima vale 1 e poi diventa n.
print((n),"massimo")
else:
print("minore")
print(max,"numero maggiore fra quelli introdotti")
/////////////////////////////////////////////////////////////////////
ESEGUE LA SOMMA DI N NUMERI INSERITI DA TASTIERA
9) Sommare n numeri usando il ciclo while che si interrompe quando il contatore count diventa = 0
Formalizzazione dello script in codice Python
---------------------------------------------------------------------------------------------
somma=0 # creo la variabile somma e gli assegno il valore zero
count=int(input("dimmi quanti numeri vuoi sommare\n")) # creo la variabile count e prendo il valore da tastiera
while count > 0: # fino a quando count > 0 fai le cose che seguono
numero=int(input("dammi un numero\n")) # acquisisco la variabile numero
somma=somma+numero # sommo alla variabile somma il numero acquisito
count = count-1 # decremento il contatore che deve essere sempre > 0
print(somma, " somma dei numeri inseriti") # esco dal ciclo e stampo il valore della somma
////////////////////////////////////////////////////////////////////////
CREA UNA FUNZIONE CON L'ISTRUZIONE DEF IN PYTHON
La funzione è un blocco di righe di codice il cui compito è quello svolgere delle operazioni specifiche, contenute nella funzione stessa, quando viene chiamata.
Per creare una funzione si usa il def che ha ha bisogno di: un nome che la caratterizza(es. def Area_Triangolo(b, h) e degli argomenti da cui essa dipende. Occorre poi specificare, dopo due punti previsti dall'etica del linguaggio, che cosa la funzione deve svolgere e lo facciamo con la parola riservata return: return(b*h)/2 .
Si deve poi avviare la funzione richiamandola con lo stesso nome con il quale è stata creata print(Area_Triangolo(5,8). Notare che si sono attribuiti due valori a b e h (b=5 h=8).
Dobbiamo indentare il codice, relativo al return, mettendo i due punti dopo il nome e avanzando poi di tre spazi dopo il ritorno a capo.
Il codice completo diventa:
def AreaTriangolo(b,h):
return (b*h)/2
print AreaTriangolo (5,8)
--------------------------------------------
Es.1 Crea la funzione def Area_Triangolo(b,h) e poi la richiamo con istruzione print
Formalizzazione in codice Python
-------------------------------------------------------------------
1 b = float(input("dammi la base triangolo\n")) # acquisisce la base per rendere il problema dì tipo generale
2 h = float(input("dammi altezza triangolo\n")) # acquisisce altezza
3 def Area_Triangolo(b,h): # definizione della funzione specifica e delle variabili da cui dipende
return(b*h)/2 # quello che deve restituire la funzione
4 print(Area_Triangolo(b,h) # chiamata della funzione; altrimenti non viene eseguita
Commento del codice:
Con le righe 1 e 2 si rende il problema di tipo generale e quindi valido per qualsiasi coppia di valori delle variabili del problema.
Con la riga 3 si definisce la funzione e si evidenziano gli argomenti da cui dipende e, dopo l'indentazione ottenuta con avanzamento di tre posizioni, si specifica quello che la funzione deve fare con istruzione return(b*h)/2 o, in alternativa, con print(b*h)/2.
La quarta riga consente di visualizzare a schermo, e in relazione con i valori attribuiti alle variabili b e h, quello che si è impostato nella chiamata della funzione con print(Area_Triangolo(8,5))
////////////////////////////////////////////////////////////////////////
Es. 2 Stabilire se un numero è pari o dispari
Formalizzazione in codice Python
--------------------------------------------------------------
def PariDispari# definizione della funzione specifica e delle variabili
if x%2 == 0: # controlla se x è pari e ne stampa il valore
print(x, " è pari")
else: # altrimenti comunica che x è dispari
print(x," è dispari ")
PariDispari(20) # chiamata della funzione che comunica la parità del numero 20
////////////////////////////////////////////////////////////////////////
Es. 3 Somma due numeri
Formalizzazione in codice Python
------------------------------------------------------------------
def somma(a,b):
print(a+b)
somma(4, 5) # chiama la funzione e stampa 9 (somma di 4+5)
/////////////////////////////////////////////////////////////////////
Es. 4 IL GIOCO - Indovina numero - con la funzione def
Formalizzazione in Python
-------------------------------------------
def gioco():
x=123
y=1
while True:
a=int(input("dammi un un numero\n"))
if a > x:
print("numero troppo grande")
elif a > x:
print("il numero troppo piccolo")
else:
print("numeri uguali Hai vinto")
gioco() # chiamata della funzione
///////////////////////////////////////////////////////////////////
Es. 5) CALCOLO DEL FATTORIALE DI UN NUMERO N QUALSIASI
Formalizzazione in codice Python
-----------------------------
n= int(input("dammi un numero\n")) # acquisisco numero n
def Fatto(n): # crea la funzione def relativa al fattoriale
if n==0: # test condizionale
return 1 # restituisce 1 se test positivo
else: # altrimenti restituisce il fattoriale di n
return n*Fatto(n-1) # calcola il fattoriale
print(Fatto (n),"fattoriale di ", n)
////////////////////////////////////////////////////////////////////////
Es. 6) Come fare più cose contemporaneamente con la funzione def
Obiettivo: definire più funzioni nello stesso script e poi richiamarle, una alla volta, o contemporaneamente, quando servono.
Formalizzazione in codice Python
-------------------------------------------------------------------
print("Uso della funzione def per risolvere specifici problemi")
# Vengono acquisite due variabili di tipo float per definire la base e altezza e poi anche il raggio r del cerchio
# si definisce poi la prima funzione def Area_Tri che dipende dalle due variabili b, h e si stabilisce, dopo i due punti, il metodo che deve essere attuato: return (b*h)/2
# viene poi creata la funzione def Area_Qua e, attraverso la parola riservata print, si provvede a visualizzare il risultato della formula (b*h), che ne rappresenta l'area del quadrato.
# infine viene creata la funzione def Area_Cerchio(r) e, attraverso la parola riservata print, si provvede a visualizzare sia il risultato della formula (2*pgreco*r), che rappresenta l'area del cerchio, che quello della circonferenza 2*pgreco*r.
print("Codice Python")
print "acquisire le variabili del problema"
b=float(input("dammi base\n"))
h=float(input("dammi altezza\n"))
r=float ( input ( "dammi il raggio del cerchio\n"))
def Area_Tri(b,h):
return (b*h)/2
def Area_Qua (b):
return b*b
def AreaCerchio (r):
pgreco=3.14
return 2*pgreco*r,"circonferenza", pgreco*r**2,"area cerchio"
print(AreaCerchio (r)) # chiamata della funzione
print(Area_Qua (b, h)," area quadrato") # chiamata della funzione
print(Area_Tri(b,h), " area triangolo") # chiamata della funzione
DIFFERENZA FRA VARIABILE GLOBALE E LOCALE
Una variabile si considera globale quando è riconosciuta in tutte le parti del codice.
Una variabile si definisce locale quando viene riconosciuta solo all'interno di aree specifiche del codice, come ad es all'interno di un ciclo for o di un ciclo while o ancora, come nel caso sottostante, all'interno della funzione def.
Es. Per chiarire il concetto.
Formalizzazione in Python
----------------------------------
def uno()
x=10
print(x)
uno() # su questa riga chiama la funzione e stampa il valore 10 della variabile locale
print(x) # su questa riga chiama la funzione uno e stampa ancora il valore 10 della locale
esecuzione
10
10
--------------------------------------------------------
x=10 # x fuori dal def è una variabile globale
def uno():
x=15 # x è una variabile locale riconosciuta solo dalla def
print(x)
uno() # su questa riga chiama la funzione e stampa il valore 15
print(x) # il print fuori dal ciclo stampa il valore di x globale che vale 10
esecuzione
15
10
---------------------------------------------------------------
LE CLASSI IN PYTHON
In python esiste una funzione integrata nel linguaggio che viene eseguita dall'interprete, all'avvio della classe, che è la def__init__() che caratterizza tutte le classi. La si usa per attribuire dei valori alle proprietà dell'oggetto o per eseguire delle operazioni durante la modellizzazione dell'oggetto stesso.
Es.1
class Person: # crea la classe
def __init__(self,name,age): # usa la funzione per definire gli attributi della classe
self.name = name # self è un parametro che serve per accedere alle variabili della classe e deve essere il primo presente in qualsiasi funzione della classe.
self.age = age
def display(self): # definisce funzione per visualizzare
print("il tuo nome "+self.name)
print ("la tua età anni "+str(self.age))
p=Person ("Jonathan","27") # crea oggetto e attribuisce valori
p1=Person ("Stefano ","28") # crea secondo oggetto
p2=Person("Robert ","55") # crea terzo oggetto
p.display() # chiama funzione display(self) e visualizza proprietà oggetto p
p1.display()
p2.display()
/////////////////////
Es. 2
class Auto:
def __init__(self, cilindrata, cavalli):
self.cilindrata = cilindrata
self.cavalli = cavalli
def display(self):
print("la tua auto ha una cilindrata di "+self.cilindrata)
print ("la tua auto ha cavalli "+str(self.cavalli))
a = Auto("1600","110")
a.display()
//////////////
Es.3
class Area:
def __init__(self,b,h):
self.b=b
self.h=h
def display(self):
print("area quadrato "+str((self.b)*(self.h)))
print ("area triangolo "+str((self.b)(self.h)/2))
a= Area(30,20)
aT=Area(4,8)
a.display()
aT.display()
/////////////////////////////////////////////////////////////
Python Inheritance
L'ereditarietà ci consente di definire nuove classi che ereditano tutti i metodi e le proprietà da una classe creata in precedenza.
La classe genitrice è la classe principale dalla quale vengono ereditate tutte le caratteristiche della classe.
La classe figlio è la classe che eredita da un'altra classe e viene chiamata anche classe derivata.
Crea una classe genitrice: qualsiasi classe può essere una classe genitrice, quindi la sintassi è la stessa della creazione di qualsiasi altra classe:
Esempio
Crea una classe di nome Auto, con proprietà cilindrata e cavalli e poi un metodo per stampare
gli attributi della classe derivata.
class Auto:
def __init __ (self, cilindrata,cavalli):
self.cilindrata=cilindrata
self.cavalli=cavalli
def display(self):
print(self.cilindrata, self.cavalli)
# Utilizzare la classe Auto per creare un oggetto, quindi eseguire il metodo dislay() per visualizzare:
a = Auto("1600", "150")
a.display()
# Utilizzare la classe Auto per creare la classe Fuoristrada() che eredita da class Auto()
class Fuoristrada(Auto): # la classe Auto diventa il parametro della classe Fuoristrada derivata.
pass # utilizzare la parola chiave pass quando non si desidera aggiungere altre proprietà o metodi alla classe.
a=Fuoristrada("verricello","cassone") # crea oggetto della classe derivata con sue caratteristiche.
a.display() # mostra grandezze relative a oggetto di class Fuoristrada() che sono: verricello cassone
LE STRINGHE IN PYTHON
La stringa risulta costituita da una serie di caratteri, che possono essere sia numeri che lettere, delimitati dalle doppie virgolette.
Es1 "antonio@libero.it"
Es2 "36E"
Es3 "ristorante da mario"
-Per memorizzare una stringa essa va collocata all'interno di una variabile di tipo string.
Es.
a = "Ciao a tutti"
print(len(a)) # Restituisce 12 perchè conta anche gli spazi fra caratteri
print(a[3]) # Restituisce o il quarto elemento della stringa
print(a + !) # Restituisce Ciao a tutti! perchè concatena sulla stessa stringa
print(a * 2) # Restituisce Ciao a tuttiCiao a tutti
print(a.upper()) # Restituisce CIAO A TUTTI
print(a.lower()) # Restituisce ciao a tutti
a.replace("e","6")
print(a) # Restituisce Ciao e tutti
//////////////////////////////////////////////////////////////////////////////
N.B -Per concatenare due stringhe si usa operatore matematico +
nome = "giuseppe"
cognome = "mazzini"
persona = nome + cognome
print(persona) ↲ # restituisce
giuseppemazzini
////////////////////////////////////////////////////////////////////////////
-Per replicare una stringa si usa operatore * :
nome = "giuseppe" * 5
print (nome) # restituisce
giuseppegiuseppegiuseppegiuseppegiuseppe
////////////////////////////////////////////////////////////////////////
Lo stesso risultato si ottiene con:
print(nome * 5) # restituisce
giuseppegiuseppegiuseppegiuseppegiuseppe
///////////////////////////////////////////////////////////////////////
nome.replace("giuseppe","mazzini")
print(nome) # resituisce
giuseppemazzini
//////////////////////////////////////////////////////////////////////
-Per la conversione fra stringhe e numeri
nome="giuseppe" + str(1949)
print(nome) ↲ # restituisce
giuseppe1949
///////////////////////////////////////////////////////////////////////
-Da una stringa contenente valore numerico si ottiene il numero in essa contenuto. La stessa cosa se la stringa contiene un numero in virgola mobile:
Es.
anno = int("1949")
print(anno) # restituisce 1949
///////////////////////////////////////////////////////////////////////
prezzo = float("19.49")
print(prezzo) # restituisce 19.49
//////////////////////////////////////////////////////////////////////
-Per stampare sequenze di caratteri su varie righe si usa lo \n
print("$\n$$\n$$$\n$$$$\n$$$$$\") # restituisce
$
$$
$$$
$$$$
$$$$$
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ALTRE OPERAZIONI CON LE STRINGHE
Stato Risultato Osservazioni
stringa= "Giuseppe" la stringa viene settata Giuseppe stampa quello fra virgolette
sringa = stringa + "Garibaldi" viene settata a Giuseppe Garibaldi il + concatena le stringhe.
///////////////////////////////////////////////////////////////////////
print("Per favore" + " scrivi tuo nome: ") stampa Per favore scrivi il tuo nome:
///////////////////////////////////////////////////////////////////////
gruppo = str(56) + "th" gruppo viene settato a"56th" 56 è un intero, da convertire in stringa
///////////////////////////////////////////////////////////////////////
persone= "pino & gino"
n = len(persone) n viene settato a 11 - len sta per lunghezza - si contano anche gli spazi
///////////////////////////////////////////////////////////////////////
nome = "Giorgio"
lettera = string[1] lettera viene settata ad "i" Notare che la posizione 0 è quella della G.
///////////////////////////////////////////////////////////////////////
ultimo= string[len(string) - 1] ultimo viene settato a t ultimo carattere della stringa.
///////////////////////////////////////////////////////////////////////
string = "Ciao"
string = string + " a tutti" # Ciao a tutti Il segno + serve a concatenare le due stringhe
///////////////////////////////////////////////////////////////////////
print("Dammi altezza del triangolo:" +" e quella della base ")
Dammi altezza del triangolo: e quella della base
///////////////////////////////////////////////////////////////////////
classe = str(47) + "gold" 47gold Il numero 47 è un intero e viene convertito in stringa
iniziali= "A & G"
n = len(iniziali)
# n ha valore 5 perché sono 5 i caratteri. Gli spazi vuoti si contano.
///////////////////////////////////////////////////////////////////////
stringa = "Giuseppe"
ch = stringa[1] che viene settata a "i" perchè si parte a contare da 0.
ultimo = string[len(string-1)] ultimo viene settato a "e" ultimo carattere di Giuseppe.
///////////////////////////////////////////////////////////////////////
>>>a="marco"
>>>b=32
>>>c="milano"
>>>print("%s nato a %s ed ha %d anni" %(a, c, b)) # da: Marco nato a milano ed ha 32 anni
Marco nato a Milano ed ha anni 32
///////////////////////////////////////////////////////////////////////
>>>a="pino "
>>>print (len(a)) # restituisce 4
>>>print(a[3]) # restituisce 0
>>>print(a+"!") # restituisce pino!
>>>print(a*2) # restituisce pinopino
>>>print (a.upper()) # restituisce PINO
>>>print(a.lower()) # restituisce pino
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SHELL DI PYTHON
Possiamo operare con le stringhe direttamente nella Shell di Python.
Nella stringa "giuseppe", ma anche e in tutte le altre stringhe, i caratteri vengono identificati a partire dall'indice 0 e quindi nel ns. caso: g[0] i[1] u[2] s[3] e[4] p[5] p[6] e[7]
>>>nome = "giuseppe"
>>>print nome[:2] # restituisce gi le prime due
>>>print nome[:4] # restituisce gius le prime quattro
>>>print nome[2:] # restituisce useppe toglie le prime due
>>>print nome[1:] # restituisce iuseppe toglie la prima
>>>print nome[2:4] # restituisce us toglie le prime due e quelle dopo la quarta
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
I DIZIONARI CON PYTHON
In Python il dizionario è chiamato dict, che deriva dall'inglese dictionary, ed è formato da coppie chiave:valore e separate fra di loro da una virgola. Il tutto viene racchiuso fra parentesi graffe.
I dizionari si creano strutturando nel seg. modo:
- possono avere un nome qualsiasi.
- devono avere le due parentesi graffe di apertura e chiusura.
- le stringhe, separate fra loro da una virgola, possono essere in numero qualsiasi e, pertanto, il dizionario si può estendere quanto si vuole.
- la chiave del dizionario per il primo elemento è giorgio, per il secondo è andrea e via di seguito.
- il value o valore è rappresentato dalla stringa dopo i due punti di ogni elemento del dizionario.
- l'accesso ai valori dei singoli elementi avviene attraverso la chiave corrispondente.
#Es. di Dizionario
a={"giorgio":"038888488","andrea":"0989877798","marino":"4356677672"} # crea il dizionario a
chiave value chiave value chiave value
Operazioni che si possono fare sul Dizionario a che abbiamo creato:
print(a["giorgio"]) # restituisce il numero di telefono di giorgio e quindi 038888488
038888488
------------------------------------------------------------------
print(a.has_key("marino") # restituisce marino che è la chiave
marino
-------------------------------------------------------------------
print(a.values("andrea")) # restituisce il valore associato ad andrea
0989877798 # il numero di telefono associato ad andrea.
------------------------------------------------------------------
print(a) # appare tutto il dizionario
{"giorgio":"038888488","andrea":"0989877798","marino":"4356677672"}
------------------------------------------------------------------
print(a.keys()) # restituisce tutte le chiavi del dizionario
giorgio andrea marino
a["michele"] = "0989755555" # aggiunge michele al dizionario
-------------------------------------------------------------------
print(a) # appare tutto il dizionario con l'aggiunta di michele e del suo numer
{"giorgio":"038888488","andrea":"0989877798","marino":"4356677672","michele":"0989755555"}
------------------------------------------------------------------
print(len(a)) # restituisce la lunghezza e quindi il numero 4 dato che sono 4 gli elementi del D
-----------------------------------------------------------------------------------
Un Dizionario molto efficace
Il dizionario accumula delle informazioni e le restituisce quando le si richiama attraverso la chiave(diz.has_key(b) e che in sostanza significa: controlla se il dizionario diz contiene la chiave di quello che mi stai chiedendo e se la trovi allora mostra il contenuto associato, cioè il codice scritto dopo i due punti.
Formalizzazione dello script in codice Python
--------------------------------------------------------------------------------------------
print("Fammi delle domande e cerco di risponderti")
a={"come stai":"bene grazie","quanti anni hai":"32 anni"}
k=2
while k==2: # ciclo infinito in quanto k è =2 sempre e quindi continuerà a chiedere
b=input("chiedimi qualcosa contenuto nel dizionario e io ti rispondo se lo trovo\n")
if a.has_key(b): # se trova la chiave richiesta risponde. Va a vedere se il b immesso è chiave di a
print (a[b]) # stampa bene grazie se io ho immesso come richiesta come stai
else:
print (gy"non ho trovato nulla") # comunica se non ha trovato nulla
c=input("cosa rispondo alla domanda" +b) # crea una nuova variabile c per acquisire elemento
a[b] = c # aggiunge il nuovo elemento al dizionario
Altro Dizionario molto utile
Creiamo prima un dizionario relativo a tutto quello di nostro interesse; se lo interroghiamo lui risponde. La cosa notevole è quella che si può estendere il D. a dismisura e quindi diventa come un grande db.
Formalizzazione dello script in codice Python
-------------------------------------------------------------------
a={"autovettura":"corolla verso con targa gf67778gh","quale sport ti piace":"tennis","quando scade assicurazione":"6/7/2019"}
print(a["autovettura"] # risponde con il valore della chiave di autovettura
corolla verso con targa gf67778gh
print(a["quale sport ti piace"] # risponde con il valore della chiave di quale sport ti piace
tennis
print(a["quando scade assicurazione"] ) # con il valore chiave quando scade assicurazione
'6/7/2019'
--------------------------------------------------------------------------------------------------------------------------
ALCUNI MODULI DI PYTHON
Per utilizzare quelli contenuti in Python, li possiamo richiamare direttamente dalla Shell digitandone il codice relativo:
>>>import calendar ↲
>>>calendar.weekday(2009,12,25)
4 # restituisce 4 un giovedì che occupa la quarta posizione su sette giorni
///////////////////////////////////////////////////////////////////////
>>>print(calendar.monthrange(2009,1)) # restituisce (3,31)
(3,31) # comunica che si tratta del terzo giorno della settimana(Mercoledì) il mese è di 31 giorni
///////////////////////////////////////////////////////////////////////
>>>import calendar
>>>a= input("quale anno vuoi vedere\n") # digito un anno qualsiasi
>>>print(calendar.prcal(a) # mi fa vedere il calendario dell'anno che ho digitato come valore di a
>>>print(calendar.prcal(2009)) # mi fa vedere il calendario del 2009
////////////////////////////////////////////////////////////////////////
>>>import calendar
>>>calendar.prmonth(2009,01) # restituisce il calendario del mese di gennaio del 2009
////////////////////////////////////////////////////////////////////////
>>>from datetime import date
>>> oggi=date.today()
>>> print(oggi)
2018-12-1
>>> natale=date(2018,12,25)
>>> print(natale)
2018-12-25
>>> print(natale-oggi,"giorni che mancano a natale")
8 days, 0:00:00 giorni che mancano a natale
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Il modulo random e qualche applicazione
>>>import random
>>>random.choise("ciao a tutti")
c # restituisce un carattere a caso fra quelli contenuti nella stringa
///////////////////////////////////////////////////////////////////////
>>>import random
>>>random.randint(1,30)
4 # restituisce un numero qualsiasi compreso fra 1 e 30
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SIMULAZIONE DI SISTEMI FISICI E NON CON PYTHON
SIMULAZIONE CRESCITA TOPINO
1) Tipico script che simula la crescita di un topino dalla nascita in poi.
Formalizzazione in codice Python
---------------------------------------------------------
print("crescita di topino nei primi giorni di vita")
print("peso alla nascita fra 80 e 100 grammi")
c=0 //contatore dei giorni
g=10 //contatore che blocca il ciclo while
pi=float(input ("peso iniziale topino\n"))
while g!=0:
scorie=float(input ("scorie oggi\n"))
mangia=float(input("mangia oggi\n"))
pi=pi+mangia-scorie
c=c+1
g=g-1
print( pi,"grammi peso del giorno", c)
print (pi,"grammi peso effettivo")
//////////////////////////////////////////////////////////////////
Simulazione di un semplice gioco
Es.2 UN GIOCO CON IL NUMERO VINCENTE
Abbiamo una lista che contiene n numeri, presi a caso, e in numero qualsiasi; il gioco si interrompe quando si indovina il numero stabilito dal codice.
Formalizzazione in codice Python
-------------------------------------------------------------------
nome=input ("dimmi come ti chiami\n") # tell me your name
print("gioco creato da ", nome)
print("devi indovinare un numero vincente fra quelli della lista e puoi sbagliare soltanto 4 volte prima di perdere 100 euro")
a=[12,24,1,66,88,3,7,5,8,10] # lista con 10 elementi
b=[]
k=3
print(a)
while k != 0: # ciclo infinito fino a k=0
print "guarda i numeri della lista che poi ti faccio delle domande"
num=int(input("dammi un numero che secondo il tuo parere risulta vincente\n"))
if num==a[4]: # si stabilisce il numero vincente 88: il quinto elemento delle lista
print(nome,"risposta esatta hai vinto")
else:
k=k-1 # decrementa contatore in base al numero di tentativi che si danno al giocatore
print(nome,"hai perso hai sbagliato", count," volte" )
////////////////////////////////////////////////////////////////////////
3) SIMULAZIONE DEL GIOCO DELLA SCHEDINA CON PYTHON
Se ci vogliamo affidare al caso, cioè a Python.
Lo script sottostante viene salvato sul desktop con il nome schedina.py. Appare l'icona, con il nome schedina, sulla quale si va a cliccare per eseguirlo. Viene generata, a caso, la sequenza dei 13 simboli 1x2.
Formalizzazione dello script in codice Python--------------------------------------------------------------
1 import random # importazione del modulo random in grado di generare a caso
2 a="1x2" # creazione della stringa di tre elementi
3 for x in range(13): # ciclo for per definire il numero di volte
4 ...print(random.choice(a)) # restituisce la schedina generando casualmente 1 x 2
x
2
1
1
x
x
x
2
1
1
x
x
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4) SIMULAZIONE ANDAMENTO CONTO BANCARIO CON PRELIEVI E DEPOSITI
print("UN CLIENTE DI UNA BANCA HA UN FIDO IN EURO, DA SPECIFICARE, IN QUANTO TITOLARE DI UN CONTO CON UN DEPOSITO IN MIGLIAIA DI EURO. VENGONO PRELEVATI, PERIODICAMENTE, DELLE SOMME SENZA MAI DEPOSITARE ALTRO DANARO. REALIZZARE IL SOFTWARE CHE PRODUCA IN USCITA DEI MESSAGGI CHE AVVISINO, OGNI VOLTA, SE SI PUO ANCORA PRELEVARE, OPPURE NO, E IL RESIDUO ANCORA DISPONIBILE")
conto= int(input("dimmi quanti euro hai sul conto\n")) # il progetto risulta valido qualunque sia il deposito iniziale e il valore del fido
fido=int(input("dimmi quanti euro ti sono stati accordati come fido\n"))
totale=conto +fido
k=10 # contatore che definisce il numero di transazioni
while k != 0:
k=k-1
preleva=float(input("quanto prelevi oggi\n"))
totale=totale-preleva
if totale >=0:
print("prelievo accordato sono disponibili ancora euro ",totale)
else:
print("NON PUOI PRELEVARE")
# se oltre a prelevare si provvede anche a depositare periodicamente allora il codice diventa:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
AUTOMI
SIMULAZIONE DI AUTOMI A STATI FINITI
1) SIMULAZIONE CON PROGETTO SOFTWARE DI UN AUTOMA A STATI FINITI
print("AUTOMA CASSAFORTE")
print("UN AUTOMA A STATI FINITI E RELATIVO AL MECCANISMO DI APERTURA DI UNA CASSAFORTE POSSIEDE, COME COMBINAZIONE DI SBLOCCO, IL CODICE 4 3 1 1 2. SI VUOLE PROGETTARE IL SOFTWARE IN GRADO DI RICONOSCERE TALE CODICE")
k=2 # fissa i possibili tentativi di digitazione del codice
a=[ ] # crea un array vuoto dove depositare le cifre immesse
codice=[4,3,1,1,2] # array modificabile contenente il codice
while k != 0:
k=k-1
c1= int(input("dammi prima cifra\n"))
c2= int(input("dammi seconda cifra\n"))
c3= int(input("dammi terza cifra\n"))
c4= int(input("dammi quarta cifra\n"))
c5= int(input("dammi quinta cifra\n"))
a.append(c1)
a.append(c2)
a.append(c3)
a.append(c4)
a.append(c5)
if a == codice:
print("SISTEMA SBLOCCATO PUOI ACCEDERE")
else:
print("SISTEMA BLOCCATO NON PUOI ACCEDERE")
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2) SIMULAZIONE DI UN AUTOMA A STATI FINITI DISTRIBUTORE AUTOMATICO
print("PROGETTA UN AUTOMA IN GRADO DI SIMULARE UN DISTRIBUTORE AUTOMATICO DI FRANCOBOLLI CHE ACCETTI MONETE DA 0.50cent, 0.20cent, 0.10cent di euro. Si conosce il prezzo del francobollo, ma si acquisisce il suo valore da tastiera per renderlo adattabile a eventuali cambiamenti, e si ipotizza che il distributore non fornisca resto se questo risulta inferiore a 20cent ")
a=[] # array vuoto per depositare il valore delle monete usate per pagare
c=4 # contatore per gestire il ciclo while
while c != 0:
c=c-1
monete5=float(input("da 50cent in euro\n")) # vengono acquisite le variabile da tastiera e poste in array a
a.append(monete5)
monete2=float(input("da 20cent centesimi in euro\n"))
a.append(monete2)
monete1=float(input("da 10cent in euro\n"))
a.append(monete1)
print(sum(a)) # stampa il valore della somma in euro acquisita
prezzoFra=float(input("prezzo francobollo in centesimi\n")) # acquisisce prezzo francobollo
francobolli=float(input("quanti francobolli vuoi\n")) # acquisisce numero di bolli
prezzopaga=francobolli*prezzoFra # calcola quanto pagare
resto=sum(a)-prezzopaga # calcola il resto
if(resto < 0.20): # se resto <20 comunica no resto
print("non da resto")
else:
print(resto," questo e il resto") # comunica resto, somma da pagare
print(prezzopaga,"somma da pagare") # cifra da pagare
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3) SIMULAZIONE CON PROGETTO SOFTWARE DI UN AUTOMA A STATI Finiti
AUTOMA DISTRIBUTORE AUTOMATICO
print("AUTOMA DISTRIBUTORE AUTOMATICO CHE EROGA UNA LATTINA DI COCA SOLO DOPO CHE SONO STATE INSERITE 2 MONETE DA 1euro")
print("AUTOMA FUNZIONA SOLO CON MONETE DA 1euro")
k=2 # contatore per definire quante volte si devono acquisire le monete
a=[ ] # array per depositare le monete
while k != 0:
k=k-1
moneta=int(input("dammi moneta da 1euro\n"))
a.append(moneta) # deposita le monete in a
if sum(a) == 2: # controlla se le monete sono 2
print("bibita erogata")
else:
print("non hai messo le monete previste ",a)
____________
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ALCUNI MODULI CON PYTHON
Il modulo time e alcune applicazioni
ModuloTIME Sito Rif.to
Nella Shell di Python, digitare quanto segue:
>>>import time # viene importato il modulo che consente di interagire con orologio di sistema
>>>time.sleep(3) # il sistema si ferma per 3 secondi
///////////////////////////////////////////////////////////////////////
>>>import time
>>>time.strftime("%a") # da il giorno settimana abbreviato
'Thu'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%aA") # il giorno completo
'Thursday'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%b") # il mese abbreviato
'Sep'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%B") # il mese completo
'September'
///////////////////////////////////////////////////////////////
>>>time.strftime("%m") # il mese in numero
'09'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%y") # il giorno in numero del mese in corso
'18'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%Y") # anno in corso 2018
'2018'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%C") #
'20'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%d") # il giorno corrente
'13'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%H") # orario attuale
'13'
///////////////////////////////////////////////////////////////////////
>>>time.stfrtime("%S") # i secondi
'32'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%M") #
'52'
///////////////////////////////////////////////////////////////////////
>>>time.strftime("%P") # post meridian
'pm'
Cosa appare nella SHELL di PYTHON digitando il codice di cui sopra.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
LA GESTIONE DEGLI ERRORI CON PYTHON E LE PAROLE RISERVATE try e except.
Sito Rif.to try-except-python
////////////////////////////////////////////////////////////////
CREARE E IMPORTARE I MODULI PERSONALI CON PYTHON
Es.
Supponiamo di aver definito alcune funzioni di nostro interesse nel seg. modo:
def area_cerchio(r):
pgreco=3.14
return (pgreco*r*r)
def area_rettangolo(a,b):
return a*b
def saluto():
print("ciao a tutti")
--------------
Salvo il file con la solita procedura: File/Salva con nome/prova.py.
Quando ritorno nella Shell di Python e digito import prova, viene caricato il modulo che ho salvato e che può essere utilizzato senza problemi..
>>> import prova
>>> prova.saluto
ciao a tuti
>>> prova.area_cerchio(10) # attribuisco valore al raggio
628
>>> prova.area_rettangolo(10,10) # attribuisco valori ai due lati
100
N.B. Se viene modificato il modulo, tale modifica si ripercuote su tutte le applicazioni che usano quel modulo!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1) APRIRE UN BROWSER CON PYTHON IN AMBIENTE WINDOWS
Formalizzazione in codice Python
---------------------------------------------------------------------------------------------
import webbrowser
webbrowser.open("http://www.google.it")
# oppure
import webbrowser.get("firefox")
x.open("https://www.google.it")
///////////////////////////////////////////////////////////////////////
2) AVVIARE APPLICAZIONE CON PYTHON IN AMBIENTE WINDOWS
Formalizzazione in codice Python
--------------------------------------------------------------------------------
import o.s. # accede al sistema operativo
os.startfile("notepad") # avvia il notepad di windows
os.startfile("c:\programmi\CCleaner\ccleaner.exe") # avvia la musica in base al percorso del file
///////////////////////////////////////////////////////////////////////
4) AVVIARE UN FILE .wav CON PYTHON IN AMBIENTE WINDOWS
Formalizzazione dello script in codice Python
-----------------------------------------------------------------------------
import windsound # si deve importare windsound in Python 2.5
windsound.PlaySound("c:\uccellini.wav",1)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CENNI SUL MODULO PYGAME IN AMBIENTE WINDOWS
Es.1 Creare una finestra per disegnare: tracciare una linea definita da parametri
# il modulo pygame serve per disegnare, realizzare giochi ecc.
import pygame # il modulo pygame viene importato
pygame.init() # inizializza pygame
schermo=pygame.display.set_mode((640,480)) # fissa area di lavoro in 640x480
rino=5 # variabile necessaria per utilizzare il ciclo while
x=10
y=10 # x e y sono variabili del piano xy per far muovere il punto a partire da quelle coordinate
while rino==5: # ciclo infinito perchè è sempre vero che 5=5
for evento in pygame.event.get(): # definisco una variabile evento e la uso per gestire gli eventi in pygame
if evento.type == pygame.QUIT(): # se il tipo di evento è il QUIT() allora chiudo applicazione
pygame.quit()
elif evento.type == pygame.KEYDOWN: # se il tipo di evento è il KEYDOWN allora disegna tenendo giù il mouse
if evento.key == pygame.k_a:
schermo.fill((0,0,0))
pygame.draw.line(schermo,(100,100,100),(x,y),(60,60),3)
pygame.display.flip()
x=x+1
y=y+1 # cancella il disegno precedente
# salvare con nome linea.py ed eseguire: premendo a apparirà una linea
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Es.2 creare una finestra per disegnare: tracciare una cerchio definito da parametri
import pygame
pygame.init() # inizializza pygame
schermo = pygame.display.set_mode((640,480)) # fissa area di lavoro in 640x480
schermo.fill((0,0,0)) # stabilisce il colore dello schermo che si può modificare
pygame.draw.circle(schermo,(34,65,78),(180,180),80,4)
pygame.display.flip() # cancella il disegno precedente
# salvare con cerchio.py ed eseguire: apparirà un cerchio
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Nessun commento:
Posta un commento