Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


dispensa liste tuple python, Dispense di Elementi di Informatica

dispensa corso python ingegneria

Tipologia: Dispense

2019/2020

Caricato il 16/09/2020

tarik-rahioui
tarik-rahioui 🇮🇹

4.3

(8)

8 documenti

1 / 42

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Esercitazione 7
Liste, tuple, code, stack
e funzioni ricorsive
Pierluigi Roberti
Federico Monegaglia
Danilo Severina
AA 2018-2019
Dipartimento di Ingegneria
Civile, Meccanica ed Ambientale
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a

Anteprima parziale del testo

Scarica dispensa liste tuple python e più Dispense in PDF di Elementi di Informatica solo su Docsity!

Esercitazione 7

Liste, tuple, code, stack

e funzioni ricorsive

Pierluigi Roberti

Federico Monegaglia

Danilo Severina

AA 2018- 2019

Dipartimento di Ingegneria

Civile, Meccanica ed Ambientale

[email protected]

Struttura programma:

definizione funzioni e

invocazione funzioni

def main():

miafunz( 2 , 5 )

istruzione

def miafunz(param1, param2):

istruzione

istruzione

main()

Definizione della funzione miafunz Invocazione della funzione miafunz Programma: 1 sola riga di codice Invocazione della funzione principale main Definizione della funzione main

len (lst) → valore (int) restituisce lunghezza lista max (lst) → valore rerestituisce valore massimo della lista min (lst) → valore restituisce valore minimo della lista sorted (lst) → lista Restituisce una lista con gli elementi di lst ordinati Uso: lstB = sorted(lstA) Nota: lst.sort() Ordina la lista lst !!ALTERA LA LISTA!!

Operazioni su liste

Operazioni su tuple

len (tpl) → valore (int) restituisce lunghezza tupla max (tpl) → valore rerestituisce valore massimo della tupla min (tpl) → valore restituisce valore minimo della tupla sorted (tpl) → lista ordinata Restituisce una lista con gli elementi di tpl ordinati Uso: lst = sorted(tlp)

Modulo random

import random random. random () → valore (float) restituisce un numero casuale in intervallo [0.0, 1.0 ) random. randrange (stop) → valore (int) restituisce un numero intero casuale in intervallo [0, stop ) random. randrange (start, stop[, step]) → valore (int) restituisce un numero intero casuale in intervallo range(start, stop, step) random. randint (a, b) → valore (int) restituisce un numero casuale in intervallo [a, b ] equivale a random.randrange(a, b+1). random. choice (sequenza) → valore restitusce un valore casuale presente nella sequenza Il modulo contiene molte altre funzioni per generazioni causali: https://docs.python.org/ 3. 6 /library/random.html

Lista vs Tupla

lst = list()

tpl = ()

print(lst)

print(tpl)

print(id(lst))

print(id(tpl))

lst.append(1)

tpl = tpl + (2,)

print(lst)

print(tpl)

print(id(lst))

print(id(tpl))

f_lista(lst)

f_tupla(tpl)

print(lst)

print(tpl)

print(id(lst))

print(id(tpl))

[]
[ 1 ]
[ 1 , 3 ]

Output

Lista

Modificata

Tupla

NON

Modificata

def f_lista(l):

l.append(3)

def f_tupla(t):

t = t + (4, )

Esercizio 1

• Creare una lista di nelem=30 elementi (punti)

• Ogni elemento è una tupla di due valori (punti[i] = (x, y))

• I valori x e y: interi compresi tra - 100 e 100

• Considerare la lista punti come un insieme di punti in

uno spazio 2 D

• Cercare le coordinate del punto più lontano dall’origine

  • Cercare massimo in una tupla

• Stampare a video le coordinate di questo punto

punti: [ punto_ 0 , punto_ 1 , ... punto_i, ... punto_nelem- 1 ] punto_ 0 : (x 0 , y 0 ) punto_ 1 : (x 1 , y 1 ) punto_i: (xi, yi) punti: [ (x 0 , y 0 ), (x 1 , y 1 ), ... (xi, yi), ... ]

import math import random def main(): listaPunti = genera_punti( 30 , - 100 , 100 ) # stampare variabile listaPunti puntoPiuLontanoOrigine = cerca_punto_massima_distanza(listaPunti) # stampare variabile puntoPiuLontanoOrigine distanzaMassima = massima_distanza_tra_punti(listaPunti) # stampare variabile distanzaMassima def genera_punti(nelem, vmin, vmax): lst = [] _# inizializzare lst aggiungendo delle tuple composte di 2 elementi (x,y)

con x e y con valori casuali compresi tra - 100 e +_

return lst def distanza(puntoA, puntoB): _# return distanza tra puntoA e puntoB – ogni punto tupla di 2 elementi

puntoA[0] rappresenta coordinata x del puntoA

puntoB[1] rappresenta coordinata y del puntoB_

def cerca_punto_massima_distanza(listaPunti): _# scorro la lista e per ogni elemento (punto) calcolo la distanza dall'origine

invocando opportunamente la funzione distanza

devo memorizzare la massima distanza e ritornare il punto che ha questa massima

distanza_ main()

Esercizio1 - struttura programma

Algoritmo di ricerca – v

d_max ← Distanza del primo elemento

p_max ← Primo elemento di lista/tupla

Per ogni elemento di lista/tupla

Calcola dist di elemento

Se dist > d_max

d_max ← dist

p_max ← elemento

# d_max: valore distanza desiderato

# p_max: punto desiderato

← Significa assegnamento

Algoritmo di ricerca - generale

massimo ← Relativo a primo elemento di

struttura

Per ogni elemento di struttura

Se elemento > massimo

massimo ← elemento

# massimo contiene il valore desiderato

← Significa assegnamento

Algoritmo di ricerca - generale

i_max= 0 # Primo elemento di struttura

Per ogni indice i ( 0 – len struttura)

Se valore in posizione i >

valore in posizione i_max

i_max ← i

# i_max: indice del valore desiderato

← Significa assegnamento

● Controllare se esiste una coppia di punti la cui distanza

è minore di una soglia t

● Stampare a video «si» se esiste, «no» altrimenti

def esiste_distanza_minore(lst, t) ▶ Controlla se esiste una coppia di punti la cui distanza è minore di t ▶ Parametri: lst (lista di liste), soglia t (float) ▶ Return: True (se esiste coppia di punti), False (altrimenti)

Esercizio 1 – estensione

Esercizio 2

Scrivere un programma per la ricerca dei massimi relativi

nell’intervallo - 5 .0, 5.0 della funzione

y = x

– 4x + 10 cos(2x)

● Stampare a video i valori (x, y) della funzione nei punti

di massimo relativo

● Note:

● Non serve valutare derivata prima

● Considerare un insieme di punti nell’intervallo ascisse

(- 5. 0 , 5. 0 ) distanziati di 0. 01

● Considerare la funzione come una successione di punti

(ordinata, y): ogni punto y è generato valutando la funzione

nel punto x ( chiamando la funzione valuta_f(x) )

● Massimo relativo

● Se il valore precedente e seguente sono minori

● f(xi) > f(xi-step) E f(xi) > f(xi+step)

● f(xi) > f(xi- 1 ) E f(xi) > f(xi+ 1 )

Esercizio2 - struttura programma

import math import matplotlib.pyplot as plt def main(): valori = campioni(-5.0, 5.0) stampa_lista(valori) massimi_relativi = cerca_massimi_relativi(valori) stampa_lista(massimi_relativi) #EXTRA: stampo grafico funzione plt.plot(valori) plt.show() def valuta_f(x): #ritornare il valore della funzione calcolata nel punto x def campioni(xmin, xmax): listaVal = [] #aggiungere alla lista una tupla con coordinate x e y = valuta_f(x) return listaVal def cerca_massimi_relativi(lst): #cerca nella lista se esiste un punto con valore #maggiore del punto che precede e del punto che segue max_rel = [] #...scorro la lista di punti return max_rel def stampa_lista(lst): #stampa lista di tuple main() 2 massimi relativi

Da Lab06 - Esercizio 7

● funzione valuta_f ▶ Valuta il valore della funzione in un punto x ▶ Input: coordinata x (float) ▶ Return: valore della funzione in x(float) ● funzione campioni ▶ Calcola i valori della funzione f nei punti ▶ Input: xmin (float), xmax (float) ( per l’esercizio - 10. 0 , 10. 0 ) ▶ Return: lista (float) [y 0 , y 1 , y 2 , …] ● funzione cerca_massimi_relativi ▶ Ricerca i punti di massimo relativo ▶ Input: lista (valori della funzione) ▶ Return: lista (valori massimi relativi – valori y) ● funzione stampa_lista ▶ Stampa insieme dei valori ▶ Input: lista ▶ Return: nulla ▶ Vedi Es 6. 1

import math