Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Dubbio utilizzo di %

s
susannacifani (4000 points)
2 21 53
in HW6 obbligatorio by (4.0k points)
Salve, andando avanti con l'hw, mi sono bloccata sull'utilizzo del modulo (%). Quello che vorrei fare è prendere tutti i valori presenti in una lista e fare il modulo per ognuno di essi (tranne l'ultimo elemento).

Ad esempio, se io ho

lista = [(5, 5, 23, 23, (0, 0, 255)),
 (10, 10, 21, 21, (255, 0, 0)),
 (15, 15, 21, 21, (0, 255, 0)),
 (20, 20, 21, 21, (255, 255, 0)),
 (24, 24, 21, 21, (0, 255, 255))]

e voglio eseguire il modulo su (5, 5, 23, 23), (10, 10, 21, 21), ecc. come posso fare ad accedere ai vari elementi senza che mi dia errore? Perché giustamente se faccio il modulo della lista, mi dà errore.

Grazie in anticipo.
334 views

4 Answers

MRinaudo (3660 points)
22 40 50
by (3.7k points)

Ciao  @susannacifani ,

evita di inserire parti del tuo codice qui sul forum, non è consentito e i tuoi colleghi potrebbero copiare.

Tornando alla tua domanda, potresti iterare ogni singola tupla della tua lista, utilizzando le list slicing (o in questo caso tuple slicing), così escludendo l'ultimo elemento nelle tue iterazioni.

Spero di esserti stato di aiuto smiley.

Fammi sapere!

Saluti.

s
susannacifani (4000 points)
2 21 53
by (4.0k points)
No ma quello è l'output di un calcolo che esegue il mio codice, non è una parte del codice. Comunque lo slicing sono riuscita a farlo, solamente che mi resta sempre il problema di non riuscire ad accedere ai valori di ogni lista presente nella lista (per poter poi fare il modulo): ad esempio se itero ogni singola tupla della tua lista, utilizzando lo slicing, mi ritorna la lista precedente senza appunto l'ultima tupla. solamente che arrivata a questo punto non saprei come fare il modulo di ogni valore.

Grazie.
MRinaudo (3660 points)
22 40 50
by (3.7k points)
Allora, come hai detto tè, devi fare il modulo per ogni singolo elemento delle tuple nella tua lista.

Per esempio, il modulo lo dovresti fare su 5, 5, 23, 23,10, 10, 21, 21.

Potresti iterare su ogni tupla della lista, e poi su ogni elemento della stessa tupla tranne l'ultimo.

Potresti usare due cicli diversi: il primo itera gli elementi della lista (le intere tuple), il secondo sugli elementi delle tuple tranne l'ultimo.
e
eduard_lisnic (870 points)
0 4 11
by (870 points)
Potresti fare un for sulla lista, accedendo così a ciascuna tupla, e per ognuna di esse fare il modulo dei suoi primi 4 elementi. Ricorda che le tuple sono immutabili quindi dovresti creare una nuova lista con le tuple risultanti.
s
susannacifani (4000 points)
2 21 53
by (4.0k points)
Il for sulla lista sono riuscita a farlo (e ho realizzato una nuova lista identica, solamente che non ha la tupla finale che troviamo in ogni lista). Il problema è che non mi fa eseguire il modulo perché appunto mi dice che sulle liste non posso utilizzare %.
e
eduard_lisnic (870 points)
0 4 11
by (870 points)
Se ho capito bene devi fare il modulo di ciascun valore nella tupla, tranne del colore. Una volta che hai fatto il for, per ciascuna tupla puoi fare per esempio tupla[0] per accedere al primo valore, calcolarne il modulo , e poi inserirlo in una nuova tupla (con i valori che hai trovato) da appendere alla lista risultante.
MRinaudo (3660 points)
22 40 50
by (3.7k points)

In questo caso devi iterare su ogni elemento della tua nuova lista, e da lì ricavi il modulo. smiley

Francesco.Danese (2140 points)
0 1 10
by (2.1k points)
Con un ciclo for scorri i vari elementi della lista, che sono delle tuple formate da 5 elementi. Da li puoi calcolare il modulo solo dei primi quattro del tipo: for elem in lista:

modulo0= *numero* % elem[0]

Arrivando fino a elem[3] così salti il quinto elemento

PS. Potresti creare una lista a cui aggiungi con .append i moduli dei tuoi elementi o comunque organizzare una struttura dati che serva al tuo scopo
andrea_25 (6070 points)
2 2 24
by (6.1k points)
Visto che sei giá riuscita a ricavarti una lista con gli elementi tranne il modulo, puoi utilizzare la funzione map che applica la funzione modulo (prendendo o una funzione che ti definisci tu che faccia il modulo di un numero, oppure utilizzando la funzione anonima lambda) e poi passi la lista di numeri come iterabile al quale applicare la funzione che calcola il modulo.