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

Do you need help?

es26 - Eserciziario Python

MRinaudo (3660 points)
22 40 50
in Eserciziario d'esame by (3.7k points)
recategorized by

Buongiorno a tutti,

in attesa dell'homework, mi sono messo a fare gli esercizi dell'Eserciziario Python.

Mi trovo in difficoltà a capire quello che chiede questo esercizio.

Ho la seguente lista

dati = [ {'C1': 2, 'C2': 1, 'C3': 'd'}, {'C1': 4, 'C2': 7, 'C3': 'a'}, {'C1': 6, 'C2': 1, 'C3': 'b'}, {'C1': 8, 'C2': 3, 'C3': 'c'} ]

eseguo es26(dati, 'C1'), e ottengo:

3 (il numero di colonne)

Con la lista dati che è diventata: 

[ {'C1': 8, 'C2': 1, 'C3': 'd'}, {'C1': 6, 'C2': 7, 'C3': 'a'}, {'C1': 4, 'C2': 1, 'C3': 'b'}, {'C1': 2, 'C2': 3, 'C3': 'c'} ]

Quindi la chiave 'C1'  viene organizzata, in modo decrescente, per ogni dizionario della lista. Praticamente, assegno un valore diverso solo alla chiave data in input alla funzione.

Nonostante ciò, i test non vengono eseguiti con successo da test.py.

Mi rendo conto che questa è materia che daremo tra qualche settimana, ma qualcuno riesce a darmi una mano ?

Grazie mille!

551 views
closed

3 Answers

Best answer
Marco Freddi (1420 points)
1 2 16
by (1.4k points)
selected by
Se mi scrivi l'errore che ti dà il test è più facile aiutarti.
Se hai già fatto quel test su C1, il problema non dovrebbe essere nè di ordinamento numerico, nè di accesso ai dizionari.
Una cosa che mi viene in mente intanto: hai messo un controllo per fare in modo che rilevi se la colonna sia di numeri, di caratteri (o altro) e si basi su quello per l'ordinamento?
MRinaudo (3660 points)
22 40 50
by (3.7k points)
Ciao Marco,

grazie per la tua risposta.

Qui gli errori ricevuti per entrambi i test:

Il risultato deve essere [{'C1': 8, 'C2': 3, 'C3': 'c'}, {'C1': 6, 'C2': 1, 'C3': 'b'}, {'C1': 4, 'C2': 7, 'C3': 'a'}, {'C1': 2, 'C2': 1, 'C3': 'd'}] invece che [{'C1': 8, 'C2': 1, 'C3': 'd'}, {'C1': 6, 'C2': 7, 'C3': 'a'}, {'C1': 4, 'C2': 1, 'C3': 'b'}, {'C1': 2, 'C2': 3, 'C3': 'c'}]

Il risultato deve essere [{'C1': 2, 'C2': 1, 'C3': 'd'}, {'C1': 8, 'C2': 3, 'C3': 'c'}, {'C1': 6, 'C2': 1, 'C3': 'b'}, {'C1': 4, 'C2': 7, 'C3': 'a'}] invece che [{'C1': 2, 'C2': 1, 'C3': 'd'}, {'C1': 4, 'C2': 7, 'C3': 'c'}, {'C1': 6, 'C2': 1, 'C3': 'b'}, {'C1': 8, 'C2': 3, 'C3': 'a'}].

Io sostanzialmente per l'ordinamento ho usato la funzione sorted(), ma forse sbaglio.

Saluti,

Michelangelo
Marco Freddi (1420 points)
1 2 16
by (1.4k points)
Da quello che vedo nei 2 test l'ordinamento era rispettivamente su C1 e C3 e infatti su quelle "colonne" hai effettuato l'ordinamento in modo corretto
L'errore che fai risiede nelle differenze tra le altre colonne, tu non ti limiti a operare sugli elementi solo della colonna da ordinare, lasciando gli altri identici, ma in qualche modo sposti anche gli altri, a coppie, se confronti i risultati.
Penso che il problema sia che per ordinare una certa colonna, effettui qualche operazione che cambia posizione ai dizionari, potrebbe essere perchè applichi il sorted() alla lista, invece di analizzare la singola colonna e scambiarne gli elementi tra i dizionari (che così manterranno sempre la posizione iniziale).

Spero di essere riuscito ad aiutarti, se ti servisse altro, richiedi pure.
Loriv3 (7970 points)
13 21 84
by (8.0k points)
Tipo dell'errore che dice quando si conclude il test?
MRinaudo (3660 points)
22 40 50
by (3.7k points)
Ciao,

ho inserito gli errori nel post di sopra.

Grazie.

Saluti,

Michelangelo
giordano_sannino (13650 points)
7 16 81
by (13.7k points)
confermerei quello che ha commentato il mio collega