Do you need any help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 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 2021-22 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.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

Coordinate pixel per ogni rettangolo

M
Mic_s (670 points)
2 16 22
asked Nov 26, 2020 in HW6 obbligatorio by Mic_s (670 points)
Per trovare i parametri x,y,w e h di ogni rettangolo ho pensato di creare un dizionario in cui uso come key ogni colore e all'interno vi sono delle tuple con tutti i valori x e y di ogni pixel che costituisce un rettangolo. Ho trovato tutti i punti x,y scorrendo l'immagine ed ignorando i pixel neri. il mio problema si trova nel creare il dizionario, non so come creare la tupla contenente altre tuple con i vari x, y per ogni colore. Qualche consiglio?

Grazie in anticipo spero si sia capito il problema, mi scuso se la spiegazione è pessima.

1 Answer

Best answer
twgever (15190 points)
7 27 105
answered Nov 26, 2020 by twgever (15,190 points)
selected Nov 26, 2020 by Mic_s
Se vuoi semplicemente aggiungere un valore al dizionario, fai caso una x, ti basta fare

dizionario[colore]=[x]
così assegni il valore al colore, e assegni una lista, mentre per quelli successivi puoi fare

dizionario[colore].append(y)

così a dizionario[colore] sarà associata la lista [x,y]

se proprio vuoi usare le tuple, puoi fare la stessa identica cosa, e poi convertire la lista in tupla quando hai fatto (le tuple sono immutabili)
M
Mic_s (670 points)
2 16 22
commented Nov 26, 2020 by Mic_s (670 points)
si, il problema era creare la tupla non so come mettere al suo interno tutti i pixel di un rettangolo
twgever (15190 points)
7 27 105
commented Nov 26, 2020 by twgever (15,190 points)
stessa cosa, inizializzi il dizionario

diz={}

#scorri i colori
for colore in colori
#fai quello che devi fare per scorrerti i pixel che ti servono, e quando trovi un pixel che ti serve fai

diz[colore]=[pixel]    #questo per le prime occorrenze

diz[colore].append(pixel)   #questo per tutte le altre occorrenze

alternativamente, puoi usare solo il secondo comando, se inizializzi con diz[colore]=[]

fatto questo, ti trasformi la lista in una tupla.
P
Pasqualino96 (1490 points)
3 17 27
commented Nov 26, 2020 by Pasqualino96 (1,490 points)
Se tu sei in un ciclo for che scansiona una lista di tuple, l'elemento in analisi sarà sempre una tupla. Questo significa che nel momento in cui al valore di una chiave di un dizionario aggiungi l'elemento del ciclo for, in realtà stai inserendo la tupla. Quindi il problema non esiste.

Stessa cosa vale al contrario
M
Mic_s (670 points)
2 16 22
commented Nov 26, 2020 by Mic_s (670 points)
Grazie, ho risolto
andrea.sterbini (172680 points)
511 927 1776
commented Nov 26, 2020 by andrea.sterbini (172,680 points)
Tanto vale che gli passi il programma ... (e poi non vi lamentate se sono costretto ad annullarlo)
twgever (15190 points)
7 27 105
commented Nov 26, 2020 by twgever (15,190 points)
mi scusi prof. Solo che mi sembrava che ci fosse bisogno almeno di spiegare i comandi da usare per manipolare un dizionario, visto che la carenza mi sembrava proprio lì. Infatti ho limitato giusto a 3 istruzione, ignorando tutto il reso dell'implementazione. Ci farò più attenzione.