At My Fingertips
Rapid Playground
Fino ad ora hai creato delle grafiche utilizzando un ciclo for per passare in rassegna gli elementi di una lista (in questo caso una lista di colori). Prova ora a confrontarti con una sfida un po' diversa...
Nello specifico proverai a scrivere il codice per costruire la grafica di un abete stilizzato come quello mostrato qui sotto.
Lo scopo di questa attività è di apprendere ad utilizzare una variante del ciclo for che non necessita di una lista ma ci permette di ripetere un insieme di istruzioni un numero di volte che possiamo specificare direttamente.
Con questa attività ti eserciterai:
Avrai notato che per l'Abete le parti che si ripetono, ovvero i rami che formano la chioma dell'albero, sono tutte esattamente uguali. Anche il colore è lo stesso!
Non avrebbe quindi senso utilizzare una lista per specificare molte volte lo stesso colore, come fatto in precedenza. Sarebbe meglio avere un modo per indicare al computer quante ripetizioni svolgere: è quello che imparerai a fare con questa attività.
Ma andiamo per piccoli passi, iniziando dai...
Iniziamo costruendo un triangolo isoscele che rappresenta una fila di rami dell'abete.
Il triangolo creato non è però orientato correttamente. Prova a sistemarlo utilizzando la funzione ruota.
Il passaggio successivo richiede di unire diversi rami in modo da formare la chioma dell'abete.
Come avrai intuito è a questo punto che entra in gioco il ciclo for!. Anziché però avere una lista di elementi da passare in rassegna, che non avrebbe senso in questo caso dato che i colori dei rami sono tutti uguali, utilizza invece la funzione range()
di Python. Un'altro motivo per utilizzare questa variante del ciclo for è che potrei voler ripetere del codice un gran numero di volte: immagina di dover creare una lista con mille volte lo stesso colore...
La funzione range() di Python
La funzione range
di Python è molto versatile: per il momento considera solo che grazie a questa funzione il codice del ciclo for verrà eseguito tante volte quante il numero fornito come argomento alla funzione (in realtà la funzione range
ritorna dei valori numerici che spesso potremo utilizzare per svolgere compiti ancora più complessi). In pratica se usiamo range(5)
il codice del ciclo for verrà eseguito 5
volte; se usiamo range(100)
il codice del ciclo for verrà eseguito 100
volte; se usiamo range(16)
il codice del ciclo for verrà eseguito 16
volte e così via.
Prova ad utilizzare un ciclo for per svolgere questo lavoro: completa le parti mancanti.
Nota: per il momento utilizziamo un trattino basso, _
dopo la parola for
, come nome per i valori numerici ritornati dalla funzione range, dato che qui non ci servono. In futuro potremo però aver bisogno di essi e quindi sarà importante utilizzare un nome sensato al posto del trattino.
Non ci resta ora che creare ed aggiungere il tronco per completare l'abete.
Quest'ultimo passaggio richiede che tu unisca tutto il codice per ottenere sempre l'abete, ma evitando di svolgere ad esempio molti import identici.
Svolgendo questa attività potresti aver notato che non era indispensabile utilizzare grafica_vuota per costruire la chioma, ma che si poteva semplicemente partire dal tronco, mettendoci poi sopra le varie file di rami. Entrambe le soluzioni sono in ogni caso corrette.
In questa attività ti sei esercitato a utilizzare il ciclo for per creare un abete con quattro file di rami, sfruttando una variante di questo costrutto che necessita della funzione range.
Hai quindi esercitato la capacità di individuare le parti simili nelle grafiche e nel codice, riconoscendo le modifiche necessarie da apportare per ottenere il risultato richiesto.
Hai potuto inoltre realizzare una grafica dove alcune parti sono ripetute mentre altre no.
Ti sei infine esercitato nella scrittura dei commenti che spiegano la funzione del tuo codice.
This activity has been created by Sulmoni and is licensed under CC BY-SA 4.0.
Ciclo for - Abete
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)