Iterazione determinata 16 Marzo 2018 - michael.lodi2.web...

36
Laboratorio di Python Iterazione determinata Lab05 16 Marzo 2018

Transcript of Iterazione determinata 16 Marzo 2018 - michael.lodi2.web...

Page 1: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Laboratorio di PythonIterazione determinata

Lab05

16 Marzo 2018

Page 2: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Outline

Correzione esercizi per oggi

Turtle

Uso dell’indice dell’iterazione

Esercizi per casa

Page 3: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Outline

Correzione esercizi per oggi

Turtle

Uso dell’indice dell’iterazione

Esercizi per casa

Page 4: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio 1 per casa

Scrivere una funzione che prende come parametri due tuple t1 e t2 e unnumero intero n. La prima tupla e da modificare aggiungendo tutti ivalori della seconda tupla alla posizione n. La funzione restituisce la tuplaaggiornata. Es. se t1 = (1, 3, 2), t2 = (9, 7), n = 1 restituira(1, 9, 7, 3, 2).

1 def i n s e r i s c i ( t1 , t2 , n ) :2 return t1 [ : n]+ t2+t1 [ n : ]

Page 5: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio 1 per casa

Scrivere una funzione che prende come parametri due tuple t1 e t2 e unnumero intero n. La prima tupla e da modificare aggiungendo tutti ivalori della seconda tupla alla posizione n. La funzione restituisce la tuplaaggiornata. Es. se t1 = (1, 3, 2), t2 = (9, 7), n = 1 restituira(1, 9, 7, 3, 2).

1 def i n s e r i s c i ( t1 , t2 , n ) :2 return t1 [ : n]+ t2+t1 [ n : ]

Page 6: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio 2 per casa

Scrivere un programma che prese due stringhe in input le stampi inordine alfabetico, oppure ne stampi solo una delle due se sono identiche.

1 s1 = input ( ” Prima s t r i n g a : ” )2 s2 = input ( ” Seconda s t r i n g a : ” )3

4 i f s1 < s2 :5 p r i n t ( s1 , s2 )6 e l i f s1 > s2 :7 p r i n t ( s2 , s1 )8 e l s e :9 p r i n t ( s1 )

Page 7: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio 2 per casa

Scrivere un programma che prese due stringhe in input le stampi inordine alfabetico, oppure ne stampi solo una delle due se sono identiche.

1 s1 = input ( ” Prima s t r i n g a : ” )2 s2 = input ( ” Seconda s t r i n g a : ” )3

4 i f s1 < s2 :5 p r i n t ( s1 , s2 )6 e l i f s1 > s2 :7 p r i n t ( s2 , s1 )8 e l s e :9 p r i n t ( s1 )

Page 8: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio 3 per casa

Scrivere una funzione che stampi a video

I le consonanti della stringa passata come parametro

I il numero di vocali della stessa stringa

La funzione non stampa e non conteggia spazi, punteggiatura, simbolivari...

1 import s t r i n g2 def c o n s n v o c ( s ) :3 v o c a l i = ” aeiouAEIOU ”4 n v o c a l i = 05 p r i n t ( ” C o n s o n a n t i : ” )6 f o r l i n s :7 i f l i n v o c a l i :8 n v o c a l i = n v o c a l i + 19 e l i f l i n s t r i n g . a s c i i l e t t e r s : #so g i a '

che non e ' una v o c a l e10 p r i n t ( l )11 p r i n t ( ”Numero d i v o c a l i : ” , n v o c a l i )

Page 9: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio 3 per casa

Scrivere una funzione che stampi a video

I le consonanti della stringa passata come parametro

I il numero di vocali della stessa stringa

La funzione non stampa e non conteggia spazi, punteggiatura, simbolivari...

1 import s t r i n g2 def c o n s n v o c ( s ) :3 v o c a l i = ” aeiouAEIOU ”4 n v o c a l i = 05 p r i n t ( ” C o n s o n a n t i : ” )6 f o r l i n s :7 i f l i n v o c a l i :8 n v o c a l i = n v o c a l i + 19 e l i f l i n s t r i n g . a s c i i l e t t e r s : #so g i a '

che non e ' una v o c a l e10 p r i n t ( l )11 p r i n t ( ”Numero d i v o c a l i : ” , n v o c a l i )

Page 10: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Outline

Correzione esercizi per oggi

Turtle

Uso dell’indice dell’iterazione

Esercizi per casa

Page 11: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

modulo turtle

I Immaginiamo di essere una tartaruga che cammina su un pianocartesiano.

I Sotto la pancia abbiamo una penna, che lascia dunque una tracciamentre camminiamo.

I Possiamo muoverci e ruotare (o anche teletrasportarci su un puntospecifico del piano).

I Possiamo anche sollevare la penna per non lasciare il segno.

NB: non salvare il file come turtle.py

Cosa accade?

1 import t u r t l e2

3 t u r t l e . f o r w a r d ( 1 0 0 )

Page 12: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

modulo turtle

I Immaginiamo di essere una tartaruga che cammina su un pianocartesiano.

I Sotto la pancia abbiamo una penna, che lascia dunque una tracciamentre camminiamo.

I Possiamo muoverci e ruotare (o anche teletrasportarci su un puntospecifico del piano).

I Possiamo anche sollevare la penna per non lasciare il segno.

NB: non salvare il file come turtle.py

Cosa accade?

1 import t u r t l e2

3 t u r t l e . f o r w a r d ( 1 0 0 )

Page 13: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

modulo turtle: funzioni

I turtle.forward(distance)

I turtle.backward(distance)

I turtle.right(angle)

I turtle.left(angle)

I turtle.pendown()

I turtle.penup()

I turtle.goto(x, y)

I turtle.setheading(to angle)

I e molte altre:https://docs.python.org/3/library/turtle.html

Page 14: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

Disegnare, procedendo in senso antiorario, un quadrato di lato 100 con latartaruga, senza usare il for.

Page 15: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

1 import t u r t l e2 t u r t l e . f o r w a r d ( 1 0 0 )3 t u r t l e . l e f t ( 9 0 )4 t u r t l e . f o r w a r d ( 1 0 0 )5 t u r t l e . l e f t ( 9 0 )6 t u r t l e . f o r w a r d ( 1 0 0 )7 t u r t l e . l e f t ( 9 0 )8 t u r t l e . f o r w a r d ( 1 0 0 )

Potrebbe aver senso usare un for

Page 16: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Intermezzo: ripeti n volte

Posso usare i range (che vedremo meglio in seguito) per far sı cheun’istruzione venga eseguita un numero determinato (finito) di volte.

Cosa stampa questo codice?

1 f o r i i n range ( 4 ) :2 p r i n t ( ” Ciao ” )

Page 17: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

Disegnare, procedendo in senso antiorario, un quadrato di lato 100 con latartaruga. Usare il for

Page 18: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

1 import t u r t l e2 f o r i i n range ( 4 ) :3 t u r t l e . f o r w a r d ( 1 0 0 )4 t u r t l e . l e f t ( 9 0 )

Page 19: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

Usando il ciclo for:

I Scrivere un programma per disegnare un triangolo regolare.

I Poi per disegnare un pentagono regolare.

I Poi per disegnare una stellina a 5 punte:

Page 20: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

Triangolo:

1 f o r i i n range ( 3 ) :2 t u r t l e . f o r w a r d ( 1 0 0 )3 t u r t l e . l e f t ( 1 2 0 ) #a n g o l o e s t e r n o !

Pentagono:

1 f o r i i n range ( 5 ) :2 t u r t l e . f o r w a r d ( 1 0 0 )3 t u r t l e . l e f t ( 7 2 )

Stellina:

1 f o r i i n range ( 5 ) : #ho 5 l a t i2 t u r t l e . f o r w a r d ( 1 0 0 )3 t u r t l e . r i g h t ( 1 4 4 ) #dopp io d e l pentagno : s a l t o

un v e r t i c e

Page 21: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

Scrivere una funzione che prende come parametri: il numero di lati e lalunghezza del lato e disegna il poligono regolare corrispondente.Controllare che il numero di lati sia maggiore di 2.

Page 22: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

1 import t u r t l e2 def p o l i g o n o r e g o l a r e ( n , l ) :3 i f n>2:4 f o r i i n range ( n ) :5 t u r t l e . f o r w a r d ( l )6 t u r t l e . l e f t (360/ n )

Page 23: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

Scrivere un programma che disegna una spirale quadrata.

Page 24: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

1 import t u r t l e2 d i s t = 103 f o r i i n range ( 5 0 ) :4 t u r t l e . f o r w a r d ( d i s t )5 t u r t l e . r i g h t ( 9 0 )6 d i s t = d i s t +5

Page 25: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Intermezzo: range

Tipo di sequenza immutabile.Rappresentano intervalli sui numeri interi

I range(n) rappresenta l’intervallo su interi [0, n[

I range(a,b) rappresenta l’intervallo su interi [a, b[

I range(a, b, s), se s > 0, rappresenta l’intervallo su interi[a, a + s, a + 2s, ..., a + is] in cui a + is < b

I range(a, b, s), se s < 0, rappresenta l’intervallo su interi[a, a + s, a + 2s, ..., a + is] (n.b. s negativo!) in cui a + is > b

Per vedere i range in forma estesa, possiamo convertirli in tuple

>>> tuple(range(10))

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

>>> tuple(range(1,6))

(1, 2, 3, 4, 5)

>>> tuple(range(0,30,5))

(0, 5, 10, 15, 20, 25)

>>> tuple(range(1,10,2))

(1, 3, 5, 7, 9)

>>> tuple(range(1,10,-2))

()

>>> tuple(range(10,1,-2))

(10, 8, 6, 4, 2)

>>> tuple(range(0))

()

>>> tuple(range(1,0))

()

Page 26: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Intermezzo: range

Tipo di sequenza immutabile.Rappresentano intervalli sui numeri interi

I range(n) rappresenta l’intervallo su interi [0, n[

I range(a,b) rappresenta l’intervallo su interi [a, b[

I range(a, b, s), se s > 0, rappresenta l’intervallo su interi[a, a + s, a + 2s, ..., a + is] in cui a + is < b

I range(a, b, s), se s < 0, rappresenta l’intervallo su interi[a, a + s, a + 2s, ..., a + is] (n.b. s negativo!) in cui a + is > b

Per vedere i range in forma estesa, possiamo convertirli in tuple

>>> tuple(range(10))

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

>>> tuple(range(1,6))

(1, 2, 3, 4, 5)

>>> tuple(range(0,30,5))

(0, 5, 10, 15, 20, 25)

>>> tuple(range(1,10,2))

(1, 3, 5, 7, 9)

>>> tuple(range(1,10,-2))

()

>>> tuple(range(10,1,-2))

(10, 8, 6, 4, 2)

>>> tuple(range(0))

()

>>> tuple(range(1,0))

()

Page 27: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Outline

Correzione esercizi per oggi

Turtle

Uso dell’indice dell’iterazione

Esercizi per casa

Page 28: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Indice nel for

Cosa stampa questo codice?

1 f o r i i n range ( 1 0 0 ) :2 p r i n t ( i )

E questo?

1 f o r i i n range ( 1 , 1 0 1 ) :2 p r i n t ( i )

E questo?

1 f o r i i n range ( 0 , 1 0 0 , 2 ) :2 p r i n t ( i )

Page 29: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Indice nel for

Cosa stampa questo codice?

1 f o r i i n range ( 1 0 0 ) :2 p r i n t ( i )

E questo?

1 f o r i i n range ( 1 , 1 0 1 ) :2 p r i n t ( i )

E questo?

1 f o r i i n range ( 0 , 1 0 0 , 2 ) :2 p r i n t ( i )

Page 30: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Indice nel for

Cosa stampa questo codice?

1 f o r i i n range ( 1 0 0 ) :2 p r i n t ( i )

E questo?

1 f o r i i n range ( 1 , 1 0 1 ) :2 p r i n t ( i )

E questo?

1 f o r i i n range ( 0 , 1 0 0 , 2 ) :2 p r i n t ( i )

Page 31: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

Scrivere una funzione che prende come parametro un numero n e nestampa la tabellina (da 0 a 10). Esempio tabellina(2) stampa:

2x0=0

2x1=2

2x2=4

2x3=6

2x4=8

2x5=10

2x6=12

2x7=14

2x8=16

2x9=18

2x10=20

Page 32: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

1 def t a b e l l i n a ( n ) :2 f o r i i n range ( 0 , 1 1 ) :3 p r i n t ( n , ” x” , i , ”=” , n∗ i , sep= ' ' )

Page 33: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

Scrivere una funzione che stampa il Triangolo di Floyd di dimensione n,passato come parametro. L’i-esima riga del triangolo e una tupla di inumeri naturali. Es. con n = 5 il triangolo sara

1 ( 1 , )2 ( 2 , 3)3 ( 4 , 5 , 6)4 ( 7 , 8 , 9 , 10)5 ( 1 1 , 12 , 13 , 14 , 15)

Suggerimento: notare che il primo elemento di ogni riga corrisponde alnumero della riga precedente (partendo a contare le righe da 1) sommatoal primo elemento della riga precedente.

Page 34: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizio

1 def Floyd ( n ) :2 pe = 1 #primo e lemento3 #f o r p e r o g n i ” r i g a ” d e l t r i a n g o l o ( da 1 a n )4 f o r r i g a i n range ( 1 , n+1) :5 #primo e lemento r i g a s u c c e s s i v a6 pes = pe + r i g a7 #r i c o r d a : u l t i m o e lemento e s c l u s o8 p r i n t ( tup le ( range ( pe , pes ) ) )9 #a g g i o r n o pr ima d i p a s s a r e a l l a r i g a s u c c .

10 pe = pes

Page 35: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Outline

Correzione esercizi per oggi

Turtle

Uso dell’indice dell’iterazione

Esercizi per casa

Page 36: Iterazione determinata 16 Marzo 2018 - michael.lodi2.web ...michael.lodi2.web.cs.unibo.it/Slide/Lab05.pdf · Esercizio 1 per casa Scrivere una funzione che prende come parametri due

Esercizi per casa (per il 20/03/2018 ore 8:59)(Mail: Lab05-..........)

1. Scrivere una funzione che restituisce True se una stringa passatacome parametro e palindroma (senza considerare gli spazi, lapunteggiatura ma facendo distinzione tra maiuscole e miniscole: es“Anna” non e palindroma, “ANGOLO BAR, A BOLOGNA!” sı).Usare il ciclo for.

2. Scrivere una funzione che presi due numeri come parametri dellafunzione, restituisca il Massimo Comun Divisore (MCD) tra i duenumeri. Usare il ciclo for.

3. Scrivere una funzione che preso come parametro un numero n

(controllare che n>2) restituisce il piu piccolo c (c>=2) tale cheMCD(n,c) == 1. Usare il ciclo for e la funzione dell’esercizio 2.

4. Scrivere una funzione con un parametro n. Se n>=7, disegna una”stellina” a n punte. Si tratta di una generalizzazione della versionea 5 punte. NB! Il numero dei lati da ”saltare” puo essere sceltocome un numero coprimo con n (e dunque si puo usare la funzionedell’esercizio 3).