Coding for KidsCoding for Kids
Livelli CreativiSfideGuida per Insegnanti
Vota per le funzionalità
Corso Avanzato di Sviluppo Python
Capitolo
>
Livello

Gestione delle eccezioni
Clausola else

Obiettivo

Prendi i materiali da riparazione e smistali, poi scarta i rifiuti indesiderati utilizzando il blocco else con la gestione delle eccezioni.

Alcuni materiali per riparazioni sono stati immagazzinati in cima all'edificio, e vengono utilizzati per riparare il tetto dopo tempeste o per usura generale. Alcuni sono stati consegnati di recente e sono ancora confezionati in involucri e contenitori, altri sono stati immagazzinati per molto tempo e sono stati accatastati insieme ai rifiuti. Sarebbe una buona idea smistare i materiali, conservarli correttamente e scartare immondizia e rifiuti.

A causa della natura disorganizzata dei materiali, è probabile che si verifichino errori. Puoi gestirli con il blocco di codice try / except, tuttavia può essere un po' complicato se non sei familiare con gli errori che potresti incontrare. Tuttavia, puoi ampliare i tuoi strumenti di gestione delle eccezioni aggiungendo il blocco else. Questo ti consente di eseguire del codice se il blocco except non viene eseguito, permettendoti di semplificare il codice ed è particolarmente indicato per identificare e risolvere errori.

Per iniziare, dovresti entrare nel magazzino a sinistra e dirigerti verso il segno a X luminoso. Questa stanza conserva le tegole usate per riparare il tetto. Usa la funzione collect() per raccogliere la costante di lista chiamata shingles.

La lista probabilmente contiene diversi materiali spazzatura mischiati che devono essere rimossi, inoltre sono conservati in sei (6) compartimenti differenti, ognuno con la propria quantità di materiali. Devi avere tutti i materiali consolidati in un unico mucchio. Crea una variabile chiamata red_storage per contenere tutti i materiali e una lista chiamata junk dove potrai collocare tutti i rifiuti.

Normalmente identificheresti i materiali, li convertiresti in numeri interi utilizzando int() e li memorizzeresti in una variabile per poterli mettere via. Ma, come probabilmente ti aspetti, dato ciò che hai già incontrato nei livelli precedenti del capitolo e l'argomento di questo esercizio, è inevitabile che si verifichi un errore.

for x in range(6): player.speak(int(shingles[x])) red_storage+=int(shingles[x])

Questo purtroppo genererà un Value Error, poiché alcuni degli elementi nella lista non sembrano essere dei numeri. Per rimediare a questo problema puoi utilizzare i blocchi di codice try / except e else per smistare i materiali. Utilizzando il blocco else trasformiamo effettivamente il blocco except in un filtro che elimina gli elementi indesiderati dalla lista, mentre il blocco else cattura e trasferisce gli elementi validi nella variabile che abbiamo creato.

for x in range(6): try: player.speak(int(shingles[x])) except: player.speak("Item %s is junk" % (x)) junk.append(shingles[x]) else: red_storage+=int(shingles[x])

Con questo la variabile red_storage contiene tutte le tegole utilizzabili, mentre tutta l'immondizia è stata aggiunta alla lista junk. Dirigiti verso il segno a X dorato nel magazzino a sinistra in cui ti trovi, e usa la funzione write() per annotare il numero di tegole pronte per essere immagazzinate, in questo modo: await player.write("There are %s shingles ready for use in storage" % (red_storage)). Successivamente, vai verso il segno a X scuro sul tappeto rosso e usa la funzione place() per depositare la variabile red_storage nella cassa.

Una volta completato questo compito, dirigiti verso il magazzino a destra: questa stanza conserva tavole di legno e materiali necessari per riparare il tetto e le strutture delle pareti. Dirigiti verso il segno a X scuro sul tappeto verde e usa la funzione collect() per prendere una costante di lista chiamata planks_set dalla cassa; questa lista contiene tavole già depurate da ogni rifiuto. Dirigiti verso il segno a X luminoso accanto ad essa e usa nuovamente la funzione collect() per prendere un'altra costante di lista chiamata shipment, questi sono materiali per tavole che sono stati recentemente spediti e contengono ancora qualche rifiuto.

Proprio come nella stanza precedente, la lista shipment probabilmente contiene diversi materiali spazzatura mischiati che devono essere rimossi. Ancora una volta, sono conservati in sei (6) compartimenti differenti, ognuno con la propria quantità di materiali. Crea una variabile chiamata blue_storage per contenere tutti i materiali in modo da consolidarli in un unico mucchio. Come prima, i materiali di scarto verranno depositati nella lista junk.

Per le tavole, converte e aggiunge tutti i materiali utili presenti nella lista shipment alla lista planks_set, per poi consolidarli, usando int(), nella variabile blue_storage. Tuttavia, come prima, si possono verificare errori.

for y in range(6): planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) blue_storage+=int(planks_set[y])

Questa volta puoi aspettarti un Type Error, che si verifica quando provi ad aggiungere numeri e stringhe insieme. Questo può essere risolto utilizzando nuovamente i blocchi di codice try / except e else: il blocco try esegue la somma delle liste, il blocco except filtra i rifiuti dalla lista e il blocco else aggiunge le tavole alla variabile blue_storage.

for y in range(6): try: planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) except: player.speak( "Item %s is junk. Slot only has %s items" % (y,planks_set[y])) junk.append(shipment[y]) else: blue_storage+=int(planks_set[y])

Ora che la variabile blue_storage è popolata, puoi documentare e immagazzinare tutte le tavole di legno. Dirigiti verso il segno a X dorato nel magazzino a destra in cui ti trovi, rivolgi lo sguardo verso il tavolo e usa la funzione write() per annotare i materiali consolidati, in questo modo: await player.write("There are %s planks ready for use in storage" % (blue_storage))

Per finalizzare il livello, dirigiti verso il segno a X scuro sul tappeto blu e usa la funzione place() per depositare la variabile blue_storage nella cassa. Poi, dirigiti verso il segno a X scuro sul tappeto viola nella camera centrale e usa la funzione place() per smaltire la lista junk nello scomparto dei rifiuti, completando così il tuo compito.

Libro del Codice