<jupyter_start><jupyter_text>Sottofunzioni<jupyter_code>def is_even(n) :
    if n%2 == 0 :
        return True
    else :
        return False<jupyter_output><empty_output><jupyter_text>eseguendo questo codice, non ritorna niente, perché abbiamo solamente definito la funzione is_even(), ma nessun la invoca<jupyter_code>i = 0
while i <= 10 :
    print( i, " numero ", is_even(i) )
    i = i + 1
i = 0
while i <= 10 :
    if is_even(i) :
        print(i, " pari")
    else :
        print(i, " dispari")
    i = i + 1
i = 0
while i <= 10 :
    print(i, " numero pari? >> ", is_even(i))
    i = i + 1
def stampa(nome, cognome="") :
    print("Mi chiamo ", nome, " ", cognome)
stampa( cognome="Campi", nome="Alessandro")
stampa( "Alessandro", "Campi")<jupyter_output>Mi chiamo  Alessandro   Campi
Mi chiamo  Alessandro   Campi<jupyter_text>esiste la possibilità di definire un valore di default del parametro, evitando di assegnarlo nella chiamata<jupyter_code>stampa( nome="Alessandro" )
print("Ciao")
print("Mondo")
print("Ciao", end="")
print("Mondo")
def puntoMedio(x1, y1, x2, y2) :
    xm = (x1+x2)/2
    ym = (y1+y2)/2
    return xm, ym
x1=0
y1=0
x2=4
y2=4
print( puntoMedio(x1, y1, x2, y2))<jupyter_output>(2.0, 2.0)<jupyter_text>L'elemento restituito è UN elemento con 2 valori  Ricorsione<jupyter_code>def fatt(n) :
    if n==0 :
        return 1
    return n*fatt(n-1)
n = 5

fatt(n)<jupyter_output><empty_output><jupyter_text>Stringhe<jupyter_code>s = "Alessandro"
print(s[0])<jupyter_output>A<jupyter_text>Le stringhe in Python ammettono uso di parentesi [] come quando trattiamo con gli array<jupyter_code>print(s[-1])
print(s[1:4])<jupyter_output>les<jupyter_text>NB: estremo sx incluso, estremo dx escluso<jupyter_code>print(s[4:1])<jupyter_output><jupyter_text>4:1 ovviamente non esiste<jupyter_code>print(s[-4: -1])<jupyter_output>ndr<jupyter_text>Posso percorrere solo da sinistra a destra, e non viceversa<jupyter_code>s = "Alessandro"
a = s # ho copiato l'indirizzo di s in a

print(s)
print(a)

s = "Campi" # memoria viene liberata e s punta ad un nuovo indirizzo contenente "Campi"
print(s)
print(a)
esiste = 'a' in "Alessandro"
print(esiste)
esiste = 'al' in "Alessandro" # case-sensitive
print(esiste)
esiste = 'ae' in "Alessandro"
print(esiste)
esiste = 'a' in "Alessandro" and 'e' in "Alessandro"
print(esiste)
a = "ba"
b = "na"
c = a + b*2
print(c)
len(c) # return length of a string
print(c.upper())
print(c)
print(c.upper().lower())<jupyter_output>banana<jupyter_text>Oggetti mutabili e immutabili  Tuple<jupyter_code>a = (3, 67, 8)
print(a)
print(a[0])
print(a[-1])
a = (3, 'alex', 8)
print(a)
print(a[0])
print(a[1])
print(a[2])
print(a[1][3])
a = (3, 'alex', 8, ("Campi", "Siro"))
print(a[3])
print(a[3][0])
print(len(a[3]))<jupyter_output>2<jupyter_text>Lunghezza calcolata è superficiale<jupyter_code>a[0]=8<jupyter_output><empty_output><jupyter_text>Le tuple sono immutabili<jupyter_code>a=8
print(a)<jupyter_output>8<jupyter_text>la tupla precedente viene liberata nella heap e di seguito riciclata  Liste<jupyter_code>a = [3, "alex", 8, ("Campi", "Siro")] # al posto di (), scrivo [], sono mutabili!
print(a)
a[0]=9
print(a)
a.append(0)
print(a)
a.append(["ciao", "mondo"])
print(a)
a.append(("test"))
print(a)<jupyter_output>[9, 'alex', 8, ('Campi', 'Siro'), 0, ['ciao', 'mondo'], 'test']<jupyter_text>Loop - For<jupyter_code>seq = [1, 2, 3, 4, 5]
for n in seq :
    print("Il quadrato di ", n, ' è: ', n**2)
seq = [1, [2, 4], ["ciao", "mondo"], 4, 5]
for n in seq :
    print('Il doppio di', n, 'è: ', n*2)
for n in range(10) :
    print('Il doppio di', n, 'è', n*2)
for n in range(5,10) :
    print('Il doppio di', n, 'è', n*2)
for n in range(5, 10, 2) :
    print('Il doppio di', n, 'è', n*2)
for n in range(4, 10, 2) :
    print('Il doppio di', n, 'è', n*2)
for n in "ciao" :
    print(n)<jupyter_output>c
i
a
o<jupyter_text>Matrici --> Lista annidata<jupyter_code>Matrice = [ [1,2,3], [4,5,6], [7,8,9] ]
print(Matrice)

for i in range(3) :
    print(Matrice[i])
for i in range(3) :
    for j in range(3) :
        print(Matrice[i][j], end=" ")
    print()
num_r = 3
num_c = 4
m = []
for i in range(num_r) :
    n = []
    for j in range(num_c) :
        n.append( input("Inserire elemento: ") )
    m.append(n)

print("m: ", m)
y = [x**2 for x in range(10)]
print(y)
y = []
for x in range(10) :
    y.append(x**2)
    
print(y)
def square(n) :
    return n**2
squares = map(square, range(10))
print(list(squares))
help(map)
print([square(x) for x in range(10)])
def is_even(n) :
    if n%2 == 0 :
        return True
    else :
        return False
even = filter(is_even, range(10))
print(list(even))
help(filter)
filter(None, is_even(range(10)))
num = [1, 2, 3, 4, 5]
filter( None, is_even(num))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1730285234899329, 'fraction_numerical': 0.03208892617449664, 'mean_word_length': 4.564760793465577, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 53, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '15', 'dir': 'jupyter-structured-clean-dedup', 'id': '248639', 'license': 'MIT', 'n_tokens_mistral': 2198, 'n_tokens_neox': 2133, 'n_words': 507, 'path': 'Lezione 02 del 15-03-2022.ipynb', 'repo_name': 'AmadeusZhang/Corso-Python-IngMat', 'size': '4768'}